Я создаю поведение, которое должно регистрировать текущее имя контроллера. Как я могу получить текущее имя контроллера из модели в CakePHP?
CakePHP: получить текущее имя контроллера в модели
Ответы (6)
Я знаю, что этот вопрос довольно старый, но правильным решением здесь будет:
$this->params['controller']
Для получения дополнительной информации об атрибуте params:
http://book.cakephp.org/view/963/The-Parameters-Attribute-params
Попробуй это. если вам нужно только имя контроллера.
Inflector::pluralize($this->name);
$GLOBALS['Dispatcher']->params['controller']
даст вам имя контроллера
Я нашел решение, оно не красивое, но сработало для меня. Я просто использую $_REQUEST['url'] и перехватываю имя контроллера по URL-адресу. Недостатком этого решения является то, что если у вас другой маршрут по умолчанию, это решение не будет работать ... у кого-нибудь есть лучший подход?
Для тех, кто пересматривает этот вопрос и использует CakePHP 3.x:
$this->request->getParam('controller')
Одной из магических констант PHP является __CLASS__
, которая возвращает имя класса объекта, в котором он находится. Это может дать вам то, что вам нужно.
http://php.net/manual/en/language.constants.predefined.php
Магические константы и методы — это весело.