Как установить флажок Yii2 ActiveForm в отмеченном состоянии?

Я ищу простое решение для состояния «проверено» для элемента управления флажком Yii2 ActiveForm, и я не могу найти решение, как его установить. Я не могу найти примеры в документации.

Я пытался манипулировать кодом рендеринга

<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?>

Но, похоже, мне нужно изменить саму ActiveForm. Как сделать чекбокс установленным по умолчанию?


person Bartosz Wójcik    schedule 06.05.2015    source источник


Ответы (3)


Хорошо, я некоторое время отлаживал и нашел решение, оно лежит в кишках BaseHtml.php в строке 1359 в функции activeCheckbox()

$checked = "$value" === "{$options['value']}";

Он проверяет значение по умолчанию переменной модели:

class SomeForm extends Model
{
    public $name = true;

И такое же значение (с тем же типом) должно быть присвоено опции «значение» в

<?= $form->field($model, 'name')->checkbox(['value' => true])->label('Hi'); ?>

Я бы сказал, что это слишком сложно для такой тривиальной функции.

person Bartosz Wójcik    schedule 06.05.2015

Смотрите, в моем коде status равно 0 или 1.

Итак, для отмеченного флажка я объявил <?php $model->status = 1; ?>

<?php $model->status = 1; ?>
<?= $form->field($model, 'status')->checkbox()->label('Hi'); ?>

Например, если у вас есть 2 значения для имени флажка, то есть PHP или Java. Затем объявите его как <?php $model->name = 'Java'; ?> для получения Java как checked

//Your Code

<?php $model->name = 'Java'; ?>
<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?>
person Nana Partykar    schedule 10.12.2015
comment
Скажите, пожалуйста, причину понижения. Тот, кто понизил голос, вы пробовали в своей системе? Некоторые люди просто приходят на SO, чтобы проголосовать против. Если вы считаете, что этот ответ бесполезен, укажите причину/предложение. Не просто голосуйте против - person Nana Partykar; 11.12.2015
comment
Я согласен с вами, этот ответ - единственный ответ, который следует способу Yii, чтобы установить флажок, отмеченный при загрузке формы, +1 для вас и угрозу для downvoter ** ̿ ̿'̿'\̵͇̿̿\z=(•_•) =ε/̵͇̿̿/'̿'̿ ̿** - person Muhammad Omer Aslam; 14.05.2018

Если я хочу установить флажок при создании, я делаю что-то вроде этого в представлении:

if ($model->isNewRecord) {
    $model->status = TRUE;
}

Я знаю, что это не элегантное решение, но оно работает.

person Vladimir    schedule 01.03.2016