Частичный рендеринг в yii2 activeform

У меня есть активная форма под _create.php на основе модели Host, которая имеет раскрывающийся список на основе модели DeviceType. У меня также есть вид сетки под активными формами, который основан на ServiceStatuses и ЧАСТИЧНО отображается из service.php. Каждый идентификатор типа устройства имеет разные службы. Как я могу динамически изменять содержимое gridview в зависимости от текущего значения раскрывающегося списка? Должен ли я использовать jquery или ajax?

Оператор sql, который я планирую использовать, это SELECT id, name from ServiceStatuses where id = *current drop down index*

Вот таблицы:

//Host Machine
id, name, devicetype_id
1  HostA  1
2  HostB  1
3  HostC  2
4  HostD  2

//DeviceType
id, name
1  DeviceA
2  DeviceB

//ServiceStatuses
id, name, host_id
1  ServiceA 1
2  ServiceB 1
3  ServiceC 2
4  ServiceD 2
5  ServiceE 3
6  ServiceF 3
7  ServiceG 4
8  ServiceH 4

_form.php (НЕ УВЕРЕН, как передать ЗДЕСЬ индекс в качестве параметра для действия service)

<?php $form = ActiveForm::begin(); ?>

<?= $form->field($model, 'device_type')->dropDownList($deviceTypeModel, [
    'onchange' => 'show($id)']
    );
?> 

<?php ActiveForm::end(); ?>

который вызывает функцию на моем контроллере

function actionShow($id)
{
        $searchModel = new Object;
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams, $id);

        return $this->renderPartial('service', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
}

person Gibs    schedule 28.12.2015    source источник


Ответы (1)


Попробуй это:

<?php
use yii\grid\GridView;
?>

<div>
    <?= 
        Gridview::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => 
            [
                'name' => [
                    'label' => 'Services',
                    'attribute' => 'name',
                ]
            ]
        ]);
    ?> 
</div>
person Manoj S Kadlag    schedule 28.12.2015
comment
Спасибо, но я не думаю, что это работает для выбранного индекса - person Gibs; 28.12.2015