作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
首先我们实现删除按钮的提交处理函数breadcrumb2_form_submit_delete:
/**
* Breadcrumb form submit handler for the delete button.
*/
function breadcrumb2_form_submit_delete($form, &$form_state) {
$breadcrumb = $form_state['breadcrumb'];
$form_state['redirect'] = 'breadcrumb/' . $breadcrumb->bid . '/delete';
}
在这里,当删除一个面包屑时,我们直接将它重定向到了对应的删除页面。对应路径的菜单项是这样定义的:
$items['breadcrumb/%breadcrumb2/delete'] = array(
'page callback' => 'drupal_get_form',
'page arguments' => array('breadcrumb2_delete_confirm_form', 1),
'access arguments' => array('administer breadcrumbs'),
'weight' => 1,
'title' => 'Delete',
'type' => MENU_LOCAL_TASK,
'context' => MENU_CONTEXT_INLINE,
'file' => 'breadcrumb2.admin.inc',
);
breadcrumb2_delete_confirm_form是一个确认表单,我们把它的定义添加到breadcrumb2.admin.inc里面:
/**
* Confirm form for deleting a profile.
*/
function breadcrumb2_delete_confirm_form($form, &$form_state, $breadcrumb) {
$form_state += array('breadcrumb' => $breadcrumb);
$confirm_question = t('Are you sure you want to delete breadcrumb for path %path?', array('%path' => $breadcrumb->path));
return confirm_form($form, $confirm_question, 'breadcrumb/' . $breadcrumb->bid);
}
确认表单,采用了confirm_form,让Drupal系统来生成这个表单。最后我们来看一下,确认表单提交后的代码:
function breadcrumb2_delete_confirm_form_submit($form, &$form_state) {
$breadcrumb = $form_state['breadcrumb'];
$breadcrumb->delete();
drupal_set_message(t('Deleted breadcrumb for path %path.', array('%path' => $breadcrumb->path)));
$form_state['redirect'] = 'admin/structure/breadcrumbs';
}
这里面的代码,主要借鉴了Profile2里面的profile2_page.inc文件里面的代码。