2012-06-19 28 views
11

Làm cách nào tôi có thể đặt một trong các đối số trang trong mục menu drupal của tôi làm đối số trang tùy chọn?Đối số tùy chọn trong thực thi hookupmenu Drupal

Tôi có

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

Nếu tôi gọi activities_list/76 ví dụ mà không có một số thứ ba tôi sẽ nhận được một trang không tìm thấy lỗi. Làm thế nào tôi có thể đặt tham số thứ ba làm tham số tùy chọn?

Cảm ơn!

Trả lời

18

Dễ dàng hơn bạn nghĩ :). Không đặt bất kỳ đối số nào trong đường dẫn của bạn và chỉ chuyển chúng tới hàm "gọi lại trang" của bạn.

$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'), 
); 

Và chức năng trang callback sẽ trông như thế này:

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

Bạn có thể thay đổi tiêu đề trang bằng cách sử dụng đoạn mã sau. (Chưa được kiểm tra, vui lòng cho tôi biết nếu nó hoạt động):

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

Hy vọng điều này sẽ giúp ... Muhammad.

+0

Cảm ơn nó đã hoạt động. Tôi gặp vấn đề khi đối số tiêu đề không còn hoạt động nữa. –

+0

Đã thêm giải pháp cho hơn. Vui lòng thử nó và cho tôi biết nếu nó hoạt động. –

+0

Điều này sẽ ném một cảnh báo nếu bạn không chuyển bất kỳ đối số nào cho hàm gọi lại. – JCharette

5

Tôi không nghĩ bạn có thể. Nếu bạn đã làm điều này thay vì chỉ với một ký tự đại diện:

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

này sau đó sẽ làm việc cho một URL như activities_list/foo, nhưng nếu sau đó bạn đã có một URL như activities_list/foo/bar bạn vẫn có thể nhận được giá trị của thanh trong trang gọi lại vì nó vẫn được chuyển đến hàm đó theo 'đối số trang' => mảng (1,2).

Hoặc cách khác bạn có thể gọi bằng cách sử dụng arg (2) trong gọi lại trang của bạn.

Các vấn đề liên quan