【问题标题】:Accessing values in Drupal's $form_values from a custom Drupal Form从自定义 Drupal 表单访问 Drupal 的 $form_values 中的值
【发布时间】:2011-06-14 16:19:52
【问题描述】:

编辑: 似乎我的“数组爬行”技能还不够,感谢您的建议。 此外,我发现我正在使用普通的“=”而不是双“==”来检查 $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 变量的值,所以我决定将其设置为提交按钮的标题。

我的问题是,在提交函数本身中,我无法访问 #attributes 数组中包含的“标题”属性的值。主要是因为我可能不知道正确的语法。

到目前为止我已经尝试过

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

还有其他所有可能的组合,但可能我做错了。 实际上,我在网上爬了一个小时来寻找答案,但我想出了任何办法。

【问题讨论】:

    标签: drupal drupal-6 drupal-forms


    【解决方案1】:

    首先,您应该提及表单元素 ID。 因此,您可以通过$form_state["cart_".$index]['#attributes']['title']; 访问提交按钮 但实际上,你为什么不使用隐藏字段('#type' => 'hidden')?

    【讨论】:

      【解决方案2】:

      我相信你必须使用$form_state 而不是$form_values。试试这个:

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

      我建议在为 Drupal 开发时使用 Devel module。它是开发过程中非常有用的工具,可让您查看页面加载时运行的所有查询、停止重定向到调试以及更多

      【讨论】:

      • 感谢您的输入,我实际上是在使用 Devel 进行调试,查看数组值等,这就是我可以看到“标题”属性设置正确的地方。似乎我仍然无法从您提出的字符串中访问该值。我仍然不知道如何访问那个该死的数组。仍然感谢您的建议。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多