Form API "checkboxes"

Аватар пользователя Armi Armi 6 ноября в 18:19

В хуке _form_views_exposed_form_alter добавляю свои доп поля. Есть проблема с полем типа "checkboxes". Не ставиться checked на #default_value переданного чекбокса при выводе. Пробывал уже передавать массив с выбранными чекбоксами по всякому ни в какую не ставит. Если при этом поставить тип поля select и передать в него #default_value те же все норм, значение устанавливается.

На скриншоте ниже массив элемента чекбокса.

ВложениеРазмер
Иконка изображения svoystva.png31.98 КБ
0 Thanks

Комментарии

Аватар пользователя Armi Armi 7 ноября в 15:14

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

<?php$element_form = array(
        
'#type' => 'checkboxes',
        
'#title' => t('Value'),
        
'#default_value' => array("14949"),
        
'#options' => $options,
      );

$form['myfields']["myfield[".$atribute->id."]"] = $element_form;

?>

если так то работает #default_value

<?php
$form
['myfields'][$atribute->id] = $element_form
?>

но в этом случае наименования вида

name="myfield[123][15344]" превращаются в
name="[123][15344]" чекбоксов.
Что делает получение параметров при отправке формы крайне неудобным.

Аватар пользователя Armi Armi 7 ноября в 17:55

Также все при использовании этой функции function form_process_checkboxes();

<?php $element_form['#value'] = array("1""2""3");
$element_form form_process_checkboxes($element_form);?>

проверил массив перед рендером #default_value функция добавила но при рендере если такая конструкция
$form['myfields']["myfield[".$atribute->id."]"] = $element_form; не работает
$form['myfields'] = $element_form; - так работает но выглядит чекбокс так
name="123[14920]" value="14920"
а первом случае он выглядит так
myfield[123][14947]

Аватар пользователя Armi Armi 7 ноября в 18:30

Вот так получилось

$form['myfields']['#tree'] = TRUE;
$form['myfields'][$atribute->id] = $element_form;

На выходе имеем myfields[123][14947]