2015-11-17 29 views
1

目前,我有一个现有的代码,基于表User的ban_time字段显示用户状态为“非活动”或“活动”。当用户的状态是“无效”,该ban_time场将由目前的入库时间进行更新(我猜它使用外部包装插件)将用户状态从SwitchInput更改为下拉列表

$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'? – arogachev

+0

保存ban_time是问题 –

+0

现在如何处理它? – arogachev

回答

1

例如,如果你已经DROPDOWNLIST这样下面

给出
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来保存特定用户的状态以更新或保存状态。

1

你可以让你的表单元素DROPDOWNLIST作为

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

DropDownList

+0

用户写道,实际的问题是保存'ban_time',而不是显示下拉列表。这也不是很好的例子,值应该是模型中的常量,并且通过单独的静态方法检索值列表对。视图不应该公开这一点。它也违反了DRY原则。 – arogachev

+0

但我怎样才能更新值并为其设置默认值? –

+0

@KenNguyen用更多的信息更新你的问题,因为目前状态还不清楚。 – arogachev

相关问题