2012-06-19 24 views
11

如何在我的drupal菜单项中设置一个页面参数作为可选的页面参数?Drupal hook_menu实现中的可选参数

$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没有第三个参数,我会收到错误未找到页。如何将第三个参数设置为可选参数?

谢谢!

回答

18

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

$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; 
} 

希望这有助于...穆罕默德。

+0

感谢它的工作。我有一个题目参数不再有效的问题。 –

+0

增加了比。请尝试一下,让我知道它是否有效。 –

+0

如果您没有将任何参数传递给回调函数,将会发出警告。 – JCharette

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) 
); 

那么这将为像activities_list /富一个URL工作,但如果你再有一个URL像activities_list /富/酒吧你仍然可以得到bar在页面回调中的值,因为它仍然通过'页面参数'=>数组(1,2)传递给该函数。

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