вопрос, связанный с app_controller - PullRequest
0 голосов
/ 14 июля 2011

Я пытаюсь включить небольшой код на каждой странице моего сайта.Есть ли способ сделать это без изменения каждого контроллера?

Например - я хочу прочитать / непрочитанное сообщение от Message модели.

Могу ли я сделать это с помощью app_controller?Я добавил следующую функцию в app_controller.php.Мне нужно предложение.Пожалуйста, помогите мне.

function messageStatus() {
    App::import('Model','Message');
    $new_message = $this->Message->find(
    'first',
            array (
                'conditions' => array (
                    'Message.status' => '1'
                )
            )
        );
    $this->set("new_message",$new_message); 
}

Ответы [ 2 ]

1 голос
/ 14 июля 2011

В зависимости от того, когда вы хотите выполнить свои действия, вам придется переопределить в файле app_controller.php одну из следующих функций ( согласно документации ):

beforeFilter()
afterFilter()
beforeRender()

Поскольку все ваши другие контроллеры будут наследовать методы этого класса, ваши действия будут выполняться каждый раз (как указано в документах ), когда выполняется один из ваших контроллеров.

Есливы хотите иметь контроллер, который не запускает код в app_controller, просто локально переопределяете метод.

0 голосов
/ 15 июля 2011

Как упомянул пользователь559744, вы можете использовать AppController в своем приложении для создания атрибутов и методов, к которым могут обращаться ваши контроллеры. AppController - это родительский класс ваших контроллеров.

Вам следует скопировать app_controller.php из / cake / libs / controller / в YOURAPP / app_controller.php, чтобы избежать внесения изменений в основные файлы.

http://book.cakephp.org/view/957/The-App-Controller

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...