Нужна помощь с пониманием класса AppController в CakePHP

#php #cakephp #cakephp-1.3

#php #cakephp #cakephp-1.3

Вопрос:

Я прошел через несколько базовых руководств по CakePHP. Теперь я пытаюсь понять компонент аутентификации.

Почему в этом руководстве:http://book.cakephp.org/pl/view/643/Preparing-to-Add-Auth они создают новый класс AppController? Я спрашиваю, потому что я только что создал несколько контроллеров, в которых классы унаследованы от класса AppController, и у меня еще не было собственного класса AppController.

Ответ №1:

Вы создаете новый AppController, чтобы определить новую расширенную функциональность для ваших контроллеров.

В принципе, все ваши контроллеры должны расширять ваш новый класс AppController, который определяет всю вашу логику аутентификации. Эти методы beforeFilter () / afterFilter () запускаются вашим диспетчером автоматически, и эти методы могут определять, следует ли продолжать обработку текущего контроллера.

Комментарии:

1. Итак, когда я проходил через учебные пособия, где я не создавал класс AppController (app_controller.php в каталоге /app) все контроллеры, которые я создал, расширили другой (встроенный) класс AppController?

2. Да, создайте app_controller.php файл в вашем каталоге приложений и все ваши контроллеры должны расширять AppController

3. Я думаю, вы меня не понимаете (мой английский не так хорош). Если я создам app_controller.php файл (с классом AppController) в моем каталоге приложений, в котором я перезаписываю класс AppController из другого файла?

4. Если у вас уже есть app_controller.php тогда вам не нужно перезаписывать его в каталоге вашего приложения. По сути, вы просто хотите объединить два файла вместе, добавив функциональность, определенную в руководстве, к вашему существующему AppController.

5. @latata: Если у вас нет app_controller.php в вашем каталоге приложений CakePHP будет использовать cake/libs/controller/app_controller.php

Ответ №2:

Далее нам нужно внести некоторые изменения в AppController. Если у вас нет /app/app_controller.php создайте его. Обратите внимание, что это относится к /app /, а не к / app / controllers /. Поскольку мы хотим, чтобы весь наш сайт контролировался с помощью Auth и Acl, мы настроим их в AppController.

В этом примере вы просто вносите изменения (добавляя beforeFilter() обратный вызов) в «скелет» класса AppController. Этот класс будет расширен всеми контроллерами в вашем приложении. Это способ добавить функциональность, которая применяется ко всем контроллерам в вашем приложении.