我有一张员工表,其中包含id,姓名,年龄和薪水等字段。
我在自定义模块中显示员工姓名列表,当我点击员工姓名时,我必须显示该员工的编辑表格。
为员工姓名提供了一个链接,如:
<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个员工姓名时,网址将是: .... / my_module / edit / 5
所以现在我的问题是:
答案 0 :(得分:3)
对于问题2:你有点混淆了,你没有为表单创建一个自定义的“页面回调”菜单项,你应该使用'drupal_get_form'作为'page callback'和你的表单名称()函数(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 :(得分:1)
$request_parts = explode('/', $_SERVER['REQUEST_URI');
$employee_id = intval(array_pop($request_parts));
那是你的问题#1。不确定我理解#2
答案 2 :(得分:1)
对于第一个问题,您可以使用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()的文档。< / p>
您还可以通过访问$ _GET ['q']变量来解析自己的查询字符串。
对于第二个问题,如果您的员工表是Drupal表,您可以将链接作为Drupal节点的编辑链接,如href =“node / 5 / edit”。如果是自定义表格,则必须通过实施hook_form()
来创建自己的表单