Php drupal形式动作
我创建了一个表单,如:Php drupal形式动作,php,forms,drupal,Php,Forms,Drupal,我创建了一个表单,如: function create_custom_form($form, &$form_state) { $form['#action'] = "#"; .... } function create_custom_form_validate($form, &$form_state) { .... } function create_custom_form_submit($form, &$form_state)
function create_custom_form($form, &$form_state) {
$form['#action'] = "#";
....
}
function create_custom_form_validate($form, &$form_state) {
....
}
function create_custom_form_submit($form, &$form_state) {
....
if(..)
drupal_goto('abc');
else
drupal_goto('xxx');
}
当我在开始行动之前和阅读我的函数之后提交此表单时。。。如何绕过操作表单并只读“提交”函数?不要使用,因为可能会有更多的“提交”回调要执行。该功能将中断这些操作
相反,使用$form_state['redirect']=…
函数create\u custom\u form\u submit($form,&$form\u state){
....
如果(…)
$form_state['redirect']='abc';
其他的
$form_state['redirect']='xxx';
}
由于此函数具有相同的表单ID(create\u custom\u form
)-添加了单词“\u submit”,则此函数将自动执行,因此无需向表单中添加任何提交回调
如果您希望在提交时执行一个附加函数,那么应该按照Hamza的建议执行,只有附加函数会有不同的名称。e、 g
函数创建自定义表单($form,&$form\u状态){
$form['#action']=“#”;
....
//在发生任何重定向之前,向call添加任何其他回调
$form['#submit'][]=“创建_自定义_表单_附加_提交_回调”;
$form['#submit'][]=。。。
}
函数create_custom_form_additional_submit_回调($form,&$form_state){
//在重定向之前做些什么
...
}
在上述示例中:
create\u custom\u form\u additional\u submit\u callback
(因为它与附加的“\u submit”同名)create\u custom\u form\u submit
将执行,并且只有当它们都完成时才会执行重定向。通过
$form['submit']=array('create_custom_form_submit')向提交按钮添加处理程序代码>。我尝试使用$form\u state['redirect']但是我遇到了同样的问题。。。如果我在这个伪页面中使用伪页面drupal重定向来更改表单操作,并且没有遵循重定向或转到。。。我认为在转到操作之前和检查之后#提交…如果您将表单操作设置为散列“#”,页面将提交给自己,但是服务器和drupal将永远看不到您的“#”,即使它在URL中,它对服务器来说不是可见字符。因为Drupal正在寻找一个它永远找不到的,所以你的提交钩子永远不会触发。如果您希望检测表单是否由页面上的其他脚本提交,那么为什么不将操作设置为“?submitted=1”