Проверка не работает после установки сценария
Моя проверка на стороне клиента не работает после создания сценариев. он прекрасно работает перед созданием сценария. у меня есть два сценария обновления и создания, у меня есть два поля, которые необходимо заполнить при создании сценария, и у меня есть одно поле, которое необходимо заполнить при обновлении сценариямоей модели
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,]) ?>
1 ответ
Попробуйте этот порядок на модели
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(['script' => 'create']);
// для обновления
$ model = $ this-> findModel ($ id);
$ модель-> сценарий = 'обновление';