twitter-bootstrap – Yii2 Advanced – 扩展视图以添加自定义变量

我不确定我要用的是最好的Yii解决方案来处理这个问题.所以我愿意接受更好的解决方案.无论最简单的Yii方式是什么.

我有一个左侧边栏,只需要向登录用户显示.这不是问题,我知道如何通过选中’Yii :: $app-> user-> isGuest’来显示.

在特定页面上,我不想要这个侧边栏,即使他们已登录.例如,“联系我们”页面不需要左侧边栏.我真的不在乎它是否有侧边栏,但它正在抛弃Bootstrap3列.

<div class="row">
    <div class="col-lg-4 center-col">

        <div class="site-contact">
            <h1><?= Html::encode($this->title) ?></h1>

            <p>
                If you have business inquiries or other questions,please fill out the following form to contact us. Thank you.
            </p>

            <div class="row">
                <div class="col-lg-12">
                    [contact form code truncated]
                </div>
            </div>
        </div>

    </div>
</div>

它看起来很棒,位于页面中间,4个宽.

但是,在我的Yii main.PHP(frontend / views / layouts / main.PHP)中,我有2个单独的布局,具体取决于用户是否已登录.

<div class="container-fluid mainpage">

    <?= Alert::widget() ?>

    <div class="row">

        <?PHP if (!Yii::$app->user->isGuest) { ?>

            <div class="col-md-3 sidebar">
                <?= Menu::widget([
                    'options' => ['class' => 'nav nav-sidebar'],'items' => [
                            ['label' => 'Home','url' => ['site/index']],['label' => 'About','url' => ['site/about']],['label' => 'Contact','url' => ['site/contact']],],]);
                ?>
            </div>

            <div class="col-md-9">
                <?= $content ?>
            </div>

        <?PHP } else { ?>

            <div class="col-sm-12">
                <?= $content ?>
            </div>

        <?PHP } ?>
    </div>

</div>

代码显示全宽页面(如果是访客)或侧边栏(如果用户登录).

在“联系我们”页面上发生的事情是由于侧边栏而导致的表格变得紧张.正确的内容是’col-md-9′,当你把联系表格放入其中时(有’col-lg-4′),它只会在9列中占据4个,导致它被碾压.

由于此页面(联系页面)应该是公开可见的(即:如果用户无法登录,他们将被搞砸并且无法联系支持人员),这两种情况都可能发生.它可以由登录的成员查看,从而产生碾压形式,或者由看起来很好的客人查看.

我的方法添加一个变量$showSidebar.然后在contact.PHP中有$showSidebar = false.该变量的默认操作将由isGuest设置,并且页面可以覆盖它以关闭每页的侧边栏.

我真的不想要大量的ifGuest检查显示替代div或代码,所以我觉得这将是最好的方法.

如何扩展视图以添加我自己的变量?该文件在vendor / yiisoft / yii2 / web / view我认为..

这是Yii2高级模板.

PS:我愿意更好地解决我的问题.我不想要黑客,但最合适的Yii方式去做.

解决方法

由于View是Yii组件,您可以像yii配置文件中的其他组件一样进行设置.
只需添加如下内容
'components'     => [
        'view'         => [
            'class' => 'app\components\extended\View',

相关文章

BootStrapValidator可以用于完成基于BootStrap搭建的前端UI中的输入验证,由于本插件完全基于BootStrap...
顶求网首页是一个web2.0博客类的网站首页,在该网站中用户可以发表博客,也可以推荐图书给其他用户。所...
一直想改版网站首页的图书展示部分,以前的展示是使用BootStrap的传统的collapse,网页篇幅占用大,也不...
在视窗足够大的时候是没有任何问题的,但是当拖动改变视窗的大小后会发现布局又变乱了,这个问题困扰了...
BootStrap中的tabs控件以其简单易用而很受广大开发者的欢迎。但是,它的样式比较单一,如何才能在其原有...
BootStrap是基于HTML、CSS和JavaScript的框架,使你只需要写简单的代码就可以很快的搭建一个还不错的前...