0

创建场景后,我的客户端验证不起作用。在创建场景之前它工作正常。我有两个场景更新和创建,创建场景需要两个字段,更新场景 需要一个字段我的模型

        class BaseBroadcast extends BaseActiveRecord
    {
      const SCENARIO_UPDATE = 'update';
      const SCENARIO_CREATE = 'create';


/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [
            [
                'freight_charges_unit',
                'requested_response_date',
                'close_reason'
            ],
            'required'
        ],
       ......
    ];
}

/**
 * @return array
 */
public function scenarios(): array
{
    parent::scenarios();
    return [
        self::SCENARIO_UPDATE => ['close_reason'],
        self::SCENARIO_CREATE => ['freight_charges_unit','requested_response_date']

    ];
}

}

我使用了创建场景,例如

$model = new Broadcast();
$model->scenario = Broadcast::SCENARIO_CREATE;

这和更新场景如

$model = Broadcast::findOne(['id' => $id]);
$model->scenario = Broadcast::SCENARIO_UPDATE;

这个。

我在我的表单上启用了客户端验证

 <?php $form = ActiveForm::begin(['action' => ......,
    'enableClientValidation' => true,]) ?>
4

1 回答 1

0

在模型上试试这个订单

const SCENARIO_UPDATE = 'update';
const SCENARIO_CREATE = 'create';


public function scenarios()
{
    return [
        self::SCENARIO_UPDATE => ['close_reason'],
        self::SCENARIO_CREATE => ['freight_charges_unit','requested_response_date']
    ];
}

public function rules()
{
  return [
            [['freight_charges_unit','requested_response_date'], 'required','on' => 'create'],
            [['close_reason'], 'required','on' => 'update'],
    ];
}

这在控制器中

$model = new Broadcast(['scenario' => 'create']);

//用于更新

$model = $this->findModel($id);

$model->scenario = '更新';

于 2017-04-26T07:00:37.600 回答