Gobl1n
@Gobl1n
Программист

Роутинг в Zend'e?

Доброго времени суток.

Подскажите, знающие люди, возможно ли (и, если да, то как?) организовать в Zend'e роутинг такого вида:

http://example.com/blogs/ - выводит список разделов блога


http://example.com/blogs/id08 - выводит список блогов соответствующего раздела


http://example.com/blogs/post08 - выводит написанный блог




Гуглил пару часов, адекватной и объясняющей информации не нашел. С Zend'ом работаю совсем недавно, поэтому и застопорился.

Спасибо за любую оказанную помощь :)
  • Вопрос задан
  • 3395 просмотров
Решения вопроса 1
@Sayonji
Не видел zend, но вот такое гуглится:
$route1 = new Zend_Controller_Router_Route_Regex(
                 ’blogs/id(.*)’,array(
                                           ‘action’ => 'ololo',
                                            ’controller’ => 'lololo',
                                             ‘module’ => 'default'),
                       array(1 => 'id'));
$route2 = new Zend_Controller_Router_Route_Regex(
                 ’blogs/post(.*)’,array(
                                           ‘action’ => 'lolo',
                                            ’controller’ => 'olol',
                                             ‘module’ => 'default'),
                       array(1 => 'id'));
$route3 = new Zend_Controller_Router_Route_Regex(
                 ’blogs/’,array(
                                           ‘action’ => 'lolo',
                                            ’controller’ => 'olol',
                                             ‘module’ => 'default'),
                       array());

Последний можно и без регекса конечно же, но лень искать еще.
А число потом получать так $this->getRequest->getParam('id')
А еще, может я со слешами натупил в регулярке.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
cawakharkov
@cawakharkov
да возможно реализовать такое, используя регулярки, но есть различия в реализации роутинга zf1 и zf2
Ответ написан
Комментировать
@Morfij_E

А можно ещё и так: 1. Инициируешь роутер в Bootstrap-е:


protected function _initRouter()
    {
        $fc = Zend_Controller_Front::getInstance();
        $router = $fc->getRouter();
        $routerConfig = new Zend_Config_Ini('/../applications/configs/routes.ini');
        $router->addConfig($routerConfig, 'routes'); 
    }
2. В routes.ini прописываем динамический роутер:

routes.blog.type                             = "Zend_Controller_Router_Route"
routes.buy.route                             = "blog/:id"
routes.blog.defaults.module            = "default"
routes.blog.defaults.controller        = "blog"
routes.blog.defaults.action              = "index"
3. Принимаем в соответствующем контроллере 'id': $this->getRequest->getParam('id')

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы