Изменить статус пользователя из SwitchInput в выпадающий список

1

В настоящее время у меня есть существующий код для отображения статуса пользователя как "Неактивный" или "Активный" на основе поля ban_time таблицы User. Когда статус пользователя "Неактивен", поле 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, но при изменении статуса пользователя, ban_time не был изменен

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

Пожалуйста, помогите мне, как его изменить

  • 2
    Так в чем же проблема? Отображение выпадающего списка? Или сохранение ban_time ?
  • 0
    Сохранение ban_time - проблема
Показать ещё 3 комментария
Теги:
yii2
yii2-user

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();

этот пример показывает только, как он будет работать. Вам потребуется идентификатор пользователя, чтобы сохранить статус для определенного пользователя для обновления или сохранения статуса.

1

Вы можете сделать свой элемент формы как dropDownList как

     $items = [1 =>'Active', 0 =>'Inactive' ,2 => 'Subscribed' ,3 => 'Deleted'];
     $form->field($user, 'ban_time')->dropDownList($items)->label('Status'); 

См. DropDownList

  • 0
    Как пишет пользователь, настоящая проблема заключается в сохранении ban_time , а не в раскрывающемся списке. Также это не хороший пример, значения должны быть константами в модели, а список пар меток значений получен отдельным статическим методом. Вид не должен разоблачать это. Также это нарушает принцип СУХОГО.
  • 0
    Но как я могу обновить значение и установить для него значение по умолчанию?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню