Yii无法将变量传输到布局

时间:2014-02-11 19:16:31

标签: php yii

在Yii我是新手并且遇到了一些麻烦。 我的第一个问题: 我的观点没有显示任何内容。

查看(新闻/ 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;
?>

感谢您的帮助。

2 个答案:

答案 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.
?>