В настоящее время у меня есть существующий код для отображения статуса пользователя как "Неактивный" или "Активный" на основе поля 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');
Пожалуйста, помогите мне, как его изменить
например, если у вас есть раскрывающийся список, как показано ниже
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();
этот пример показывает только, как он будет работать. Вам потребуется идентификатор пользователя, чтобы сохранить статус для определенного пользователя для обновления или сохранения статуса.
Вы можете сделать свой элемент формы как dropDownList как
$items = [1 =>'Active', 0 =>'Inactive' ,2 => 'Subscribed' ,3 => 'Deleted'];
$form->field($user, 'ban_time')->dropDownList($items)->label('Status');
См. DropDownList
ban_time
, а не в раскрывающемся списке. Также это не хороший пример, значения должны быть константами в модели, а список пар меток значений получен отдельным статическим методом. Вид не должен разоблачать это. Также это нарушает принцип СУХОГО.
ban_time
?