Как я могу запросить переменную в моем home.ctp моего приложения cakePHP? - PullRequest
1 голос
/ 18 мая 2010

Я создал страницу, используя структуру MVC, называемую «разделами» (представление находится в папке app / views / section, модель в папке модели и контроллер в папке контроллера), когда я запрашиваю переменную $ test, она отлично работает без ошибок ..

Когда я хочу запросить эту переменную в моем home.ctp, она выдает ошибку, в которой говорится, что переменная не определена.

Есть ли какой-нибудь способ в cakePHP запросить эту переменную на любой странице, которую вы хотите?

Спасибо заранее!

Ответы [ 2 ]

1 голос
/ 18 мая 2010

В стеке MVC вам нужно установить переменные с данными в вашем контроллере, а затем передать их в ваше представление.

Итак, в вашем примере вам нужно будет $this->set('myvar',$item); в вашем SectionsController, тогда, по вашему мнению, вы сможете echo $myvar.

Обязательно установите это в методе home() вашего Sections контроллера, иначе он не будет доступен в вашем home представлении.

0 голосов
/ 18 мая 2010

Стоя на плечах комментариев Десезе и ответа Дэвида Йелла, я думаю, что им удалось вычеркнуть приличное представление о том, к чему вы пытаетесь добраться. Может быть. Так что с этим свободным пониманием того, что ты видишь и что у тебя есть ...

По умолчанию метод PagesController::display() создает представление домашней страницы (home.ctp). Я подозреваю, что это то, о чем ты говоришь. Тем не менее, переменная, которую вы устанавливаете в методе вашего SectionsController, не будет доступна для вашей домашней страницы, которая создается другим методом в другом контроллере. Если вы хотите, чтобы переменная была доступна для всех представлений, вы можете сделать несколько вещей:

  1. Вы можете установить переменную в файле config/core.php (обычно не рекомендуется)
  2. Вы можете установить его в config/bootstrap.php, если это константа. Под этим я подразумеваю, что это значение, которое вы собираетесь использовать в жестком коде, а не что-то динамически генерируемое. Неважно, создаете ли вы переменную как константу.
  3. Вы можете установить в своем AppController методом beforeFilter() или beforeRender(). Все ваши пользовательские контроллеры (при условии, что вы следовали протоколу) наследуются от AppController. Если вы выберете этот путь, сделайте копию cake/libs/controller/app_controller.php и поместите ее в каталог app/.

Я думаю, что именно так я лучше всего отвечу вашим потребностям.

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