2009-08-10 40 views
0

我有一个绝对不是表单的页面,但我需要使用一些回调函数从外部源和显示加载数据(例如校园及其他辅助功能信息)。Drupal模块开发hook_menu()对于半静态页面

我需要的是一个登陆列表页面(列出所有建筑物)和一个'查看个人建筑物'页面。另外,我还有一个页面,您可以在其中输入学生证并查看测试程序信息。最后我有一个基本上是一个表格的页面(我以前成功完成了这个页面)。

现在,我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菜单项甚至没有显示出来,甚至发送URL /access到重定向循环(让我觉得它传递这个ID将它发送到视图特定函数,当ID不存在时重定向到/access)。

任何人都可以告诉我我做错了什么或我需要做什么来支持2个主题页:/access/access/%building url模式?

+1

你还有'building_load()'函数来填充'%building'吗? – ceejayoz 2009-08-10 21:20:49

+0

@ceejayoz我没有'building_load()'函数,因为我只是在回调函数中加载它。如果我将它放到'%'或创建'building_load()'会更好吗? – dcousineau 2009-08-10 21:57:44

回答

1

当你有一个你想要对url进行操作的函数时,你只能在url中使用%name而不是%。 Drupal在用户和节点上遍地开展,这非常聪明,因为只有一个地方需要代码来加载用户或节点,但它在很多地方都可以使用。在这种情况下,我敢打赌,制作一个函数来加载建筑物有点矫枉过正。另一方面,这样做的好处是,如果没有找到任何对象,就可以进行404处理。最好的解决方案的确归结于你如何处理不存在的建筑物。你甚至可以让你的'校园无障碍指南'功能处理404,这将使两个选项大致相同。我会为你做任何最简单的事情。

+0

现在,当我将其更改为'$ items ['access /%'] = // ...'它仍然不再显示在菜单列表中... – dcousineau 2009-08-11 14:50:46

+0

没关系,我添加了一个新的菜单条目,只是访问(现在可以访问和访问/%指向它们各自的功能)。它现在有效! – dcousineau 2009-08-11 14:58:11