Php 如何更改Yii2中所有控制器的默认布局?

Php 如何更改Yii2中所有控制器的默认布局?,php,yii2,Php,Yii2,如何在Yi2中全局更改默认布局(=所有控制器和视图)?我想保持main.php布局不变,以备以后使用。您可以按以下方式执行。例如,可以如下方式创建defaultLayout.php布局: <?php $this->beginContent('@app/views/layouts/main.php'); ?> <div class="container"> <div class="row"> <div

如何在Yi2中全局更改默认布局(=所有控制器和视图)?我想保持main.php布局不变,以备以后使用。

您可以按以下方式执行。例如,可以如下方式创建defaultLayout.php布局:

<?php $this->beginContent('@app/views/layouts/main.php'); ?>
    <div class="container">
        <div class="row">
            <div class="col-lg-4">Left Side Bar</div>

            <div id="content" class="col-lg-4">
                <?php echo $content; ?>
            </div><!-- content -->

            <div class="col-lg-4">Right Side Bar</div>
        </div>
    </div>
<?php $this->endContent(); ?>
在配置(config/main.php)中,您可以覆盖所有视图的默认布局

[
    // ...
    'components' => [
        'view' => [
            'layout' => 'main.php'
        ],
        // ...
    ],
]

在配置根目录中,您可以为所有视图写入默认布局[]:

[
     ...
     'layout' => 'main',
     'components' => [
     ...
     ]
]

在配置中,您可以编辑

例如:

$config = [
    ...

    'layoutPath' => '@app/views/layouts-2'
];

config/web.php文件中的更改

并将这一行添加到组件数组之前

在view/layout/main_style.php中创建的新样式名称

'layout' => 'main_style'
使用此整个项目布局已更改

在Yii2配置中配置(&I):

$config = [
    ...
    'layoutPath' => '@app/views/layouts2',
    'layout' => 'main2.php',
];
上面的示例将默认视图
app/views/layouts/main.php
更改为
app/views/layouts2/main2.php


如果我这样做,我会得到以下错误:处理另一个错误时出错:yii\base\UnknownPropertyException:设置未知属性:yii\web\View::layout in C:\…\yii\vendor\yiisoft\yii2\base\Component.php:197…但我想指定一个特定的布局,而不仅仅是它们所在的文件夹。只需查看文档链接。使用
layoutPath
,您可以为所有控制器和操作拥有自己的布局,并且默认布局保持不变。(正如您在问题中所说的)。如果不是这样,请重写您的问题,并更清楚地说明您试图实现的目标。对config/main.php的更改是不正确的。有关正确的语法,请参阅已接受的答案。与已接受的答案相比,答案不添加任何新信息。
$config = [
    ...
    'layoutPath' => '@app/views/layouts2',
    'layout' => 'main2.php',
];