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
.
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.
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');
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.