You are here

7.15 删除面包屑实体

admin 的头像
Submitted by admin on 星期三, 2015-09-02 08:23

作者:老葛,北京亚艾元软件有限责任公司,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文件里面的代码。


Drupal版本: