Как передать var из контроллера в другое представление с Cakephp - PullRequest
0 голосов
/ 07 октября 2011

Я новичок в Cakephp и, действительно, ООП, так что прости меня, если я еще не полностью понял концепцию MVC. Я много искал, но не могу найти ответ - возможно, мой способ работы ниже не является правильным. Я надеюсь, что вы можете помочь.

Я создаю сайт, в котором будет много элементов, относящихся к их таблицам и данным. Я намерен использовать представление для выбора соответствующих элементов и любых необходимых параметров.

Например, домашняя страница моего сайта будет содержать два элемента - элемент latestusers и элемент latestscores. Я пытаюсь использовать представление, не относящееся ни к пользователям, ни к моделям / контроллерам, которые хранятся в «other / index.ctp».

Я попытался с помощью set () передать переменную из контроллера пользователя (действие latestusers) в другое представление / index.ctp, но viewVars остаются пустыми. Может ли это быть связано с областью действия переменной (я думаю, что это нормально для представления в папке users, то есть представления, специфичного для контроллера пользователя).

Я мог бы достичь того, что я хочу сделать, используя глобальные переменные, но я думаю, что в этом нет смысла MVC / OOP. Буду благодарен за любые предложения.

Я могу включить код, если это необходимо - он довольно прост на данном этапе - но я чувствую, что моя проблема заключается в том, как я поступаю, а не в самом коде.

Cheers, Джеймс

1 Ответ

0 голосов
/ 07 октября 2011

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

  1. Контроллер $this->set() s переменная в вашем текущем представлении / макете
  2. Ваше представление / макет вызывает $this->element с текущим путем элемента.
  3. Ваш элемент использует эти переменные.

В номере 2 вам нужно передать ваши переменные в виде массива данных. Этот раздел в кулинарной книге дает больше информации: http://book.cakephp.org/view/1081/Elements

<?php echo$this->element('helpbox',     
      array("helptext" => "Oh, this text is very helpful."));?>

Примечание. Я не понял части вопроса. Просто хочу убедиться, что вы передаете данные в правильное представление. Вы не должны вызывать представление другого контроллера в вашем активном контроллере.

Ваш other/index.ctp должен быть элементом, и этот элемент должен вызываться из вашего макета.

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