В хуке _form_views_exposed_form_alter добавляю свои доп поля. Есть проблема с полем типа "checkboxes". Не ставиться checked на #default_value переданного чекбокса при выводе. Пробывал уже передавать массив с выбранными чекбоксами по всякому ни в какую не ставит. Если при этом поставить тип поля select и передать в него #default_value те же все норм, значение устанавливается.
На скриншоте ниже массив элемента чекбокса.
Вложение | Размер |
---|---|
svoystva.png | 31.98 КБ |
Комментарии
Код который добавляете в студию!
Выяснил что проблема возникает когда присваиваешь элементы вот таким образом:
<?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]" чекбоксов.
Что делает получение параметров при отправке формы крайне неудобным.
Дефолт устанавливается здесь
https://api.drupal.org/api/drupal/includes%21form.inc/function/form_proc...
темы
https://api.drupal.org/api/drupal/includes%21form.inc/function/theme_che...
https://api.drupal.org/api/drupal/includes%21form.inc/function/theme_che...
к ним конечно доступны _preprocess
Также все при использовании этой функции 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]
Вот так получилось
$form['myfields']['#tree'] = TRUE;
$form['myfields'][$atribute->id] = $element_form;
На выходе имеем myfields[123][14947]