編集:私の「配列クロール」スキルが十分ではなかったようです。提案に感謝します。さらに、二重の「==」ではなく、単純な「=」を使用して $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 変数の値を渡す必要があるため、送信ボタンのタイトルとして設定することにしました。
私の問題は、submit 関数自体で、#attributes 配列に含まれる「タイトル」属性の値にアクセスできないことです。主な理由は、おそらく正しい構文がわからないためです。
これまで私は試しました
$foo = $form_values['attributes']['title'];
$foo = $form_values['#attributes']['title'];
$foo = $form_values['attributes']['#title'];
他のすべての可能な組み合わせですが、おそらく私のやり方が間違っているだけです。回答を探して Web をクロールしているのに実際には 1 時間かかりましたが、何か思いつきました。