2016-10-26 21:35:22 3549次浏览 9条回答 0 悬赏 30 金钱

比如说:我想将数据库中查询到的model传递给layout模板去展示,该怎样做啊,求大虾斥教...

最佳答案

  • jackiegao 发布于 2016-10-27 08:51 举报

    不太明白你的layout模板,不是layout/main.php才是公共布局文件吗?我之前做的就是在main.php做的model查询后,循环显示,只是不知道这样符不符合规范之类的

    5 条回复
    回复于 2016-10-27 09:23 回复

    我说的是layout下面'/'这一类的,感觉在view层里去use model怪怪的,哈哈哈

    回复于 2016-10-27 09:46 回复

    @打驴的的堂吉诃德 嗯!

    回复于 2016-10-27 09:52 回复

    实在不行,只能这样搞了

    回复于 2016-10-27 20:21 回复

    @打驴的的堂吉诃德 ,还有一点,如果你的数据不是常变的,建议加入缓存(比如redis),这样就免去每次都访问库

    回复于 2016-10-27 21:15 回复

    嗯嗯,把功能做出来就行了:)

  • 回答于 2016-10-26 22:20 举报

    return $this->render('layout',['model'=>$model]);

    2 条回复
    回复于 2016-10-26 23:15 回复

    no...应该不是这样吧,我要在 模板中展示,layout是独立出来的,不是归于那个控制器的。- -

    回复于 2016-10-26 23:19 回复

    比如说导航的部分,独立出来,我要将它在layout中循环展示,每个页面去继承,关键就是layout用到的model我不可能在view中去use model吧,哈哈哈哈

  • 回答于 2016-10-27 09:09 举报

    按照你上面的说法,可以写一个父类,里面重写beforeaction,设置Yii::$app->params['model'] = XXX;然后在所有控制器 继承这个父类,layout中直接用Yii::$app->params['model']就可以取出来了。

    1 条回复
    回复于 2016-10-27 09:54 回复

    谢谢,我试一下

  • 回答于 2016-10-27 09:41 举报

    控制器文件

    /**
         * Displays homepage.
         *
         * @return mixed
         */
        public function actionIndex()
        {
            return $this->render('index');
        }
    

    视图文件

    • layout模板文件mian.php

      <?php if (isset($this->params['site'])) {
        echo $this->params['site'];
      } ?>
      
    • 视图文件index.php

      <?php $this->params['site']="test"; ?>
      
    1 条回复
    回复于 2016-10-27 09:50 回复

    谢谢解答,但是我有很多控制器都要用layout布局文件,不可能每个控制器里面都传一个参数吧

  • 回答于 2016-10-27 10:07 举报

    widget

  • 回答于 2016-10-27 12:01 举报

    在layout中输出$this->context试试

  • 回答于 2016-10-27 12:33 举报
    1 条回复
    回复于 2016-10-27 13:12 回复

    这个解决办法,上上上一个大兄弟都贴代码了,我想共享数据到layout中,逼死处女座啊

  • 回答于 2016-10-27 15:51 举报

    考虑考虑自己写个组件啊,widget。很方便。

  • 回答于 2017-06-23 22:41 举报

    同求,同求教

您需要登录后才可以回答。登录 | 立即注册
38956
等待激活

38956

注册时间:2016-10-31
最后登录:1970-01-01
在线时长:0小时0分
  • 粉丝5
  • 金钱325
  • 威望0
  • 积分325

热门问题