Комментарии 17
Отличная статья. После нее у меня не осталось вопросов по поводу роутинга в kohana.
+3
Новый роутинг стал мощнее, но менее наглядный. Было бы лучше, если бы они оставили возможность использовать старый роутер для простых роутов, но, при этом, для сложных дали использовать новый.
+3
Позволю себе несколько небольших дополнений:
1. Роутинг может быть откорректирован не только в bootstrap.php, но в принципе в любом месте приложения. В первую очередь это касается подключаемых модулей. Как мы помним, при подключении модуля ядро выполняет скрипт init.php, если он существует в папке модуля. ИМХО, тут самое место для специфических роутов данного модуля. Кроме того, модули подключаются раньше, чем выполняется дополнение дефолтного роута, так что они не будут им перекрыты (в отличие от роутов, указанных где-нибудь в контроллере).
2. Если какие-то контроллеры или методы должны быть скрыты от вызова в качестве основного УРЛ (как правило, это скрипты виджетов), существует очень простой способ проверки:
if ($this->request === Request::instance())
{
// это вызов из браузера (или из CLI)
}
else
{
// нас вызывали через HMVC
}
1. Роутинг может быть откорректирован не только в bootstrap.php, но в принципе в любом месте приложения. В первую очередь это касается подключаемых модулей. Как мы помним, при подключении модуля ядро выполняет скрипт init.php, если он существует в папке модуля. ИМХО, тут самое место для специфических роутов данного модуля. Кроме того, модули подключаются раньше, чем выполняется дополнение дефолтного роута, так что они не будут им перекрыты (в отличие от роутов, указанных где-нибудь в контроллере).
2. Если какие-то контроллеры или методы должны быть скрыты от вызова в качестве основного УРЛ (как правило, это скрипты виджетов), существует очень простой способ проверки:
if ($this->request === Request::instance())
{
// это вызов из браузера (или из CLI)
}
else
{
// нас вызывали через HMVC
}
+5
Немного обескураживает количество человек, которым статья не понравилась, что для технической статьи редкость. Не могу не спросить, что не так?
0
Спасибо. Очень полезно.
Но както фраза «Огромная просьба к знатокам украинского языка, воздержитесь. Все уже в курсе.» звучит не толерантно, я вот таки не воздержался и выразил автору благодарность.
А еще минусанул :P
Но както фраза «Огромная просьба к знатокам украинского языка, воздержитесь. Все уже в курсе.» звучит не толерантно, я вот таки не воздержался и выразил автору благодарность.
А еще минусанул :P
0
Спасибо за статью и модуль. А почему от системных наследуются классы в папке classes/exrequest, а уже от них классы в корне classes — это какой-то принцип модульности? Ведь получается лишний пустой уровень, почему бы не наследоваться сразу?
0
скажите, а как в примере 1 сделать так чтобы «wiget» не было чувствительным к регистру?
0
Отличная статья, спасибо большое автору. Еще хочется :)
0
Спасибо, как раз то что я искал.
А я пытался предопределять роуты в bootstrap и указывать флаг inner
А я пытался предопределять роуты в bootstrap и указывать флаг inner
0
Спасибо, как раз помогло разобраться.
Я конечно понимаю что пинать трупы не очень хорошо, всё-таки 2,5 года уже прошло со дня публикации, но всё-таки возможно автор поможет разобраться:
Написал роутинг под свои задачи, вот только с тестированием параметров не понял. Имеем:
Route::set('catalog', 'catalog(/(/))')
->defaults(array(
'controller' => 'catalog',
'action' => 'index',
), array(
'catalog_id' => '\d{1,5}',
'good_id' => '\d{1,5}',
));
Что по идее должно происходить если параметры catalog_id и good_id не проходят проверку — \d{1,5}? Просто я эти данные впоследствии использую для sql запроса, и естественно всякой гадости не хотелось бы, а пока туда попадает всё что передам. Может быть неправильно написал роут? Не попалось мне примеров что то, где бы дополнительные параметры шли вместе с дефолтными, возможно я со скобочками/запятыми намудрил, по тому и не работает?
Я конечно понимаю что пинать трупы не очень хорошо, всё-таки 2,5 года уже прошло со дня публикации, но всё-таки возможно автор поможет разобраться:
Написал роутинг под свои задачи, вот только с тестированием параметров не понял. Имеем:
Route::set('catalog', 'catalog(/(/))')
->defaults(array(
'controller' => 'catalog',
'action' => 'index',
), array(
'catalog_id' => '\d{1,5}',
'good_id' => '\d{1,5}',
));
Что по идее должно происходить если параметры catalog_id и good_id не проходят проверку — \d{1,5}? Просто я эти данные впоследствии использую для sql запроса, и естественно всякой гадости не хотелось бы, а пока туда попадает всё что передам. Может быть неправильно написал роут? Не попалось мне примеров что то, где бы дополнительные параметры шли вместе с дефолтными, возможно я со скобочками/запятыми намудрил, по тому и не работает?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
KO3: HMVC и роутинг