yii2 activeform中的部分渲染

时间:2015-12-28 04:05:18

标签: php jquery gridview yii2 active-form

我在_create.php下的活动表单基于模型Host,其中有一个基于模型DeviceType的下拉列表。我在activeforms下面还有一个gridview,它基于ServiceStatuses,并且从service.php部分呈现。每个设备类型ID都有不同的服务。如何根据下拉列表的当前值使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 (不确定如何将索引HERE作为参数传递给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,
        ]);
}

1 个答案:

答案 0 :(得分:0)

试试这个:

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

<div>
    <?= 
        Gridview::widget([
            'dataProvider' => $dataProvider,
            'filterModel' => $searchModel,
            'columns' => 
            [
                'name' => [
                    'label' => 'Services',
                    'attribute' => 'name',
                ]
            ]
        ]);
    ?> 
</div>