Drupal получает параметры из URL в форме редактирования и заполняет форму - PullRequest
2 голосов
/ 01 июня 2011

У меня есть таблица сотрудников с полями, такими как идентификатор, имя, возраст и зарплата.

Я показываю список имен сотрудников в моем пользовательском модуле, и когда я нажимаю на имя сотрудника, я должен показать форму редактирования этого сотрудника.

Имена сотрудников получают ссылку, например:

<a href='".$base_url."/my_module/edit/".$employee->id."'>

и соответствующий путь меню настроен как:

$items['my_module/edit/%'] = array(
        'title' => t('My form'),
        'description' => t('Edit employee'),
        'page callback' => 'my_module_edit',
        'access arguments' => array('access content'),
        'access callback' => TRUE,        
        'type' => MENU_CALLBACK,
    );

И когда я нажимаю на 5-м имени сотрудника, URL будет: .... / my_module / edit / 5

Итак, теперь мои вопросы:

  1. Как я могу получить id (5) сотрудника из URL в моем my_module_edit функция?
  2. Как показать форму редактирования сотрудника, заполнив поля (путем запроса идентификатора)?

Ответы [ 3 ]

3 голосов
/ 01 июня 2011

Для вопроса 2: Вы немного перепутали, вы не создаете пользовательский пункт меню «обратный вызов страницы» для форм, вы должны использовать «drupal_get_form» в качестве «обратного вызова страницы» с именем вашей формы () функция (my_module_employee_form) в качестве «аргументов страницы».

function my_module_menu() {
  $items['my_module/employee/edit/%'] = array(
     'title' => t('Edit employee'),
     'page callback' => 'drupal_get_form',
     'page arguments' => array('my_module_employee_form', 3),
     'access arguments' => array('administer my_module'),
     'type' => MENU_CALLBACK,
   );
 }

function my_module_employee_form() {
  ... read database and generate form..
}

function my_module_employee_form_submit($form_id, &$form) {
  ... read form and update database ...
}

Затем в функции my_module_employee_form () вы генерируете форму и заполняете ее, а в my_module_employee_form_submit () вы читаете значения обратно и сохраняете их в базе данных.

1 голос
/ 01 июня 2011

Для вашего первого вопроса вы можете получить аргументы, переданные обратному вызову, используя arg (0), arg (1), arg (2) и т. Д. ...

<a href='".$base_url."/my_module/edit/".$employee->id."'>

Для этого href arg(0) == 'my_module', arg (1) == 'edit', arg (2) == '5', посмотрите документацию arg () .

Вы также можете проанализировать строку запроса самостоятельно, обратившись к переменной $ _GET ['q'].

Для вашего второго вопроса, если ваша таблица сотрудников является таблицей Drupal, вы можете просто сделать ссылкуизменить ссылку на узел Drupal, например, href = "node / 5 / edit".Если это пользовательская таблица, вам нужно будет создать собственную форму с помощью hook_form ()

1 голос
/ 01 июня 2011
$request_parts = explode('/', $_SERVER['REQUEST_URI');
$employee_id = intval(array_pop($request_parts));

Это ваш вопрос № 1.Не уверен, что понимаю # 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...