Tem*_*ruk 4 forms ajax drupal drupal-7
我有mymodule_field_widget_form(),它创建一个自动完整的文本字段,以及3个自定义字段按钮.在2个按钮上,我使用调用自定义ajax命令的ajax回调函数.当函数执行进入任一按钮的回调函数时,$ form_state ['triggering_element']总是相同的,最后一个按钮(表单元素......?)是由上面的钩子创建的形式.我想获得实际触发回调的元素.有可能,此自定义字段不止一次添加到内容类型中,这就是重要的原因.自定义ajax命令创建一个jQuery ui对话框,其中包含iframe或纯HTML内容,具体取决于几个因素,因此我认为没有必要重新呈现触发按钮的整个表单.实际上在任何地方都没有重新渲染,也许这就是问题所在?
干杯
当函数执行进入任一按钮的回调函数时,$ form_state ['triggering_element']总是相同的,最后一个按钮
不幸的是,Drupal的表单API如何工作.如果表单上有多个提交按钮,有时您无法分辨哪个按钮被单击.
首先,请参阅Drupal.org上的这个答案,我认为这可能对您有所帮助:
查看表单设置代码.在您定义各种按钮的位置,请更改'#value'
为'#default_value'
.这将允许Drupal识别字段值(即表单提交值)可以更改,因此无论单击哪个按钮,它都不会固定为最后一个按钮的值.
如果这没有帮助,以下是一些可能有用的其他解决方案:
直接查看PHP的$_POST
数组,找出点击了哪个按钮.这有效,但违背了"Drupal Way".Drupal的表单API的重点是隐藏原始的PHP功能.但有时候这样做可能会有用.
将按钮分成不同的形式.这显然只有在您不需要同时提交任何其他字段时才有效.
在表单上创建一个隐藏字段,并在提交表单之前使用Javascript用所单击按钮的名称填充它.
希望有所帮助.
归档时间: |
|
查看次数: |
6635 次 |
最近记录: |