Drupal7 form表单二次开发要点与实例
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等。
编程语言
- Drupal7 form表单二次开发要点与实例
- Angularjs cookie 操作实例详解
- 利用JavaScript对中文(汉字)进行排序实例详解
- 解析如何在sqlserver代理中配置邮件会话
- ashx介绍以及ashx文件与aspx文件之间的区别
- JavaScript实现解析INI文件内容的方法
- php获得用户ip地址的比较不错的方法
- js实现的全国省市二级联动下拉选择菜单完整实例
- vue拦截器Vue.http.interceptors.push使用详解
- vue完成项目后,打包成静态文件的方法
- php分页查询mysql结果的base64处理方法示例
- 微信小程序开发之实现自定义Toast弹框
- 微信小程序合法域名配置方法
- Access 开发人员常犯错误大全
- PHP统计目录大小的自定义函数分享
- JS删除数组里的某个元素方法