【问题标题】:Yii2 full width layout in index.phpindex.php 中的 Yii2 全角布局
【发布时间】:2015-07-31 11:51:09
【问题描述】:

在 Yii2 中为页面制作不同布局的最佳做法是什么? 我面临的问题是 Yii2 layout/main.php 代码看起来像

<div class="container">
   <?= $content ?>
</div>

Yii2 使用 Bootstrap,我只需要在 site/index.php 中制作全幅图像。 基本上在 index.php 中我需要包装

<?= $this->render('_search') ?>

进入 .container-fluid 类。

如何将 .container 类替换为 .container-fluid 类,仅用于 index.php 页面?

【问题讨论】:

    标签: html css twitter-bootstrap layout yii2


    【解决方案1】:

    制作一个新的布局,例如layout-fluid.php,在控制器中做

    public function actionIndex()
    {
        $this->layout = 'layout-fluid';
        return $this->render('index');
    }
    

    如果流体容器是您需要的唯一更改,您可以改为:在索引视图文件中添加

    $this->params['fluid'] = true;
    

    并在布局文件中将所需的容器更改为

    <div class="container<?= $this->params['fluid'] ? '-fluid' : '' ?>">
    

    params 数组是在视图中传播信息的好地方。

    【讨论】:

    • 谢谢。添加 $this->layout = 'layout-fluid';控制器做到了。 Params 数组在 index.php 之类的视图中使用时很清楚,但是如果我只需要在布局文件(main.php)中为 index.php 页面更改它怎么办?困扰我的一件事是我将 main.php 复制到 layout-fluid.php,它们之间的唯一区别是类名。但菜单和页脚等其他代码在两个文件中是相同的。这是好的还是坏的做法?
    • 当然,如果这是唯一的区别,您不需要额外的布局。对于基本/高级 Yii 项目的索引页面视图文件是views/site/index.php,我猜它是你的 index.php 页面,对吧?
    • 是的,views/site/index.php 是我需要更改的文件。
    • 我尝试了您的 $this->params['fluid'] = true 方法,但没有成功。可以在控制器中更改参数还是可以缓存参数?
    • @JairusMartin 我想你可以,但要确保你在调用 $this->render 之前这样做。我现在没有做太多 Yii,所以如果问题仍然存在,我建议您向 stackoverflow.com/help/mcve 提出一个反映您的情况的新问题。
    【解决方案2】:

    如果您只需要更改站点/索引的包装类,在 main.php 中您可以这样做:

    <div class="container<?=($this->context->id=='site' && $this->context->action->id=='index')?'-fluid':'';?>">
       <?= $content ?>
    </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      相关资源
      最近更新 更多