Удалите двойные кавычки "
из выражения '"this.form.submit();}"'
и }
.Затем вам нужно передать массив опций, а не ключевое слово options
, см. Документ API для флажок
, поэтому оно должно быть
<?= $form->field($searchModel, 'pets_allowed')->checkbox(['onchange' => 'this.form.submit()']); ?>
Но проблемав приведенном выше сценарии это означает, что он будет отправлять форму, даже если вы снимите ее, поэтому лучшим способом будет проверка состояния флажка.я бы использовал jquery и heredoc , как показано ниже, чтобы вы могли иметь удобочитаемость в вашем коде и удобство редактирования.
<?php
use yii\widgets\ActiveForm;
$js = <<<JS
$("#pets_allowed").on('change',function(){
// to submit only if the checkbox is checked otherwise
// you can remove the check and just use the submit statement
if($(this).is(':checked')){
$(this).closest('form').submit();
}
});
JS;
$this->registerJs($js, \yii\web\View::POS_READY);
?>
<?php $form = ActiveForm::begin();?>
<?= $form->field($searchModel, 'pets_allowed')->checkbox(['id'=>'pets_allowed']); ?>
<?php ActiveForm::end();?>