0

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

下面是我的代码:在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';
}

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

下图告诉你我到底要什么(红色标记)。 在此处输入图像描述

如果在这方面需要任何额外的东西,请告诉我。

4

2 回答 2

0

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

这里有一个更好的描述它应该如何工作:https ://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu/7 跳转到“自动加载器通配符”部分.

于 2013-10-14T13:20:24.067 回答
0

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

于 2013-10-14T14:02:43.107 回答