1

現在、テーブル User の ban_time フィールドに基づいて、ユーザー ステータスを「非アクティブ」または「アクティブ」として表示する既存のコードがあります。ユーザーのステータスが「非アクティブ」の場合、ban_time フィールドは現在のタイムスパンによって更新されます (外部ラッパー プラグインを使用していると思います)。

$form->field($user, 'ban_time')->widget(SwitchInput::classname(), [
            'type' => SwitchInput::CHECKBOX,
            'containerOptions' => ['class' => 'inner-form-group'],
            'pluginOptions' => [
                'state' => empty($user->ban_time),
                'handleWidth' => 60,
                'onText' => 'Active',
                'offText' => 'Inactive'
            ],
            'pluginEvents' => [
                "switchChange.bootstrapSwitch" => "function(event, state) { $('[name=\'User[ban_time]\']').val(state ? 0 : 1) }",
            ]
        ])->label('Status'); 

ここで、「非アクティブ」または「アクティブ」の代わりにステータスを追加する必要があります。そこで、このフィールドをdropDownListに変更したいのですが、Userのステータスを変更すると、ban_timeが変更されませんでした

$form->field($user, 'ban_time')->dropDownList(
            [empty($user->ban_time) =>'Active', !empty($user->ban_time) =>'Inactive']
        )->label('Status'); 

変更方法を教えてください

4

2 に答える 2

1

たとえば、以下に示すようなドロップダウンリストがある場合

  echo $form->dropDownListGroup(
                    $model, 'status', array(
                'wrapperHtmlOptions' => array(),
                'widgetOptions' => array(
                    'data' =>$model->getDropdownvalue(),
                    'htmlOptions' => array(
                        'prompt' => 'Select Project',
                        'ajax' => array(
                                'type' => 'POST',
                                'url' => your url,
                                //'dataType' => 'json',
                                'data'=>array('status'=>'js:this.value'),

                              )

コントローラーで、url を使用してドロップダウン リストの値を取得します。

public function actiondropdownvalue(){
$model = new status();
        $status = $_POST['status'];
       $model->save();

この例は、それがどのように機能するかを示しているだけです。特定のユーザーがステータスを更新または保存するには、ステータスを保存するためのユーザー ID が必要です。

于 2015-11-18T06:43:30.933 に答える