代码之家  ›  专栏  ›  技术社区  ›  dcousineau

用于半静态页面的Drupal模块开发hook_menu()。

  •  0
  • dcousineau  · 技术社区  · 15 年前

    我有一个页面绝对不是表单,但我需要使用一些回调函数从外部源加载数据并显示(例如校园建筑及其可访问性信息的列表)。

    我需要的是一个登录列表页面(列出所有建筑)和一个“查看单个建筑”页面。此外,我还有一个页面,您可以在其中输入学生ID并查看有关测试程序的信息。最后,我有一个基本上是一个表单的页面(我以前成功地做过)。

    现在,我 建筑清单工作,但我做了一个小改动,它停止工作!

    当前我的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 URL可以正确显示所有建筑和 /access/12345 将正确显示ID 12345的单个记录。

    现在 access/%building 菜单项甚至没有显示甚至发送URL 访问 进入一个重定向循环(让我觉得它正在传入 某物 对于将其发送到重定向到的特定于视图的函数的ID 访问 当ID不存在时)。

    有人能告诉我我做错了什么或者我需要做什么来支持2个主题页面:A 访问 /access/%building URL模式?

    1 回复  |  直到 15 年前
        1
  •  1
  •   googletorp    15 年前

    当您有一个要对URL执行操作的函数时,您应该只在URL中使用%name而不是%Drupal使用用户和节点在所有地方都这样做,这是非常聪明的,因为只有一个地方需要代码来加载用户或节点,但是它在很多地方得到了使用。在这种情况下,我敢打赌让一个函数来加载这个建筑有点过分了。另一方面,这样做的好处是,如果找不到对象,就可以得到404处理。最好的解决方案实际上取决于你想要如何处理那些不存在的建筑。你甚至可以让你的“校园无障碍指南”功能处理404,这将使两个选项或多或少相等。我会选择你最容易做的。