我有一个绝对不是表单的页面,但是我需要使用一些回调函数来加载来自外部源和显示的数据(例如校园内的建筑物列表及其可访问性信息)。
我需要的是登陆列表页面(列出所有建筑物)和“查看单个建筑物”页面。此外,我有一个页面,您可以在其中输入您的学生ID并查看有关测试程序的信息。最后我有一个基本上是一个表单的页面(我在过去成功之前已经完成了)。
现在,我 HAD 建筑物清单正常工作,但我做了一个小改动,它停止了工作!
目前我的hook_menu()函数如下所示:
<?php
/**
* Implementation of hook_menu()
*/
function disability_menu()
{
$items = array();
// Ignore me, shell
$items['quickreg'] = array(
'title' => 'Quick Registration',
'description' => t(''),
'page callback' => 'drupal_get_form',
'page arguments' => array(),
'file' => 'disability.quickreg.view.inc',
'access arguments' => array('access quick registration system'),
'type' => MENU_SUGGESTED_ITEM,
);
$items['tests/status'] = array(
'title' => 'Test Status Results',
'description' => t('Check on the status of your tests'),
'page callback' => 'disability_view_testing_status',
'page arguments' => array(),
'file' => 'disability.tests.view.inc',
'access arguments' => array('access test check information'),
'type' => MENU_CALLBACK,
);
$items['tests'] = array(
'title' => 'Testing Services',
'description' => t('Check on the status of your tests'),
'page callback' => 'disability_view_testing',
'page arguments' => array(),
'file' => 'disability.tests.view.inc',
'access arguments' => array('access test check information'),
'type' => MENU_SUGGESTED_ITEM,
);
$items['access/%building'] = array(
'title' => 'Campus Accessibility Guide',
'description' => t('A summary list of detailed accessibliity information about each building on the A&M campus'),
'page callback' => 'disability_view_access',
'page arguments' => array(1),
'file' => 'disability.access.view.inc',
'access arguments' => array('access building access information'),
'type' => MENU_SUGGESTED_ITEM,
);
return $items;
}
在进行一些更改之前,我必须使“校园辅助功能指南”的菜单项正确显示(当然启用后)。 /access
网址可以正常显示所有建筑物的列表,而/access/12345
会正确显示ID#12345的单个记录。
现在,access/%building
菜单条目甚至没有显示,甚至将网址/access
发送到重定向循环中(让我认为它正在传递某些内容以获取ID将其发送到视图特定功能,当ID不存在时重定向到/access
。
任何人都可以告诉我我做错了什么或我需要做些什么来支持2个主题页面:/access
和/access/%building
网址模式?
答案 0 :(得分:1)
当您拥有要对网址执行操作的功能时,您应该只在网址中使用%name而不是%。 Drupal在用户和节点的所有地方都做到这一点,这非常聪明,因为你只有一个地方需要有代码来加载用户或节点,但它在很多地方都被使用了。在这种情况下,我打赌制作一个加载建筑物的功能有点过分。另一方面,如果没有找到对象,那么这样做的好处是,您可以获得404处理。最好的解决方案实际上取决于您希望如何处理不存在的建筑物。您甚至可以使“校园无障碍指南”功能处理404,这将使两个选项或多或少相等。我会选择最容易做到的事情。