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,]) ?>
那麼發生了什麼?這些字段沒有按照需求進行驗證? – Bizley
是的。當我點擊提交需要的字段爲空時表單提交 –
你不必設置''enableClientValidation'=> true' - 這是默認的,這一行'parent :: scenarios();'什麼也不做。無論如何,你能展示在這個模型上操作的控制器的行爲代碼嗎? – Bizley