@boston, лови:
- Баг с цифрами в параметрах ссылки (контроллер, действие, возможно namespace и module тоже - их не проверял). Например, есть роуты:
$router->add('/admin/:controller', [
'module' => 'test',
'controller' => 1,
'action' => 'index',
]);
$router->add('/admin/:controller/:action', [
'module' => 'test',
'controller' => 1,
'action' => 2,
]);
Вот как будут обрабатываться ссылки:
/admin/controller - откроет контроллер Controller и дефолтный action, т.е. работает правильно
/admin/123 - откроет дефолтный контроллер и дефолтный action, вместо 404-й ошибки
/admin/controller/edit - откроет контроллер Controller и action edit, все нормально
/admin/controller/123 - откроет контроллер Controller и дефолтный action вместо 404-й ошибки.
Причина ошибки где-то здесь: https://github.com/phalcon/cphalcon/blob/master/ext/mvc/router.c#L840
- Баг с русским языком в ссылках. Для тех-же роутов, что выше, проверяем:
$router->handle('/admin/index/eng');
if ($router->wasMatched()) {
echo 'Модуль (Module): ', $router->getModuleName(), '<br/>';
echo 'Контроллер (Controller): ', $router->getControllerName(), '<br>';
echo 'Действие (Action): ', $router->getActionName(), '<br>';
} else {
echo 'Маршрут не поддерживается<br>';
};
die;
для /admin/index/eng выдает:
Модуль (Module): test
Контроллер (Controller): index
Действие (Action): eng
для /admin/index/русский - "Маршрут не поддерживается", хотя должен был определить модуль и контроллер для корректной обработки 404-й ошибки.
- Проблема с опциональными параметрами в роутах. Вот так будет нормально работать:
$router->add('/test/{id:[0-9]+}', [
'module' => 'backend',
'controller' => 'test',
'action' => 'index',
'id' => 1,
]);
а вот так работать уже не будех, хотя заявлена поддержка PCRE:
$router->add('/test(/{id:[0-9]+})?', [
'module' => 'backend',
'controller' => 'test',
'action' => 'index',
'id' => 2,
]);
Вообще, с опциональными параметрами полная беда. Регулярки поддерживаются только частично.
- Есть проблема с View. Если назначить нативный шаблонизатор для .php - часть функционала начинает глючить. Если использовать .phtml (т.е. не прописывать дополнительные расширения для рендера) - все работает отлично. Обнаружил, когда делал модуль для e-mail. Сейчас уже не помню деталей, будет время - постараюсь восстановить последовательность действий и конкретные ошибки и выложу сюда.