Mar*_*k B 1 drupal drupal-forms
我已经建立了一个"快速链接"下拉选择框为我的基于Drupal的Web应用程序.该选择框被实现为标准Drupal的形式,出现在网站中的所有网页.当用户选择一个选项,并提交表单,我想将用户重定向到相应的页面,而是让他们回到原来的页面时,他们已经完成.
例如,用户是在节点/ 5,并且选择一个快速链接其中他们带到另一种形式.当他们完成此表单时,我希望将它们返回到node/5.
我已经在系统的其他部分使用drupal_get_destination将?destination = node/5 querystring参数附加到目标表单来实现这一点,这很好用.但是,在我的快速链接表单提交处理程序中,我设置了form_state ['redirect']来设置目标页面,如果我添加了?destination =参数,它会被URL编码,因此在我的目标时不会被选中表格已提交.
function dh_seo_quick_links_form_submit($form, &$form_state) {
$form_state['redirect'] = $form['#link_targets'][$link].'?'.drupal_get_destination();
}
Run Code Online (Sandbox Code Playgroud)
我完全走错了路吗?这种重定向甚至可能吗?我可以直接使用$ _REQUEST变量做一些聪明的事吗?
Ben*_*ley 11
这是Drupal 7的一个很好的解决方案,允许您使用相对路径:
$form_state['redirect'] = array(
'node/[node number]',
array(
'query' => array(
'variable_name' => 'value',
),
'fragment' => 'hash_fragment'
),
);
Run Code Online (Sandbox Code Playgroud)
此代码创建以下URL:
..?node/[node number]&variable_name=value#hash_fragment
Run Code Online (Sandbox Code Playgroud)
这使您可以在利用Drupal框架的同时获得很大的灵活性.
好的 - 我已经解决了.似乎如果你在$ form_state ['redirect']中设置一个相对URL,它会被URL编码,但绝对URL不会:
$form_state['redirect'] = 'myform?'.drupal_get_destination();
Run Code Online (Sandbox Code Playgroud)
重定向到myform%3Fdestination%3Dnode%252F5
global $base_url;
$form_state['redirect'] = $base_url.'/myform?'.drupal_get_destination();
Run Code Online (Sandbox Code Playgroud)
重定向到myform?destination = node/5,这就是我想要的.
| 归档时间: |
|
| 查看次数: |
9150 次 |
| 最近记录: |