checkbox не передает данные при disabled=true

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
rkk
Сообщения: 40
Зарегистрирован: 2016.03.04, 19:33

checkbox не передает данные при disabled=true

Сообщение rkk » 2017.04.11, 16:55

У меня есть форма, на ней есть checkbox (который пользователь не может редактировать в зависимости от ранее введенных данных)
<?= $form->field($model, 'try')->checkbox(['disabled' => 1]) ?>
в базе свойство try=1 при редактировании формы html выглядит так
<input type="checkbox" id="model-try" name="Model[try]" value="1" checked="" disabled="">
Но при сабмите [try] => 0.

мне надо что бы пользователь не мог отредактировать некоторые checkbox, но при это если они было 1 (т.е. нажаты) в форму они передавались 1.

Может кто-то сталкивался с такой проблемой, что делать?
Всем заранее спасибо.

caHek2x
Сообщения: 1226
Зарегистрирован: 2016.04.12, 20:41

Re: checkbox не передает данные при disabled=true

Сообщение caHek2x » 2017.04.11, 17:04

если он не должен редактировать то вы это проверяете на стороне сервера ... и потом например в сценарии выставляете ...
ато у вас получается вы выставили disabled .. человек зашел в инспектор в браузере изменил значение и вуаля ...
disabled никогда не идет на сервер ... а у вас приходит 0 только потому что yii генерирует hidden поле чтоб приходило значение 0 если выключен checkbox ... т.к. у чекбоксов при не поставленой галочке как и при disable тоже ничего не идет ...

всегда запомните правило если чтото нельзя вы это проверяете на сервере а никак не на клиенте ...

Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: checkbox не передает данные при disabled=true

Сообщение rugabarbo » 2017.04.11, 17:10

При неустановленном чекбоксе классический чекбокс ничего на сервер не отправляет. Для решения этой проблемы yii добавляет к чекбоксам hidden-поля. Но вот как ведёт себя классический чекбокс при disabled - я не помню. Тоже ничего не отправляет на сервер? И что делает при disabled фреймворк с hidden-инпутом? Не выставляет его?

urichalex
Сообщения: 957
Зарегистрирован: 2015.08.07, 11:03

Re: checkbox не передает данные при disabled=true

Сообщение urichalex » 2017.04.11, 17:34

При disabled аттрибуте в поле это поле не отправляется. Если хотите чтобы отправлялось используйте readonly

caHek2x
Сообщения: 1226
Зарегистрирован: 2016.04.12, 20:41

Re: checkbox не передает данные при disabled=true

Сообщение caHek2x » 2017.04.11, 17:35

urichalex писал(а):
2017.04.11, 17:34
При disabled аттрибуте в поле это поле не отправляется. Если хотите чтобы отправлялось используйте readonly
на yii это не влияет ... disable не отправляет значение чекбокса, но отправляется yii шное hidden поле ... с нулём ...

Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: checkbox не передает данные при disabled=true

Сообщение rugabarbo » 2017.04.11, 17:42

Кстати, автор hidden не показал совсем нам. Что генерируется в хидене?

urichalex
Сообщения: 957
Зарегистрирован: 2015.08.07, 11:03

Re: checkbox не передает данные при disabled=true

Сообщение urichalex » 2017.04.11, 17:43

caHek2x писал(а):
2017.04.11, 17:35
urichalex писал(а):
2017.04.11, 17:34
При disabled аттрибуте в поле это поле не отправляется. Если хотите чтобы отправлялось используйте readonly
на yii это не влияет ... disable не отправляет значение чекбокса, но отправляется yii шное hidden поле ... с нулём ...
А, ну да. Он подставляет скрытое. Странно, что, если указать disabled то он это поле бы вообще не показывал

rkk
Сообщения: 40
Зарегистрирован: 2016.03.04, 19:33

Re: checkbox не передает данные при disabled=true

Сообщение rkk » 2017.04.11, 18:04

hidden поле у меня только одно.
<input type="hidden" name="_csrf-backend" value="ZWZEenp2RmMnJHwuVzJ2AB01HjslQzZQAy0UAAs4FDUfFAIvNCAVNQ==" class="">
'disabled' => 1 поле, checkbox, показывается но делает его не кликабельным, собственно что мне и надо.
<?= $form->field($model, 'try')->checkbox(['disabled' => 1]) ?>
пробовал так
<?= $form->field($model, 'try')->checkbox(['readonly' => 1]) ?>
checkbox кликабельный и соответственно в модель идет то значение что выбрал пользователь.
На стороне сервера проверка есть, но мне надо сделать интерактивную страничку когда пользователь выбирает то или иное значение checkbox-сы некоторые становятся не активными (в том числе и нажатые), некоторые становятся активными. Т.е. форма подсказывает пользователю что он может дальше редактировать, что нет. Плюс на любом этапе пользователь может сохранить страницу и вернуться к ней для дальнейшего редактирования, собственно тут и возникает проблема. Мне надо показать что checkbox выбран, но его пользователь изменить уже не может и при самбите это значение checked мне не передается, как будто пользователь изменил его.

Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: checkbox не передает данные при disabled=true

Сообщение rugabarbo » 2017.04.11, 18:09

JS в помощь... без него не сделаете такое. Им же можно и при инициализации страниц разруливать состояния.

caHek2x
Сообщения: 1226
Зарегистрирован: 2016.04.12, 20:41

Re: checkbox не передает данные при disabled=true

Сообщение caHek2x » 2017.04.11, 18:11

вы заранее знаете что чекбокс редактировать нельзя ... отлично ... сделали disable ... а в сценарии прописываете это поле только при случае когда его можно редактировать ... и все load прочсто проигнорирует ненужные поля ...
rkk писал(а):
2017.04.11, 18:04
hidden поле у меня только одно.
внимательнее посмотрите возле инпута с чекбоксом ... удивитесь ...

Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: checkbox не передает данные при disabled=true

Сообщение rugabarbo » 2017.04.11, 18:20

caHek2x... оффтоп... но... всё же... подскажите... зачем... столько троеточий...

...

...сорри... за толстый троллинг... не удержался...

...

caHek2x
Сообщения: 1226
Зарегистрирован: 2016.04.12, 20:41

Re: checkbox не передает данные при disabled=true

Сообщение caHek2x » 2017.04.11, 18:26

ахахах ничего страшного ) вы не первый кто на этом зацикливается ) ну вот не знаю... такая дурная привычка ... вместо запятой ставить троеточия ) у каждого свои тараканы )

Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: checkbox не передает данные при disabled=true

Сообщение rugabarbo » 2017.04.11, 18:49

Я не зацикливался. Просто обратил внимание.
Кстати, со скобочками у вас тоже беда... (:

rkk
Сообщения: 40
Зарегистрирован: 2016.03.04, 19:33

Re: checkbox не передает данные при disabled=true

Сообщение rkk » 2017.04.11, 20:42

Да действительно есть хиден поле
<input type="hidden" name="Model[try]" value="0">
Получается, как я и предполагал, только JS это делать.
Но как-то не логично получается, я передаю в форму (_form.php) чекбокс нажатым (try=1) и пользователь его видеть нажатым, а возвращается try=0 :(
Но всем спасибо за комментарии.

caHek2x
Сообщения: 1226
Зарегистрирован: 2016.04.12, 20:41

Re: checkbox не передает данные при disabled=true

Сообщение caHek2x » 2017.04.11, 20:55

Но как-то не логично получается, я передаю в форму (_form.php) чекбокс нажатым (try=1) и пользователь его видеть нажатым, а возвращается try=0 :(
логика в том что: если пользователь только должен увидеть но при отправки формы ничего не должно меняться то это поле и обрабатывать вы не должны ... поэтому вам должно быть все равно что приходит с формы ...

Ответить