Drupal7 form表单二次开发要点与实例

网络编程 2025-03-25 00:01www.168986.cn编程入门

Drupal 7表单二次开发详解与实例分享:解决表单提交后的跳转问题

你是否在开发Drupal 7 custom module时,经常遇到表单提交后的跳转或重载问题?这篇文章将为你汇总三个主要要点,并给出具体实例,帮助你轻松解决这些问题。

一、Form表单的redirect(跳转)到一个页面

在Drupal 7中,你可以通过设置$form_state['redirect']的值来实现表单提交后的跳转。这个值可以是字符串或数组,通过url生成跳转地址。例如:

```php

$form_state['redirect'] = array('node/123', array('query' => array('foo' => 'bar'), 'fragment' => 'baz');

```

页面将会跳转到node/123?foo=barbaz。如果你只设置`$form_state['redirect'] = 'node/123'`,页面将会跳转到node/123。如果不指定$form_state['redirect']的值,默认跳转到当前页面。

二、Form表单destination(目的地)的处理

在Drupal中,如果url路径中存在destination参数,页面会直接跳转到destination所指向的链接。这在某些情况下可能会导致问题,比如在表单的多个按钮提交后,本应跳转的页面被destination参数改变。

为了解决这个问题,你可以在form的submit函数中,通过判断是否存在destination参数来做出相应的处理。例如:

```php

if (isset($_GET['destination'])) {

$form_state['redirect'] = array('next_step_page_url', array('query' => drupal_get_destination()));

unset($_GET['destination']);

}

```

这个方法可以重新定义url并继续传递destination,同时删除$_GET中的destination参数。

三、Form表单实现multiple steps多个步骤,Form表单重载及值的获取

在开发多步骤的表单时,你可能会遇到表单重载和获取表单提交值的问题。这些问题可以通过设置$form_state['rebuild']为TRUE并在表单定义中获取$form_state['storage']中的值来解决。例如:

```php

if ($form_state['values']['op'] == t("Next Step")) {

$form_state['rebuild'] = TRUE;

$form_state['storage']['users'] = $form_state['values']['users'];

}

```

在表单的定义中,你可以通过$form_state['storage']['users']获取到表单提交的值。

以上是一些常见的Drupal 7表单二次开发要点与实例分享,希望对你有所帮助。如果你需要更深入的了解或有其他问题,欢迎随时向我提问。参考的Drupal 7相关API函数包括:drupal_redirect_form、drupal_goto、drupal_get_destination等。

上一篇:Angularjs cookie 操作实例详解 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by