Drupal:编辑/删除不适用于自定义模块

时间:2013-10-14 13:01:36

标签: php drupal drupal-7

我是drupal的新手。我正在创建一个名为“course”的自定义模块。我已经阅读了有关创建自定义模块的钩子列表。所以,我的问题是,我无法看到模块配置的编辑表单,但我可以做添加管理及其工作正常。 我使用了现有的联系模块作为参考。

以下是我的代码: 在 course.module

function course_menu() { 
  $items['admin/structure/course'] = array(
    'title' => 'Academy\'s courses',
    'description' => 'Create a system contact form and set up categories for the form to use.',
    'page callback' => 'course_list',
    'access arguments' => array('administer contact forms'),
    'file' => 'course.admin.inc',
  );
  $items['admin/structure/course/add'] = array(
    'title' => 'Add Courses',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('course_edit_form'),
    'access arguments' => array('administer contact forms'),
    'type' => MENU_LOCAL_ACTION,
    'weight' => 1,
    'file' => 'course.admin.inc',
  );
  $items['admin/structure/course/edit/%course'] = array(
    'title' => 'Edit Courses',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('course_edit_form',4),
    'access arguments' => array('administer contact forms'),
    'file' => 'course.admin.inc',
  );

  return $items;
}

并在 course.admin.inc

function course_edit_form($form, &$form_state, array $course = array()) {
  // If this is a new course, add the default values.

  $course += array(
    'name' => '', 
    'course_id' => NULL,
  );

  $form['name'] = array(
    '#type' => 'textfield',
    '#title' => t('Course Name'),
    '#maxlength' => 255,
    '#default_value' => $course['name'],
    '#description' => t("Example: 'Available Course Names'."),
    '#required' => TRUE,
  );

  $form['course_id'] = array(
    '#type' => 'value',
    '#value' => $course['course_id'],
  );
  $form['actions'] = array('#type' => 'actions');
  $form['actions']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save'),
  );

  return $form;
}

function course_edit_form_submit($form, &$form_state) {

  if (empty($form_state['values']['course_id'])) {
        db_insert('courses') // Table name no longer needs {}
        ->fields(array(
          'name' => $form_state['values']['name'],
          'course_url' => $form_state['values']['name']
        ))
        ->execute();
    //drupal_write_record('courses', $form_state['values']);
  }
  else {
     db_insert('courses') // Table name no longer needs {}
        ->fields(array(
          'name' => $form_state['values']['name'],
          'course_url' => $form_state['values']['name']
        ))
        ->condition('course_id', $form_state['values']['course_id'])
        ->execute();
    //drupal_write_record('courses', $form_state['values'], array('course_id'));
  }

  drupal_set_message(t('Course %name has been saved.', array('%name' => $form_state['values']['name'])));
  watchdog('contact', 'Course %name has been saved.', array('%course' => $form_state['values']['name']), WATCHDOG_NOTICE, l(t('Edit'), 'admin/structure/course/edit/' . $form_state['values']['course_id']));
  $form_state['redirect'] = 'admin/structure/course';
}

我无法找到确切的问题,为什么添加工作但不能编辑&删除?帮助我。

下面的图片告诉你我究竟要求的是什么(红色标记)。 enter image description here

如果有任何其他需要,请告诉我。

2 个答案:

答案 0 :(得分:0)

在猜测我会说由于课程加载功能(未列出)的问题,编辑路线不匹配。尝试转储该方法的结果。课程实体是否在您的模块中定义?如果是这样,那么约定是在变量名前加上模块名,并实现相应的名称钩。

这里有一个更好的描述:https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu/7 跳转到“Auto-Loader Wildcards”部分。

答案 1 :(得分:0)

尝试清除缓存/ admin / config / development / performance