Всем привет. Появилось немного времени, сделал первую реализацию обещанных обратных ссылок для phalcon. Для тех, кто не в курсе: стандартная реализации Route в phalcon 1.* не позволяет использовать опциональные параметры и не правильно генерирует обратные ссылки для роутов. Например:
$router
->add('/admin(/:controller(/:action(/{id:[0-9]+}(/:params)?)?)?)?', array(
'module' => 'backend',
'controller' => 2,
'action' => 4,
'id' => 6,
'params' => 8,
))
->setName('backend');
...
echo $this->url->get(array('for'=>'backend', 'controller'=>'users'));
В результате данного кода получим /adminusers? вместо ожидаемого /admin/users. Для многих - это нормально, они не привыкли к опциональным параметрам. Для других (таких, как я) - это плохо.
Теперь немного затравки, чтобы понимать, что дает данный класс для того-же роута:
echo $this->url->route('backend'); // /admin
echo $this->url->route('backend', array('controller' => 'users')); // /admin/users
echo $this->url->route('backend', array('controller' => 'users', 'action' => 'add')); // /admin/users/add
echo $this->url->route('backend', array('controller' => 'users', 'action' => 'edit', 'id' => 1)); // /admin/users/edit/1
echo $this->url->route('backend', array(
'controller' => 'users',
'action' => 'info',
'id' => 1,
'params' => array(
'page' => 1,
'limit' => 10,
),
)); // /admin/users/info/1/page/1/limit/10
Удобно, правда?) Реализация: https://gist.github.com/aktuba/7702229 . Есть вопросы - задавайте.