usdglander
@usdglander
Yipee-ki-yay

В чем великий смысл добавления hidden-полей в ActiveForm?

C Yii2 знаком не давно. Постепенно пытаюсь освоить ActiveForm. Сейчас наткнулся на интересную вещь, в коде пишу:
<?= $form->field($model, 'price')->radio(['value' => 'common', 'id' => 'price-common', 'label' => 'Обычная цена']); ?>

в итоге на странице получаю:
<div class="form-group field-orderform-price required">
<input type="hidden" name="OrderForm[price]" value="0"> <!--Вот эта строка непонятна-->
<label><input type="radio" id="price-common" name="OrderForm[price]" value="common"> Обычная цена</label>
<div class="help-block"></div>
</div>

Соответственно в POST'е на сервер уходит куча этих нулевых hidden-полей, но они мне там не нужны. Это какая то гениальная вещь, которую я не понимаю, или всё таки ActiveForm не должен добавлять поля, которые его не просят добавлять?
Заранее спасибо.
  • Вопрос задан
  • 857 просмотров
Решения вопроса 2
@matperez
Не до конца понимаю в чем цимес, но дока говорит вот что:

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. If you do not want any hidden input, you should explicitly set this option as null.

Я так понимаю это позволяет переопределять значения которые приходят на сервер, если чекбокс не отмечен и не затронут в процессе заполнения формы вообще.
Ответ написан
Комментировать
@olegf13
Используется для выставления у данного поля (атрибута) значения по-умолчанию для НЕотмеченного состояния checkbox'а.

Чтобы его убрать, можно указать свойство "uncheck" в null, например:
activeRadio($model, $attribute, $options = ['uncheck' => null]);

или не для AR:
radio($name, $checked = false, $options = ['uncheck' => null]);


См. в док-ции раз и два.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы