Intereting Posts
PHP MYSQL PDO -> Неустранимая ошибка 23000, хотя существует специальная процедура Как добавить динамический выпадающий список столбцов в регистрации Laravel 5.3? Помогите разобрать XML на PHP по значению атрибута SQL Query multiple, где условие приоритизации Создание папки в хранилище Google Cloud с использованием php Я имею зашифрованный пароль md5, как дать пароль пользователю, когда он использует «Забыли пароль»? move_uploaded_file не удалось открыть поток: Permission denied – Mac Middleware, как перенаправить после проверки Laravel 5 Как обслуживать несколько изображений, которые находятся над корнем www в одной странице? Что означает сообщение об ошибке PHP «Уведомление: использование неопределенной константы»? Получить ключ последнего элемента в массиве Как удалить вкладку woocommerce? Ошибка ответа на парную партию PHP – SimpleXMLElement PHP5: const vs static Могу ли я сделать исключение в цикле for, если память превышает этот цикл

Маршрутизация регулярных выражений для Zend Framework 2

Я отчаянно боролся с ZF2, я пытаюсь создать дерево маршрутов, чтобы:

  • / manual – Переход к ручному контроллеру, действие индекса
  • / manual / [something] – Переход к ручному контроллеру, действие производителя
  • / manual / [something] / [else] – Переход к ручному контроллеру, действие категории
  • / manual / [something] / [else] / [foo] – Переход к ручному контроллеру, действие модели

Я использовал официальные документы и несколько других веб-сайтов, но все, что я смог сделать, это вызвать:

  • / manual – Переход к ручному контроллеру, действие индекса
  • / manual / [something] – Переход к конструктору ручного контроллера, но не действие …

Остальные два не доходят до контроллера …

'manual' => array( 'type' => 'literal', 'options' => array( 'route' => '/manual', 'defaults' => array( 'controller' => 'Applicaton\Controller\Manual', 'action' => 'index' ), ), 'may_terminate' => true, 'child_routes' => array( // Segment route for viewing one blog post 'manufacturer' => array( 'type' => 'segment', 'options' => array( 'route' => '/[:manufacturer]', 'constraints' => array( 'manufacturer' => '[a-zA-Z0-9_-]+' ), 'defaults' => array( 'action' => 'manufacturer' ) ), 'may_terminate' => true, 'child_routes' => array( 'category' => array( 'type' => 'segment', 'options' => array( 'route' => '/[:category]', 'constraints' => array( 'category' => '[a-zA-Z0-9_-]+' ), 'defaults' => array( 'action' => 'category' ) ), 'may_terminate' => true, 'child_routes' => array( 'model' => array( 'type' => 'segment', 'options' => array( 'route' => '/[:model]', 'constraints' => array( 'model' => '[a-zA-Z0-9_-]+' ), 'defaults' => array( 'action' => 'model' ) ) ) ) ) ) ) ) ), 

Спасибо за вашу помощь заранее, любая помощь будет принята с благодарностью!

Обновить:

Вот мое действие контроллера:

 public function manufacturerAction() { echo 'I am in the manufacturer action!'; return new ViewModel(); } 

Это можно сделать с помощью регулярных выражений. Измените свои маршруты в module.config.php следующим образом

 'manual' => array( 'type' => 'Literal', 'options' => array( 'route' => '/manual', 'defaults' => array( 'controller' => 'Application\Controller\Manual', 'action' => 'index', ), ), ), 'manufacturer' => array( 'type' => 'Zend\Mvc\Router\Http\Regex', 'options' => array( 'regex' => '/manual/(?<manufacturer>[a-zA-Z0-9_-]+)', 'defaults' => array( 'controller' => 'Application\Controller\Manual', 'action' => 'manufacturer', ), 'spec' => '/manual/%manufacturer%', ), ), 'category' => array( 'type' => 'Zend\Mvc\Router\Http\Regex', 'options' => array( 'regex' => '/manual/(?<manufacturer>[a-zA-Z0-9_-]+)/(?<category>[a-zA-Z0-9_-]+)', 'defaults' => array( 'controller' => 'Application\Controller\Manual', 'action' => 'category', ), 'spec' => '/manual/%manufacturer%/%category%', ), ), 'model' => array( 'type' => 'Zend\Mvc\Router\Http\Regex', 'options' => array( 'regex' => '/manual/(?<manufacturer>[a-zA-Z0-9_-]+)/(?<category>[a-zA-Z0-9_-]+)/(?<model>[a-zA-Z0-9_-]+)', 'defaults' => array( 'controller' => 'Application\Controller\Manual', 'action' => 'model', ), 'spec' => '/manual/%manufacturer%/%category%/%model%', ), ),