在Yii中声明的$ content变量在哪里?

时间:2011-09-22 01:46:25

标签: php yii

我正在使用Yii Framework。在视图main.php中,有一个对$ content块的引用

<?php echo $content; ?>

我无法在模型中的任何地方或演示项目的其他地方找到它。有人能说清楚这个吗?或者可能是这个变量从未声明过?我还没有修改过演示项目。

4 个答案:

答案 0 :(得分:2)

布局文件中的$ content值包含指定为render命令的第一个属性的模板的呈现内容。 (它是自动创建的,因此我不会将“content”用作附加变量名称,否则可能会导致混淆。)您在render语句中作为附加数组参数传递的变量可供您调用的模板使用,而不是到布局。

如果您有嵌套布局,则$ content的值会从父级转换为子级。

答案 1 :(得分:2)

所有控制器都派生自CController级。 CController有一个名为render的函数,您可以将其称为渲染视图。它的工作原理如下:

  1. beforeRender被召唤。
  2. 在您的视图文件中调用
  3. renderPartial,其输出存储在$output
  4. 在布局文件中调用
  5. renderFile,其参数名为content,如下所示:

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

  6. 所以$content来自这里。您可以在此处查看实际代码:Source code,以及此处的文档:Documentation

答案 2 :(得分:0)

我认为它是从调用此视图的控制器设置的。

在控制器中查找类似以下内容的内容

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

答案 3 :(得分:0)

从Yii文档中找到答案,

  

例如,布局可能包含页眉和页脚,并嵌入   介于两者之间,如下:

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

其中$ content存储视图的渲染结果。

确实是其中一个视图中的所有文本(在我的例子中是index.php)。 $ content基本上是视图的内容。它没有在任何地方声明,它是默认的。正如答案所说,你不应该在你的代码中使用declare / use $ content。