где переменная $ content объявлена ​​в Yii? - PullRequest
3 голосов
/ 22 сентября 2011

Я использую Yii Framework. В представлении main.php есть ссылка на блок $ content

<?php echo $content; ?>

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

Ответы [ 4 ]

2 голосов
/ 22 сентября 2011

Значение $ content в файлах макета содержит отображаемое содержимое шаблона, указанного в качестве первого атрибута команды рендеринга. (Он создается автоматически, поэтому я не буду использовать «контент» в качестве дополнительного имени переменной, иначе это может вызвать путаницу.) Переменные, которые вы передаете в качестве дополнительного аргумента массива в операторе рендеринга, становятся доступными для вызываемого вами шаблона, а не к макету.

Если у вас есть вложенные макеты, значение $ content будет каскадно переходить из родительского в дочерний.

2 голосов
/ 22 сентября 2011

Все ваши контроллеры являются производными от класса CController. CController имеет функцию с именем render, которую вы вызываете для отображения ваших представлений. Это работает так:

  1. beforeRender называется.
  2. renderPartial вызывается в вашем файле просмотра, и его вывод сохраняется в $output.
  3. renderFile вызывается в файле макета с параметром с именем content, например:

    $ this-> render (layoutFile, array ('content' => $ output));

Итак, $content идет отсюда. Вы можете увидеть действительный код здесь: Исходный код и документацию здесь: Документация

0 голосов
/ 22 сентября 2011

Найден ответ из документации Yii,

Например, макет может содержать верхний и нижний колонтитулы и вставлять представление между ними, например:

......header here...... 
<?php echo $content; ?> 
......footer here......

где $ content хранит результат рендеринга представления.

Это действительно весь текст в одном представлении (в моем случае index.php).$ content в основном берет контент view.Он нигде не объявлен и будет по умолчанию.Как сказано в ответе, вы не должны использовать в своем коде объявление / использование содержимого $.

0 голосов
/ 22 сентября 2011

Я думаю, что он устанавливается с контроллера, который вызывает это представление.

В контроллере ищите что-то вроде следующего

$this->render('main', array('content'=>"something here"));

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