Изменить сценарий в форме Yii2

Я хочу изменить сценарий на странице просмотра с помощью jQuery. В моей форме есть флажок, я хочу, чтобы в поле флажка было указано поле ввода.

мое правило:

public function rules() {
        return [
               .
               .
               .
               ['pass' , 'required', 'on'=> 'checked']
        ]
}

моя страница просмотра:

<?=$form->field($model, 'check')->checkbox()?>
<?=$form->field($model, 'Pass')->textInput(['maxlength' => 20])?>

1 ответ

Решение

Попробуйте настроить свое правило так:

public function rules() {
    $checkBoxID = Html::getInputId($this, 'check');

    return [
        /* other rules */
        ['pass' , 'required', 
            'when' => function($model) {
                return $model->check;
            },
            'whenClient'=> "function(attribute, value){
                return $('#{$checkBoxID}').prop('checked');
            }",
            'on' => 'checked'
        ],
    ];
}

Прочитайте об условной проверке и свойстве validator whenClient. Также подумайте о том, чтобы назвать свой сценарий более информативным, например, по назначению, например 'on' => 'sign-up', или же 'on' => 'login', Сценарий полезен, когда вам нужны определенные правила для применения в конкретных случаях, но вам нужно явно указать этот сценарий. Либо, когда вы создаете экземпляр модели

$model = new MyModel();
$model->scenario = 'sign-up';

и передать его в представление, или перед выполнением любой проверки после $model->load($data)

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