查看(新闻/ index.php的):
<p>Hi</p>
第二个问题: 我无法将变量从数据库传输到我的布局(layouts / main.php)或视图(观察第一个问题)。 我的控制器:
<?php
class NewsController extends Controller
{
public function actionIndex()
{
$result = News::model()->findAll('id');
$this->render('index', array('result'=>$result));
}
}
来自main.php(layouts / main.php):
<div id = "content">
<?php
echo $content;
echo $result; //or $this->mydatafrombase;
?>
</div>
或者我试图在视图news / index.php中获取变量:
<p>Hi</p>
<?php
echo $this->mydatafrombase;
?>
感谢您的帮助。
答案 0 :(得分:1)
我认为你的问题是布局上的$ result变量是错误的。
1.如果你想在布局中使用$ result。您必须在NewsController上创建一个全局变量。并在行动时为其设定价值。
<强>控制器:强>
<?php
//controller: NewsController
class NewsController extends Controller
{
public $result;
public function actionIndex(){
$this->result = News::model()->findAll();
$this->render('index');
}
}
查看:强>
<!-- layout.php-->
<div id="content">
<?php
echo $content; //content of view of your action will be render at here
var_dump($this->result); // variable global of class NewsController
?>
</div>
2.如果您希望用户$ result变量可以查看您的操作
<强>控制器:强>
<?php
class NewsController extends Controller
{
public function actionIndex(){
$result = News::model()->findAll();
$this->render('index', array('result'=>$result));
}
} ?>
查看:强>
<!-- news/index.php -->
<p>Hi</p>
<?php
var_dump($result);
?>
<!-- layout.php.-->
<div id="content">
<?php
echo $content; //content of view of your action will be render at here
?>
</div>
答案 1 :(得分:0)
如果您希望布局从变量加载值。如果用户已登录。
您可以使用CWebUser :: setState()和CWebUser :: getState();
CController :: render()只将变量传递给index.php。
在你的情况下。只需将$ result放入index.php
即可<?php
echo $result;//echo $this->mydatafrombase;
//yes simply $result would work. not $this->result. $this in this context refer to NewsController.
?>