将变量从布局渲染到另一个布局

时间:2014-11-18 07:52:30

标签: php yii

在布局中,我得到了一些价值:

$quote = Quotes::model()->findAll(array('order'=>'id DESC', 'limit'=>1));

它的工作正常,无论从视图中调用模型是不好的做法。 在同一文件夹中的另一个布局我不能做同样的事情。如果重要,这个布局显示在同一页面上。我直接回应模型,控制器不会渲染任何变量来查看。 有没有办法将此var发送到自定义布局或视图?

3 个答案:

答案 0 :(得分:0)

您可以在控制器中创建一个返回所需值的方法,然后可以从视图中调用此方法。或者,如果您在视图中使用$ this-> render(),则只需将此变量转发到自定义视图:$ this-> render('quotes',$ quotes);

答案 1 :(得分:0)

我把这一行放在$quote之前,它确实有效!

Yii::import('application.modules.quotes.models.*');

不确定,它是如何工作的,也许这是我的特例。

答案 2 :(得分:0)

我不认为将模型直接放在视图/布局中是最佳实践。出于某种原因,我在Controller.php中放了一个名为$ settings的公共变量,并把它放在protected / components /

class Controller extends CController {
    protected $settings = array();

    public function init() {
        $this->settings = Settings::model()->getAllSettings();
    }

    public function getSetting($key = '')
    {
        if (isset($this->settings[$key]))
        {
            return CHtml::decode($this->settings[$key]);
        }
        return NULL;
    }


}

所以在我的布局(main.php)中,我会这样做。

<h1>Welcome to <?php echo $this->getSetting('brand_name');?>

真正的代码可能看起来比上面的更复杂,但我希望它对你有所帮助。