创建方案后,我的客户端验证无效。它在创建场景之前工作正常。我有两个方案更新和创建,我在创建方案上需要两个字段,我在更新方案上需要一个字段 我的模特
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,]) ?>
答案 0 :(得分: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'=&gt;'create']);
// for update
$ model = $ this-&gt; findModel($ id);
$ model-&gt; scenario ='update';