Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php drupal形式动作_Php_Forms_Drupal - Fatal编程技术网

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

  • create\u custom\u form\u submit
    (因为它与附加的“\u submit”同名)

将执行,并且只有当它们都完成时才会执行重定向。

通过
$form['submit']=array('create_custom_form_submit')向提交按钮添加处理程序。我尝试使用$form\u state['redirect']但是我遇到了同样的问题。。。如果我在这个伪页面中使用伪页面drupal重定向来更改表单操作,并且没有遵循重定向或转到。。。我认为在转到操作之前和检查之后#提交…如果您将表单操作设置为散列“#”,页面将提交给自己,但是服务器和drupal将永远看不到您的“#”,即使它在URL中,它对服务器来说不是可见字符。因为Drupal正在寻找一个它永远找不到的,所以你的提交钩子永远不会触发。如果您希望检测表单是否由页面上的其他脚本提交,那么为什么不将操作设置为“?submitted=1”