In CakePHP ist es möglich, die aufgerufene Funktionszeichenfolge mithilfe von zu erhalten
$this->action
syntax. Es gibt den Literal-String des Aufrufs zurück. Wenn die URL /do_this
ist, wird do_this
zurückgegeben. Wenn es sich um doThis
handelt, wird doThis
zurückgegeben. Unabhängig vom richtigen Namen der aufgerufenen Methode.
Was ich dagegen suche, ist der tatsächliche Name der aufgerufenen Methode, unabhängig von der URL-Syntax.
Gibt es eine Möglichkeit, das herauszufinden?
Ich könnte dies vorzugsweise in der beforeFilter
-Methode tun.
Sie sollten das Anforderungsobjekt verwenden.
CakePHP 3.3 und darunter
$this->request->params['action'];
Seit 3.4
$this->request->getParam('action');
Ich denke, das sollte den echten Methodennamen enthalten, der aufgerufen wurde. Der CakePHPs-Router löst die String-URL zu einem Controller/Action-Paar und anderen Argumenten auf, die im Request-Objekt enden. Lesen Sie die Dokumentation und machen Sie debug($this->request);
in Ihrem beforeFilter (), um zu sehen, was sonst noch da ist.
In CakePHP 2 können Sie $ this-> action verwenden, in CakePHP 3 müssen Sie $ this-> request-> params ['action'] verwenden.
Das params
-Array (CakePHP> = 3.4) ist veraltet. Der korrekte Weg zum Abrufen der aktuellen Aktion in einem Controller lautet:
$currentAction = $this->request->getParam('action');
Hast du dir das mal angesehen? Abrufen des Namens der aktuellen Funktion in php Dies funktioniert offensichtlich nicht im beforeFilter. Sie können eine Variable festlegen: Private $ action_name im Controller und innerhalb der Methoden festlegen und anschließend in afterFilter verwenden