2013-07-29 2 views
3

я следующий маршрут добавлен в Phalcon\MVC\Router:Phalcon маршрутизации - создание сегментов маршрута факультативные

$router = new Phalcon\Mvc\Router(); 

$router->removeExtraSlashes(true) 
    ->setDefaultNamespace('My\Controllers') 
    ->setDefaultModule('default') 
    ->setDefaultController('index') 
    ->setDefaultAction('index'); 

$router->add('/admin/:controller/:action/:params', [ 
    'module' => 'admin', 
    'controller' => 1, 
    'action' => 2, 
    'params' => 3, 
    'namespace' => 'My\Admin\Controllers' 
])->setName('admin_module'); 

Я обработки следующие ссылки:

  1. /admin/foo/bar/baz - работает хорошо. Я получаю admin модуль, foo контроллер, bar действие, "baz" параметр.

  2. /admin/foo/bar - работает хорошо. Я получаю admin модуль, foo контроллер, bar действий.

  3. /admin/foo - не соответствует. Я ожидаю получить admin модуль, foo контроллер, index действий.

  4. /admin - не соответствует. Я ожидаю получить admin модуль, index контроллер, index действий.

Вопрос:

Как я могу сделать сегменты маршрута по желанию и по умолчанию предоставленных значений контроллера и имени действия по умолчанию. Я хотел бы избежать определения дополнительных маршрутов для /admin и /admin/:controller.

спасибо.

ответ

2

Наиболее распространенный способ сделать это работает, чтобы добавить каждый шаблон для Router как обычай Route с теми же paths вариантов (второй аргумент в Route::add()). Что касается маршрутов аннотации, то полезно выбрать несколько @Route директивы для Action методов. Этот способ специализируется на использовании причины URL поколения Route (название маршрута) будет быстрее, чем универсальный.

Отношения

+0

спасибо! Я только что узнал phalcon несколько дней назад, и я не понимаю, что вы также можете использовать аннотацию для выполнения маршрута (хотя аннотация только для определения типа поля в модели). – AzDesign

Смежные вопросы