Привет друзья, прошу помощи по затруднительному вопросу.
Суть:
У меня есть тип материала с полями цвет и размер, это текстовый список с множественным выбором, где админ может задать доступные цвета и размеры для определённого товара.
На странице выводиться форма которую я набросала в кастомном модуле через Form API
В эту форму добавляю селекторы в которые необходимо передать значение из полей цвет и размер и тут меня подкараулил вселенский облом, если брать значения поля таким образом и передавать в поле формы напрямую:
<?php
function acard_form_add($form, &$form_state){
$size = $node->field_size['und'];
$color = $node->field_color['und'];
$form['size'] = array(
'#type' => 'select',
'#options' => $size,
);
$form['color'] = array(
'#type' => 'select',
'#options' => $color,
);
?>
получается вот такая вот неприятная штука:
Поясню, массив поля выглядит следубщим образом (и справа пример вывода поля в форме)
Вопрос:
Как собственно правильно передать массив в select формы так что бы отображались только параметры и value="" был идентичен значению ни или ключу на крайний случай.
Благодарю всех откликнувшихся.
Вложение | Размер |
---|---|
![]() | 81.12 КБ |
Комментарии
Ключ $node->field_color[LANGUAGE_NONE][0]'value'] если нужно значение надо использовать field_info_field и из него allowed value
Спасибо за наводку, наконец я поняла как доставать ключи полей!
<?php
$size = $node->field_size['und'];
$color = $node->field_color['und'];
foreach ($size as $key => $val) {
$form['size']['#options'][] = $val['value'];
}
?>
Спасибо, это то что нужно!
я немного затупила, что к чему, по этому на всякий, показываю ниже полный контекст решения:
<?php
$size = $node->field_size['und'];
$form['color'] = array(
$form['size'] = array(
function custom_form_add($form, &$form_state){
$color = $node->field_color['und'];
'#type' => 'select',
);
'#type' => 'select',
);
foreach (
$color as $key => $val) {$form['color']['#options'][] = $val['value'];
}
foreach (
$size as $key => $val) {$form['size']['#options'][] = $val['value'];
}
?>
Вопрос в догонку, данный код задал значение
<option value="1">M</option>
<option value="2">L</option>
Можно ли как то переопределить значение value="0" на аналогичное значение что в option?
Я догадываюсь что в тот же foreach необходимо добавить вторую строку, но не понимаю как достучатся до value="" так как ['value'] это то, что между option
$options = array(
1 => 'Red',
5 =>'Blue'
);
...