web-dev-qa-db-fra.com

CakePHP obtient le nom de l'action

Dans CakePHP, il est possible d’obtenir la chaîne de fonction appelée en utilisant le

$this->action

syntaxe. Il renvoie la chaîne littérale de l'appelé. Ainsi, si l'URL est /do_this, il renvoie do_this et s'il s'agit de doThis, il retournera doThis. Indépendamment du vrai nom de la méthode appelée.

Par contre, ce que je recherche, c’est le nom réel de la méthode appelée, quelle que soit la syntaxe de l’URL.

Y a-t-il un moyen de le savoir?

Je préférerais pouvoir le faire avec la méthode beforeFilter.

11
arik

Vous devez utiliser l'objet de requête.

CakePHP 3.3 et inférieur

$this->request->params['action'];

Depuis 3.4

$this->request->getParam('action');

Je pense que cela devrait contenir le vrai nom de la méthode qui a été appelée. Le routeur CakePHP résout l'URL de la chaîne en une paire contrôleur/action et d'autres arguments, tout cela aboutissant à l'objet de la requête. Lisez la documentation et faites debug($this->request); dans votre beforeFilter () pour voir ce qu'il y a d'autre.

19
burzum

Dans CakePHP 2, vous pouvez utiliser $ this-> action, dans CakePHP 3, vous devez utiliser $ this-> request-> params ['action']

Le tableau params (CakePHP> = 3.4) est obsolète. La manière correcte d'obtenir l'action en cours dans un contrôleur est la suivante:

$currentAction = $this->request->getParam('action');
3
thanassis

Avez-vous regardé ça? Récupérer le nom de la fonction courante dans php Cela ne fonctionnera évidemment pas dans le beforeFilter. Vous pouvez définir une variable: Private $ nom_action dans le contrôleur et la définir à partir des méthodes, puis l'utiliser ultérieurement, dans afterFilter. 

0
visualex