2015-05-06 6 views
5

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

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

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

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

ответ

3

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

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

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

class SomeForm extends Model 
{ 
    public $name = true; 

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

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

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

0

Престол в моем коде 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'); ?> 
+1

Пожалуйста, расскажите мне причину понижения. Тот, кто сделал downvote, попробовал ли вы в своей системе? Некоторые люди просто приходят к SO с понижением. Если вы считаете, этот ответ не пригодится, пожалуйста, объясните причину/предложение. ** Не просто спускать ** –

1

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

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

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