Непонятна логика работы Wildcard Loader Arguments

Главные вкладки

Аватар пользователя Garnet Garnet 12 января 2011 в 23:37

Всем здоровья.
Вот попробовал создать пункты меню в ноде с помощью Wildcard Loader Arguments.

function mymodule_menu(){

$items['user/%user/mymodule'] = array(
        'title' => 'Some Title',
        'page callback' => 'mymodule_user_page',
        'page arguments' => array(1),
        'type' => MENU_LOCAL_TASK,
        );

return $items;
}

function mymodule_user_page($var){
//реализация
}

В общем то всё работает, но только если в ключе $items %user или просто %, причём в первом случае в обработчик передаётся глобальная $user, а во втором просто id. Как только пытаюсь подставить какую-то другую переменную - пункт перестаёт отображаться. При этом менял название обработчика, и _page на _load как в документации но тоже не помогает. Может зря заморачиваюсь, но всё таки интересно в чём же дело.

Комментарии

Аватар пользователя xxandeadxx xxandeadxx 13 января 2011 в 0:00

"Garnet" wrote:
Как только пытаюсь подставить какую-то другую переменную - пункт перестаёт отображаться

например? это не переменная а префикс функции до _load, например если подставить %mymodule и создать функцию mymodule_load, то в page callback уйдёт результат этой функции

Аватар пользователя Garnet Garnet 13 января 2011 в 14:05

xxandeadxx
Нет, не уйдёт, просто пункт меню не будет отображаться(по крайней мере в 6.х. так). В принципе всё понятно - для адресации параметра в обработчик используется просто %, а %user %node и т.д. это стандартные подстановочные переменные, которые можно определять самостоятельно как указано в статье.

Аватар пользователя xxandeadxx xxandeadxx 13 января 2011 в 16:40

"Garnet" wrote:
Нет, не уйдёт

попробуйте прежде чем говорить

"Garnet" wrote:
а %user %node и т.д. это стандартные подстановочные переменные

это не переменные, а имена функций без суфикса _load. советую внимательней читать доки