fecshop 布局文件layout不起作用

bug问题 · cl1688 · 于 6年前 发布 · 2250 次阅读

我在控制器里把layout属性设置成false,但是还是利用了布局文件,头和尾都显示出来了

共收到 6 条回复
water#16年前 0 个赞

看不懂,show your code!!!!

jackqin#26年前 0 个赞

@water #1楼

他的意思是:比如。

    1、在appfront/local/local_modules本地目录下想重写某个模块的controller,而且他还不想渲染layout的布局。
    2、之所以他设置无效是因为fecshop\app\appfront\modules\AppfrontController这个类的findLayoutFile方法重写了yii2的方法。
   3、重写的方法里面一定会有一个layout布局文件被渲染出来。

  问题来了:本来他就不想要任何的layout布局,比如登陆页面,只需要自己的render,跟任何的公共布局都没关系。
 
  解决:希望能在fecshop\app\appfront\modules\AppfrontController类中的方法findLayoutFile加一段代码:
           if(Yii::$service->page->theme->layoutFile === false){
                 return false;
           }
jackqin#36年前 0 个赞

补充:加了代码后,就可以在重写的controller中加上\Yii::$service->page->theme->layoutFile = false;

其实我也遇到这个问题,不知道还有什么地方可以直接设置不需要加载layout的布局内容。还望water赐教。

Fecmall#46年前 0 个赞

@jackqin #3楼 你不使用view,就不会加载layout,

譬如controller中:

https://github.com/fecshop/yii2_fecshop/blob/master/app/appfront/modules/Cms/controllers/ArticleController.php

// 网站信息管理
    public function actionIndex()
    {
        $data = $this->getBlock()->getLastData();
        return $this->render($this->action->id, $data);
    }

你把代码return $this->render($this->action->id, $data); 去掉,就不会加载layout这些,layout都是rener函数调用进而访问的

jackqin#56年前 0 个赞

@Terry [#4楼](#comment4) 我先说一下场景。不知道这么描述是否能解释清楚,先说吧:

1、一个首页、一个登录页,两功能。从商城首页点登录页面的过程中

2、layouts布局中有home.php。这个事全局的布局文件。只要在商城中都通用

3、现在去到登录页,我登录页全部的布局跟home的header、body(main)布局都不一样,这时候我只想渲染我自己的theme下的account/login模板文件。不需要任何的layouts布局

4、总结:只想要渲染自己的模板布局,不需要加载layout的公共布局。

Fecmall#66年前 0 个赞

1.还是用layout,只不过这个layout里面是空的,用 blank layout

https://github.com/fecshop/yii2_fecshop/blob/master/app/appfront/theme/base/front/layouts/blank.php

在controller的相应action的第一行加入代码:

Yii::$service->page->theme->layoutFile = 'blank.php';
添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics