ActiveFrom checkbox checked

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Moonlight
Сообщения: 22
Зарегистрирован: 2011.12.18, 23:06

ActiveFrom checkbox checked

Сообщение Moonlight »

Здравствуйте.

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

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

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

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

Аватара пользователя
alexantr
Сообщения: 9
Зарегистрирован: 2014.05.13, 09:31

Re: ActiveFrom checkbox checked

Сообщение alexantr »

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

Аватара пользователя
yiijeka
Сообщения: 3091
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: ActiveFrom checkbox checked

Сообщение yiijeka »

uncheck. и value там нету.

Moonlight
Сообщения: 22
Зарегистрирован: 2011.12.18, 23:06

Re: ActiveFrom checkbox checked

Сообщение 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, так наверное будет работать, пока не проверил, но это маленько не то, что надо, хотелось бы прямо в виджете параметр передать.

Аватара пользователя
yiijeka
Сообщения: 3091
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: ActiveFrom checkbox checked

Сообщение 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"

Moonlight
Сообщения: 22
Зарегистрирован: 2011.12.18, 23:06

Re: ActiveFrom checkbox checked

Сообщение Moonlight »

Это я пробовал, тоже не работает.

Аватара пользователя
yiijeka
Сообщения: 3091
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: ActiveFrom checkbox checked

Сообщение yiijeka »

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

Аватара пользователя
alexantr
Сообщения: 9
Зарегистрирован: 2014.05.13, 09:31

Re: ActiveFrom checkbox checked

Сообщение 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);
    }
Тут видно, что сравнивается со значением атрибута модели.

hrupin
Сообщения: 45
Зарегистрирован: 2014.06.30, 10:20

Re: ActiveFrom checkbox checked

Сообщение hrupin »

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

Аватара пользователя
yiijeka
Сообщения: 3091
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: ActiveFrom checkbox checked

Сообщение yiijeka »

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

hrupin
Сообщения: 45
Зарегистрирован: 2014.06.30, 10:20

Re: ActiveFrom checkbox checked

Сообщение hrupin »

Спасибо большое

frmaxm
Сообщения: 193
Зарегистрирован: 2015.03.12, 22:16

Re: ActiveFrom checkbox checked

Сообщение frmaxm »

Парни, а тут как прописать 'checked'?

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

Аватара пользователя
ElisDN
Сообщения: 5658
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: ActiveFrom checkbox checked

Сообщение ElisDN »

Также $model->order = 1 в контроллере.

frmaxm
Сообщения: 193
Зарегистрирован: 2015.03.12, 22:16

Re: ActiveFrom checkbox checked

Сообщение frmaxm »

а понял,

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

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

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

Аватара пользователя
ElisDN
Сообщения: 5658
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: ActiveFrom checkbox checked

Сообщение ElisDN »

Потому что чекбокс рисуется со скрытым полем, чтобы 0 тоже передался.

Аватара пользователя
jumper423
Сообщения: 61
Зарегистрирован: 2015.05.23, 02:30
Откуда: Тирасполь
Контактная информация:

Re: ActiveFrom checkbox checked

Сообщение 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() ?>

...
И это применимо не только к чекбоксам.
Хотите купить дешёвый, быстрый и качественный VPS сервер, моим выбором стал Rootwelt. Всем советую, не прогадаете ;)

Евгений Емельянов
Сообщения: 167
Зарегистрирован: 2015.06.10, 10:43

Re: ActiveFrom checkbox checked

Сообщение Евгений Емельянов »

Методом "тыка" найдено, что через 'options' в

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

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

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

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

Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: ActiveFrom checkbox checked

Сообщение Onotole »

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

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

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

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

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

Beaver_ufa
Сообщения: 3
Зарегистрирован: 2015.05.01, 06:56

Re: ActiveFrom checkbox checked

Сообщение Beaver_ufa »

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

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

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

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

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

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

Евгений Емельянов
Сообщения: 167
Зарегистрирован: 2015.06.10, 10:43

Re: ActiveFrom checkbox checked

Сообщение Евгений Емельянов »

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

Ответить