drupal ctools多步节点形式

时间:2014-02-28 12:26:14

标签: ajax drupal modal-dialog drupal-ctools

我用多步like this构建了一个ctools模态表单, 我已经构建了一个ctools模态节点like this

酷!但现在我想要一个ctools多步模态节点形式。是的,我可以通过Form API渲染所有字段,挂起所有验证和&自定义小部件,然后编写我自己的提交处理程序,但为什么在节点表单已经为我做这件事时呢?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我明白了。诀窍是将节点加载到$ 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');