13

如何将我的 drupal 菜单项中的页面参数之一设置为可选页面参数?

我有

$items['activities_list/%/%']=array(
'title callback' => 'activities_list_title',
'title arguments' =>array(1),
'description' =>'All the Indicators divided by Coutry',
'page callback' => 'activities_list',
'access arguments' => array('access ppi'),
'page arguments' => array(1,2)
); 

例如,如果我在没有第三个参数的情况下调用 activities_list/76,我将收到一个找不到页面的错误。如何将第三个参数设置为可选参数?

谢谢!

4

2 回答 2

21

这比你想象的要容易:)。不要在您的路径中设置任何参数,只需将它们传递给您的“页面回调”函数。

$items['activities_list']=array(
  'title callback' => 'activities_list_title',
  'description' =>'All the Indicators divided by Coutry',
  'page callback' => 'activities_list',
  'access arguments' => array('access ppi'),
);

页面回调函数如下所示:

function activities_list($arg1, $arg2)
{
    // Your code goes here...
    drupal_set_title(activities_list_title($arg1, $arg2));
}

您可以使用以下代码更改页面标题。(未经测试,请让我知道它是否有效):

function activities_list_title($arg_1, $arg_2)
{
    $title = "";
    // Your code goes here
    return $title;
}

希望这会有所帮助……穆罕默德。

于 2012-06-19T14:09:36.123 回答
5

我不认为你可以。如果您只使用一个通配符执行此操作:

$items['activities_list/%']=array(
  'title callback' => 'activities_list_title',
  'title arguments' =>array(1),
  'description' =>'All the Indicators divided by Coutry',
  'page callback' => 'activities_list',
  'access arguments' => array('access ppi'),
  'page arguments' => array(1,2)
);

然后,这将适用于诸如活动列表/foo之类的 URL ,但是如果您有诸如活动列表/foo/bar之类的 URL,您仍然可以在页面回调中获取bar的值,因为它仍然通过“页面参数”传递给该函数=> 数组(1,2)

或者,您也可以在页面回调中使用arg(2)来调用它。

于 2012-06-19T08:49:09.277 回答