我想在 drupal 创建表单中添加一个自定义按钮,因此如果用户单击它而不是提交按钮,则创建对象的工作流状态将更改为另一个状态(不是默认的第一个状态) 有什么建议吗?
【问题讨论】:
欢迎各位兄弟 发布技术文章
这里的技术是共享的
如果是 #type为button,它依然会提交,这个我就不懂了
$form['button'] = array('#type' => 'button', '#value' => t('查询'));
我的方法是用 #markup (或者 #items也行吧 搜索本网站 " d7 form api 有大大用 ")
$form['button'] = array(
'#markup' => '<button type="button" class="preview_permission_group">预览权限组</button>',
);
按钮元素除了属性#executes_submit_callback默认为FALSE以外,其它属性与提交按钮元素完全相同。属性#executes_submit_callback告诉Drupal是否需要处理表单,为TRUE时处理表单,为FALSE时则简单的重新呈现表单。和提交按钮元素一样,可以将特定的验证和提交函数直接分配给这个按钮元素。
来自 http://www.thinkindrupal.com/node/1156
我想在 drupal 创建表单中添加一个自定义按钮,因此如果用户单击它而不是提交按钮,则创建对象的工作流状态将更改为另一个状态(不是默认的第一个状态) 有什么建议吗?
【问题讨论】:
要修改由drupal 生成的默认表单,您必须在模块中添加一个form_alter 挂钩。你可以通过定义一个类似modulename_form_alter
的函数来实现它,假设你的模块名称是modulename
。 drupal 系统传递了form
数组和form_state
数组,您可以使用它们来覆盖默认行为。在你的情况下,完整的函数看起来像这样。
function modulename_form_alter(&$form, $form_state, $form_id) {
if($form_id == 'what you want') {
$form['buttons']['another_button'] = array(
'#type' => 'submit',
'#value' => 'Add to another state',
'#submit' => array('modulename_custom_form_submit')
);
}
}
function modulename_custom_form_submit($form, &$form_state) {
if($form_state['values']['another_button'] == 'Add to another state') {
//Do your thing
}
}
进行必要的修改后,您可以简单地提交到创建表单的默认提交操作。
来自 https://www.likecs.com/ask-6327457.html