button+JS+checkbox

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
dymsonn
Сообщения: 60
Зарегистрирован: 2018.06.13, 15:37

button+JS+checkbox

Сообщение dymsonn » 2019.04.11, 11:54

Здравствуйте. Не могу понять по документации, как получить значения checkbox'ов.
Эта кнопка отправляет значение id=111 в экшн контроллера.

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

<?=
    Html::submitButton('<span class="glyphicon glyphicon-export"></span> Экспорт в XML',
        [
            'class' => 'btn btn-default',
            'onclick' => 'window.location.href = "'.Url::to(['object/exportxml', 'id' => '111']).'"'
        ])
    ?>
В контроллере формируется файл и отдаётся на скачивание.

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

return Yii::$app->response->sendFile($file_name);
Как значения галочек (как это советуют в документации):

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

var keys = $(".grid-view").yiiGridView("getSelectedRows");
подставить вместо '111' ?

Аватара пользователя
futbolim
Сообщения: 2050
Зарегистрирован: 2012.07.08, 19:28

Re: button+JS+checkbox

Сообщение futbolim » 2019.04.11, 18:10

'onclick' => 'window.location.href = "'.Url::to(['object/exportxml', 'id' => '']).'" + $(".grid-view").yiiGridView("getSelectedRows")'
?

dymsonn
Сообщения: 60
Зарегистрирован: 2018.06.13, 15:37

Re: button+JS+checkbox

Сообщение dymsonn » 2019.04.12, 10:40

Не долго музыка играла(( конкретно для этого примера работает. Но это же checkbox. Т.е. если я ставля один флажок, то всё работает. Коррекнее даже так по моему

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

...'id' => ['']...
А вот если я отмечаю более одной галочки, то вместо корректно результата в get

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

array(1) { ["id"]=> array(2) { [0]=> string(4) "111" [1]=> string(4) "112" } }
получаю ошибку sql запроса и вот такой get

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

array(1) { ["id"]=> array(1) { [0]=> string(9) "111,112" } } 
И что то не понимаю как допилить(

dymsonn
Сообщения: 60
Зарегистрирован: 2018.06.13, 15:37

Re: button+JS+checkbox

Сообщение dymsonn » 2019.04.13, 07:48

Жаль что ответа нет. По моему костыль, но решил в лоб.

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

explode(',', Yii::$app->response->get('id')[0]);

dymsonn
Сообщения: 60
Зарегистрирован: 2018.06.13, 15:37

Re: button+JS+checkbox

Сообщение dymsonn » 2019.04.15, 15:44

Не оставляю попытки сделать красивее чем есть. Вот так должно работать, но не работает. Или я не прав?

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

$('input:checkbox:checked').each(function() {
    var checked = [];
    checked.push($(this).val());
});     

dymsonn
Сообщения: 60
Зарегистрирован: 2018.06.13, 15:37

Re: button+JS+checkbox

Сообщение dymsonn » 2019.04.15, 15:49

И еще вопрос по этой теме к знатокам. В чем отличие нажатия на checkbox в поле grid и нажатие на checkbox_all в заголовке grid? Хочу покрасить выделенную строку. Но не получается этого сделать когда одним кликом отмечаю все checkbox. То же само и с неактивной кнопкой. Если кнопка имеет id=exportxml, то вот тут должно происходить волшебство.

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

['class' => 'yii\grid\CheckboxColumn',
                'checkboxOptions' => function () {
                    return [
                        'onchange' => '                               
                                $(this).each(function(){
                                    $(this).parent().parent().toggleClass("danger");            
                                    if ($(this).is(":checked")){
                                        $("#exportxml").removeAttr("disabled");
                                    } else {
                                        $("#exportxml").attr("disabled", "disabled");
                                    }
                                });
                            '
                    ];
                }
            ],    
Но оно происходит только при одиночном нажатии, при групповом ничего не происходит.

Ответить