开发者

Accessing values in Drupal's $form_values from a custom Drupal Form

EDIT: Seems like my "array-crawling" skills were not enough, thanks for the suggestions. Moreover, I found out that I was checking the $discounttype condition with a plain "=" instead of a double "==". I guess banging your head on the same block of code for 3 hours makes you dumb and miss the most obvious errors.

First thing first, I'm on Drupal 6.

I have created a form with the following markup:

$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'),
);

The form renders correctly, as you can see from this pictu开发者_如何学运维re: http://cl.ly/3D2C2h1t1m2B351L1T31 (the N and R values beside the € symbol are actually the value of the $discounttype variable, just for checking it)

Each white box is basically an istance of the beforementioned form.

I need to pass the value of the $discounttype variable on each submit, so I decided to set it as the title of the submit button.

My problem is that in the submit function itself I cannot access the value of the 'title' attribute contained in the #attributes array. Mainly because probably I don't know the right syntax.

So far I've tried

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

And every other possible combination, but probably I'm just doing it wrong. It's actually an hour that I'm crawling the web searching for an asnwer but I came up with anything.


first, you should mention form element ID. so, you can access submit button by $form_state["cart_".$index]['#attributes']['title']; but actually, why don't you use hidden field ('#type' => 'hidden') ?


I believe you have to use $form_state instead of $form_values. Give this a try:

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

I recommend using the Devel module while developing for Drupal. It is an extremely helpful tool during development, allowing you to see all the queries run when a page loads, stop a redirect to debug, and much more.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜