Страница 1 из 1

ActiveFrom checkbox checked

Добавлено: 2014.05.14, 09:51
Moonlight
Здравствуйте.

Подскажите, как сделать чекбокс выделенным при загрузке страницы.

То есть мне бы передать какой-нибудь параметр в вызов метода. Чекбокс генерируется с помощью виджета ActiveForm.

Код: Выделить всё

<?= $form->field($elements, 'id_catalog['.$v->id.']')->checkbox(['value' => $v->id, 'label' => $v->title]) ?>

Re: ActiveFrom checkbox checked

Добавлено: 2014.05.14, 14:48
alexantr
а что, если заранее задать значение по-умолчанию (в контроллере или модели), при котором чекбокс будет отмечен

Re: ActiveFrom checkbox checked

Добавлено: 2014.05.15, 11:57
yiijeka
uncheck. и value там нету.

Re: ActiveFrom checkbox checked

Добавлено: 2014.05.15, 13:55
Moonlight
yiijeka
Ну по крайней мере value там прекрасно работает.
А uncheck я уже пробовал, ничего не изменилось. Вот пример. Пробовал 0/1/true/false. По-моему этот uncheck вообще не для этого. Или я не там пишу. Если не сложно, то хотелось бы увидеть рабочий пример.

Код: Выделить всё

<?= $form->field($elements, 'id_catalog['.$v->id.']')->checkbox(['value' => $v->id, 'label' => $v->title, 'uncheck' => '0']) ?>
alexantr, так наверное будет работать, пока не проверил, но это маленько не то, что надо, хотелось бы прямо в виджете параметр передать.

Re: ActiveFrom checkbox checked

Добавлено: 2014.05.15, 14:11
yiijeka
uncheck: string, the value associated with the uncheck state of the radio button. If not set, it will take the default value '0'. This method will render a hidden input so that if the radio button is not checked and is submitted, the value of this attribute will still be submitted to the server via the hidden input.
это не 0/1/true/false а строка, которая содержит состояние "не отмечено", попробуйте ещё добавить checked=>"checked"

Re: ActiveFrom checkbox checked

Добавлено: 2014.05.15, 14:25
Moonlight
Это я пробовал, тоже не работает.

Re: ActiveFrom checkbox checked

Добавлено: 2014.05.15, 14:39
yiijeka
Короче делайте как alexantr сказал, а то потом у вас ещё возникнут проблемы при валидации и отправке.

Re: ActiveFrom checkbox checked

Добавлено: 2014.05.15, 21:01
alexantr
вот как выглядит используемый метод в yii\helpers\BaseHtml:

Код: Выделить всё

    public static function activeCheckbox($model, $attribute, $options = [])
    {
        $name = isset($options['name']) ? $options['name'] : static::getInputName($model, $attribute);
        $value = static::getAttributeValue($model, $attribute);

        if (!array_key_exists('value', $options)) {
            $options['value'] = '1';
        }
        if (!array_key_exists('uncheck', $options)) {
            $options['uncheck'] = '0';
        }

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

        if (!array_key_exists('id', $options)) {
            $options['id'] = static::getInputId($model, $attribute);
        }

        return static::checkbox($name, $checked, $options);
    }
Тут видно, что сравнивается со значением атрибута модели.

Re: ActiveFrom checkbox checked

Добавлено: 2014.06.30, 12:49
hrupin
Так как надо делать, я уже полдня перебираю варианты и ни как не догоняю. Помогите новичку

Re: ActiveFrom checkbox checked

Добавлено: 2014.07.01, 08:19
yiijeka
По-правильному, устанавливаете $model->attr значение 1 и это значение используете в чекбоксе. Тогда чекбокс будет по-умолчанию выделенный.

Re: ActiveFrom checkbox checked

Добавлено: 2014.07.01, 10:06
hrupin
Спасибо большое

Re: ActiveFrom checkbox checked

Добавлено: 2015.03.28, 18:39
frmaxm
Парни, а тут как прописать 'checked'?

пишу так %)
<?=$form->field($model, 'order')->checkbox(['id' => 'myid', 'checked' => true])->label(false)->error(false); ?>

Re: ActiveFrom checkbox checked

Добавлено: 2015.03.28, 18:44
ElisDN
Также $model->order = 1 в контроллере.

Re: ActiveFrom checkbox checked

Добавлено: 2015.03.28, 18:54
frmaxm
а понял,

Вот еще вопрос. когда посылаю пост - почему-то отсылается 2 переменные, почему?

Код: Выделить всё

myForm[order]:0
myForm[order]:1

Re: ActiveFrom checkbox checked

Добавлено: 2015.03.28, 18:57
ElisDN
Потому что чекбокс рисуется со скрытым полем, чтобы 0 тоже передался.

Re: ActiveFrom checkbox checked

Добавлено: 2015.09.06, 18:22
jumper423
Если кому-то полезно будет.
Сделал такую реализацию

Код: Выделить всё

<?php

namespace common\widget;

use yii\helpers\Html;

/**
 * @inheritdoc
 */
class ActiveField extends \yii\bootstrap\ActiveField
{
    ....

    /**
     * @param string $value
     * @return ActiveField $this
     */
    public function defaultValue($value){
        if ($this->model->isNewRecord && !$this->model->{$this->attribute}) {
            $this->model->{$this->attribute} = $value;
        }
        return $this;
    }
}

 

Код: Выделить всё

<?php $form = ActiveForm::begin([
        ....
        'fieldClass' => 'common\widget\ActiveField',
        ....
    ]
);
?>

<?= $form->field($product, 'product_active')->defaultValue(1)->checkbox() ?>

...
И это применимо не только к чекбоксам.

Re: ActiveFrom checkbox checked

Добавлено: 2015.11.04, 10:11
Евгений Емельянов
Методом "тыка" найдено, что через 'options' в

Код: Выделить всё

$form->field($model, 'is_active')->checkbox(['checked' => true]) 
невозможно установить значение checked.
Но если после checked добавить пробел, то атрибут устанавливается -

Код: Выделить всё

->checkbox(['checked ' => '']) 
Может, кому-то пригодится...

Re: ActiveFrom checkbox checked

Добавлено: 2015.11.04, 11:08
Onotole
Евгений Емельянов писал(а):Методом "тыка" найдено, что через 'options' в

Код: Выделить всё

$form->field($model, 'is_active')->checkbox(['checked' => true])
невозможно установить значение checked.
Но если после checked добавить пробел, то атрибут устанавливается -

Код: Выделить всё

->checkbox(['checked ' => ''])
Может, кому-то пригодится...
Выше был написан самый верный способ

Re: ActiveFrom checkbox checked

Добавлено: 2015.11.26, 08:53
Beaver_ufa
Евгений Емельянов писал(а):Методом "тыка" найдено, что через 'options' в

Код: Выделить всё

$form->field($model, 'is_active')->checkbox(['checked' => true])
невозможно установить значение checked.
Но если после checked добавить пробел, то атрибут устанавливается -

Код: Выделить всё

->checkbox(['checked ' => ''])
Может, кому-то пригодится...
Шикарно! Спасибо огромное, очень пригодилось.

Знатокам - самый верный способ не всегда самый верный, потребовалось цеплять параметры из EAV в Grid c kartik/Editable, атрибут модели указать в этом случае возможности нет, хотя доступ к значению имеется.

Re: ActiveFrom checkbox checked

Добавлено: 2015.11.26, 09:06
Евгений Емельянов
Поэтому и выложил этот способ, чтобы 2 часа поисков (в начале изучения фреймворка) не пропали зря :)