Yii2 - 从dropDownList中删除项目

时间:2017-12-13 16:14:48

标签: php yii2

在我的门票表格中,我有一个员工的dropDownList,在员工模型中,我有employee_status,'可用','不可用'

如果我将员工的状态更改为“不可用”,我将如何从故障单表单中的dropDownList自动删除它?

来自故障单的员工下拉列表

<?= $form->field($model, 'employee_id')->dropDownlist(
                 ArrayHelper::map(Employee::find()->all(), 'id', 'employee_name'),
                 [
                  'prompt' => 'Select Employee ID',
                  'style' => 'width:200px'
          ]); ?>

3 个答案:

答案 0 :(得分:1)

您需要根据employee_status.write为视图文件中的代码创建一个依赖的下拉列表,以创建依赖下拉列表: -

use yii\helpers\ArrayHelper;

echo $form->field($model, 'employee_status')->dropDownList([0=>'Available' , 1 => 'Not Available'],
             [
              'prompt' => 'Select Employee Status',
              'style' => 'width:200px',
              'onchange'=>'$.post( "'.Yii::$app->urlManager->createUrl('site/get-employee?status=').'"+$(this).val(), function( data ) {
              $( "select#employee-employee_id" ).html( data );
            });']); 

<?= $form->field($model, 'employee_id')->dropDownlist(
             ArrayHelper::map(Employee::find()->all(), 'id', 'employee_name'),
             [
              'prompt' => 'Select Employee ID',
              'style' => 'width:200px'
      ]); ?>

现在为获取子下拉列表数据编写一个控制器操作。控制器动作代码如下: - SiteController.php

public function actionGetEmployee($status)
{               
    $employee= \common\models\Employee::find()
            ->where(['status' => $status])
            ->orderBy('id DESC')
            ->all();

    if (!empty($employee)) {
        foreach($employee as $employee) {
            echo "<option value='".$employee->id."'>".$employee->name."</option>";
        }
    } else {
        echo "<option>-</option>";
    }

}

注意:根据您的代码更改模型命名空间。

答案 1 :(得分:0)

使用您给定的条件执行查找查询。

由于我们只想在列表中找到可用的员工,我们可以写:

Employee::find('status=:status', [
    ':status' => 'Available'
])->all();

答案 2 :(得分:0)

我终于明白了

<?= $form->field($model, 'employee_id')->dropDownlist(
                       ArrayHelper::map(Employee::find()->where(['status' => 'Available'])->all(), 'id', 'employee_name'),
                       [
                        'prompt' => 'Select Employee ID',
                        'style' => 'width:200px'
                      ]); ?>