yii2で選択した後にのみビューをレンダリングする方法

Aug 22 2020

1つのビューで2つのビューをレンダリングしています。

<?= $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
        });
    }

参照: https://stackoverflow.com/a/37647328/6854117

オプションを選択すると、フォームを表示できません。私にはNetwork、タブ、私はエラーを取得していますNot Found (#404): Page not found.URL生成されましたhttp://localhost/mdc/backend/web/mdctariff/_slabBased

このURLをブラウザに貼り付けているときに、同じエラーが発生します。知らないことを見逃しているに違いない

オプションを選択した場合にのみビューをレンダリングするにはどうすればよいですか?

どんな助けでも大歓迎です。

回答

2 AnkitSingh Sep 12 2020 at 14:21

あなたのURLで

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

最初の引数は、適切な既存のルートである必要があります。しかし、あなたはそれをディレクトリ、すなわちmdctafiffフォルダ、そして_slabBasedファイルの形で書いています。

ここで行う必要があるのは、ルートを介してアクセスできるように、コントローラーでアクションメソッドを作成する必要があるということです。同様にMdctariffControllerpartialActionそしてpartialActionメソッドの本体で、_slabBasedビューファイルを呼び出す必要があります。さらに参照することもできますhttps://www.yiiframework.com/doc/guide/2.0/en/helper-url Url :: toRoute()の場合。