我遇到了Drupal表单的问题。想不到解决问题的方法,我想知道是否有任何大脑能解决我的问题。如何将我的Drupal表单提交给任何其他内部页面?
我有这样的形式:
<?php
function mymodule_myform(){
$form['#action'] = url('search/cards');
$form['whatwhere']['what'] = array(
'#type' => 'textfield',
'#title' => t('What?'),
'#maxlength' => 80,
'#required' => TRUE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Search'),
);
}
?>
其中,你可以看到,应该提交的所有信息,以www.example.com/search/cards
。 这确实会将我的表单提交到所需的URL。然而,如果没有mymodule_menu()
钩定义路径,它将会在404
结束所以我补充一下:
<?php
function mymodule_menu(){
$items['search/%'] = array(
'title' => t('Search Results'),
'page callback' => 'mymodule_main',
'access arguments' => array('access content'),
'file' => 'mymodule.inc',
);
}
?>
而且,在mymodule.inc
文件我会创造我的功能mymodule_main()
:
<?php
function mymodule_main(){
print_r($_POST);
die(); // ### Note the die(); ###
return 'Just searched: '. $_POST['what'];
}
?>
如果我将它完全保持原样,当然PHP会在屏幕上打印我的表单信息后立即结束脚本执行。都好!
但是,如果我删除die()
,似乎函数被调用了两次,第二次调用没有$ _ POST填补了..似乎mymodule_menu()
覆盖以某种方式任何形式提交处理程序做...
现在的问题是:如何在没有404的情况下将我的表单提交到任何其他内部页面并保留我的表单信息?
在此先感谢。
没有。事实并非如此,我有一个独特的模块名称。 'Search'只是在这个示例上下文中使用。不管怎么说,还是要谢谢你。 – acm 2010-10-20 12:28:24