Проверка не работает после установки сценария

Моя проверка на стороне клиента не работает после создания сценариев. он прекрасно работает перед созданием сценария. у меня есть два сценария обновления и создания, у меня есть два поля, которые необходимо заполнить при создании сценария, и у меня есть одно поле, которое необходимо заполнить при обновлении сценариямоей модели

        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);

$ модель-> сценарий = 'обновление';

Другие вопросы по тегам