Yii 2 在模态中排除 NavBar

Yii 2 Exclude NavBar in Modal

在我的 index.php 视图中,我有一个按钮,单击后会弹出一个模式:

<p>
    <?= Html::button(
        'Create New BizAdmin',
        ['value' => Url::to(['createbizadmin']),
        'class' => 'btn btn-success',
            'id' => 'modalButton'

        ]) ?>


    <?php
        Modal::begin(['id' => 'modal']);
            echo "<div id='modalContent'></div>";     
        Modal::end();
    ?>
</p>

我的模态文件是 createbizadmin.php 其中包含以下代码:

<?php

use yii\helpers\Html;


/* @var $this yii\web\View */
/* @var $model app\models\User */

$this->title = 'Create New Bizadmin';
?>
<div class="user-create">
    <h1><?= Html::encode($this->title) ?></h1>

    <?= $this->render('_formbizadmin', [
        'model1' => $model1,
        'model2' => $model2,
    ]) ?>

</div>

我的问题是:

如您所见,导航栏看起来很糟糕。菜单列表似乎溢出了模态。

如何删除模态框内的导航栏? 我似乎找不到 creatbizadmin.php 的哪一部分应该编辑。

有什么想法吗?

我猜你在某个地方有一个控制器正在处理 url createbizadmin。我还猜测在该控制器操作中,您正在像这样渲染视图文件;

$this->render("createbizadmin");

如果是这样,那就是你的问题了。通过直接调用视图文件,Yii 会将默认布局应用到视图文件。您无法控制在调用的视图文件中发生这种情况的方式,并且您的所有菜单等都将被呈现。

要解决这个问题,您可能需要渲染部分文件。这会在不应用布局的情况下渲染文件。所以使用;

$this->renderPartial("createbizadmin")

或者,如果模态内容是由 ajax 调用生成的,您可以从控制器响应;

$this->renderAjax("createbizadmin")

这篇文章似乎很好地解释了如何最好地实现这一目标; Render a form in a modal popup