[Moscow.pm] Mojolicious::Lite and routes

Ruslan Zakirov ruz на bestpractical.com
Вт Апр 10 06:23:58 PDT 2012


2012/4/10 Павел <pavel на kuptsov.info>:
> Добрый день!
> Вот столкнулся с такой ситуацией (скорее всего проблема в проектировании -
> но как ее решить не могу понять).
>
> Есть небольшой сайт на Mojolicious::Lite с админкой.
> Я хочу иметь роуты для публичной части сайта вида:
>
> get '/:url_cat' =>  sub {...};
>
> get '/:url_cat/:id/:name' => sub {...};
>
> где url_cat - урл категории (ЧПУ),
> во втором роуте - имя, id-страницы, ЧПУ страницы,
>
> в общем - не вдаваясь сильно в детали - суть в том что нужно от корневого
> роута / получать разные урлы (на категорию, на страницу и т.п.)
> и в общем-то все было без проблем, пока я не начал писать админку.
>
> написал:
> under sub {...};
>
> а потом столкнулся с тем что для работы в админке мне приходится громоздить
> пути в роутах вида:
> get '/manager/site/admin/panel/manage/site' => sub {...};
>
> в противном случае этот роут совпадает с  get '/:url_cat/:id/:name' => sub
> {...};
>
> подскажите как лучше спроектировать ссылки/роуты?

Что-то типа:

'/:cat/.../', cat => qr{(?!manage/).*}

Можно прокинуть через бридж с колбеком, который вернет 0 если
категория специальная. В таком случае Mojo вроде должен по остальным
роутам пройтись в поиске. Должно сработать, но не пробовал.

В итоге нужно уменьшить жадность основного роута, инструменты для этого есть.


>
> P.S.
> Вариант конечно использовать префикс для публичной части, но не хочется
> "закапывать" страницы на второй уровень и т.д., для поисковиков не очень
> хорошо это.
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



-- 
Best regards, Ruslan.


Подробная информация о списке рассылки Moscow-pm