Стоя на плечах комментариев Десезе и ответа Дэвида Йелла, я думаю, что им удалось вычеркнуть приличное представление о том, к чему вы пытаетесь добраться. Может быть. Так что с этим свободным пониманием того, что ты видишь и что у тебя есть ...
По умолчанию метод PagesController::display()
создает представление домашней страницы (home.ctp
). Я подозреваю, что это то, о чем ты говоришь. Тем не менее, переменная, которую вы устанавливаете в методе вашего SectionsController
, не будет доступна для вашей домашней страницы, которая создается другим методом в другом контроллере. Если вы хотите, чтобы переменная была доступна для всех представлений, вы можете сделать несколько вещей:
- Вы можете установить переменную в файле
config/core.php
(обычно не рекомендуется)
- Вы можете установить его в
config/bootstrap.php
, если это константа. Под этим я подразумеваю, что это значение, которое вы собираетесь использовать в жестком коде, а не что-то динамически генерируемое. Неважно, создаете ли вы переменную как константу.
- Вы можете установить в своем
AppController
методом beforeFilter()
или beforeRender()
. Все ваши пользовательские контроллеры (при условии, что вы следовали протоколу) наследуются от AppController
. Если вы выберете этот путь, сделайте копию cake/libs/controller/app_controller.php
и поместите ее в каталог app/
.
Я думаю, что именно так я лучше всего отвечу вашим потребностям.