drupal ctools 多步节点表单
Posted
技术标签:
【中文标题】drupal ctools 多步节点表单【英文标题】:drupal ctools multi step node form 【发布时间】:2014-02-28 12:26:14 【问题描述】:我已经建立了一个多步骤的 ctools 模态表单like this, 我已经建立了一个 ctools 模态节点表单like this。
酷!但现在我想要一个 ctools 多步模态节点表单。是的,我可以通过 Form API 渲染所有字段,挂起所有验证和自定义小部件,然后编写我自己的提交处理程序,但是当节点表单已经为我这样做时,为什么还要麻烦呢?
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:我想通了。诀窍是将节点作为参数加载到 $form_state 中,然后有几种方法可以呈现表单(见下文)。
ctools_include('node.pages', 'node', '');
$form_state['build_info']['args'] = array($node);
$output = ctools_modal_form_wrapper('my_content_type_node_form', $form_state);
print ajax_render($output);
ctools_include('node.pages', 'node', '');
$form_state['build_info']['args'] = array($node);
$form = drupal_retrieve_form('my_content_type_node_form', &$form_state);
print ajax_render($output);
我想要这样做的原因是避免重新包含节点表单已经拥有的所有提交处理程序和验证。但是由于 ajax,如果您的表单中有文件上传,您还需要这个:
form_load_include($form_state, 'inc', 'node', 'node.pages');
【讨论】:
以上是关于drupal ctools 多步节点表单的主要内容,如果未能解决你的问题,请参考以下文章
Drupal 7 - 自定义模块:在节点提交中使用自定义表单输入