Доступ к значениям в $ form_values ​​Drupal из пользовательской формы Drupal - PullRequest
1 голос
/ 14 июня 2011

РЕДАКТИРОВАТЬ: Похоже, моих навыков "сканирования массивов" было недостаточно, спасибо за предложения.Более того, я обнаружил, что проверял условие $ discounttype с простым "=" вместо двойного "==".Полагаю, что удар по голове на один и тот же блок кода в течение 3 часов делает вас глупым и упускает самые очевидные ошибки.

Первым делом я на Drupal 6.

Я создалформа со следующей разметкой:

$form["cart_".$index] = array(
'#type' => 'image_button',
'#src'=> 'files/imghome/sidebar-add-demo.gif',
'#attributes' => array('rel' => '#item', 'class' => 'buybutton', 'title' => $discounttype),
'#prefix'=>'<p class="renewprop">'.$newren.' for '.$node_abb->field_tipo_abb_value.':</p><p class="renewblock"><span class="pricetag">'.$node_abb->field_prezzo_value.''.$discounttype.'</span>',
'#suffix' =>'</p>' ,
'#submit' =>array('usercp_form_submit'),
);

Форма отображается правильно, как вы можете видеть на этом рисунке: http://cl.ly/3D2C2h1t1m2B351L1T31 (значения N и R рядом с символом € на самом деле являются значениямипеременная $ discounttype, просто для ее проверки)

Каждый белый прямоугольник в основном является экземпляром вышеупомянутой формы.

Мне нужно передавать значение переменной $ discounttype при каждой отправке, поэтому я решил установить ее в качестве заголовка кнопки отправки.

Моя проблема в том, что в самой функции отправкиЯ не могу получить доступ к значению атрибута title, содержащегося в массиве #attributes.Главным образом потому, что, вероятно, я не знаю правильный синтаксис.

Пока я пробовал

$foo = $form_values['attributes']['title'];
$foo = $form_values['#attributes']['title'];
$foo = $form_values['attributes']['#title'];

И любую другую возможную комбинацию, но, вероятно, я просто делаю это неправильно.Это действительно час, когда я ползу по сети в поисках ответа, но я придумал что-нибудь.

Ответы [ 2 ]

0 голосов
/ 15 июня 2011

Во-первых, вы должны указать идентификатор элемента формы. таким образом, вы можете получить доступ к кнопке отправки по $form_state["cart_".$index]['#attributes']['title']; но на самом деле, почему бы вам не использовать скрытое поле ('#type' => 'hidden')?

0 голосов
/ 14 июня 2011

Я считаю, что вы должны использовать $form_state вместо $form_values. Попробуйте это:

$foo = $form_state['clicked_button']['#attributes']['title'];

Я рекомендую использовать модуль Devel при разработке для Drupal. Это чрезвычайно полезный инструмент во время разработки, позволяющий видеть все запросы, выполняемые при загрузке страницы, останавливать перенаправление на отладку и намного больше .

...