如何仅在yii2中选择后呈现视图

问题描述

我在单个视图中呈现两个视图。

<?= $form->field($model,'t_type')->dropDownList([
    '' => 'Please Select','Slab Based' => 'Slab Based','TOU Based' => 'TOU Based']) ?>

<div class="showSlab" id="slab" style="display: none">
    <?PHP echo $this->render('_slabBased',[
        'modelsTariffSlabs' => $modelsTariffSlabs,]); ?>
</div>

<div class="showTou" id="tou" style="display: none">

    <?PHP echo $this->render('_touBased',[
        'modelsTouSlabs' => $modelsTouSlabs,]); ?>
</div>

认情况下,两个div都是隐藏的,但是它们都正在渲染。但是我只想在选择选项“基于平板的”或TOU Based

时呈现表单

JS

$('#mdctariff-t_type').on('change',function () {
    if (this.value === 'Slab Based') {
        $("#slab").show();
        $("#tou").hide();


    } else if (this.value === 'TOU Based') {
        $("#tou").show();
        $("#slab").hide();


    } else {
        $("#slab").hide();
        $("#tou").hide();

    }
});

注意:呈现表单后,我也将其保存

更新1

我尝试通过ajax渲染它

$url = Url::toRoute(['/mdctariff/_slabBased','modelsTariffSlabs'=>$modelsTariffSlabs]);

doGet('$url')

function doGet(url,params) {
        params = params || {};

        $.get(url,params,function(response) { // requesting url which in form
            $('#slab').html(response); // getting response and pushing to element with id #response
        });
    }

参考: How to render partial using AJAX? Laravel 5.2

当我选择一个选项时,我将无法查看该表格。在我的Network标签中,出现错误Not Found (#404): Page not found.生成URLhttp://localhost/mdc/backend/web/mdctariff/_slabBased

在我的浏览器中粘贴此URL时,出现了同样的错误。我一定想念我不知道的东西

如何才能使我的看法,只有当我选择一个选项?

任何帮助将不胜感激。

解决方法

在您的URL中

$url = Url::toRoute(['/mdctariff/_slabBased','modelsTariffSlabs'=>$modelsTariffSlabs]);

第一个参数应该是正确的现有路由。但是您是以目录的形式写的,即mdctafiff文件夹,然后是_slabBased文件。

这里您需要做的是,您需要在控制器中创建一个动作方法,以便您可以通过路由访问它。像MdctariffControllerpartialAction一样,然后在partialAction方法的主体中,您需要调用_slabBased视图文件。此外,您还可以将参考here用于Url :: toRoute()。