Мне очень нравится shell_command за его простоту. Он построен поверх модуля подпроцесса.
Вот пример из документов:
>>> from shell_command import shell_call
>>> shell_call("ls *.py")
setup.py shell_command.py test_shell_command.py
0
>>> shell_call("ls -l *.py")
-rw-r--r-- 1 ncoghlan ncoghlan 391 2011-12-11 12:07 setup.py
-rw-r--r-- 1 ncoghlan ncoghlan 7855 2011-12-11 16:16 shell_command.py
-rwxr-xr-x 1 ncoghlan ncoghlan 8463 2011-12-11 16:17 test_shell_command.py
0
Удалите двойные кавычки "
из выражения '"this.form.submit();}"'
и }
. Затем вам нужно передать массив опций, а не ключевое слово options
, см. Флажок API Doc для
, поэтому должно быть
<?= $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();?>