Я использую пользовательский маршрутизатор для того, чтобы страницы, как:Как создать настраиваемый маршрутизатор в Zend-Framework?
mytutorialsite.com/category/:categoryname
# added to application.ini
resources.router.routes.categorynameOnCategory.route = /category/:categoryname
resources.router.routes.categorynameOnCategory.defaults.module = default
resources.router.routes.categorynameOnCategory.defaults.controller = category
resources.router.routes.categorynameOnCategory.defaults.action = categoryname
У меня также есть таблица базы данных «категории», в котором хранятся все категории. Например, предположим, что следующие категории в настоящее время хранятся в моей базе данных:
- html
- css
- js
- php
Это означает, что следующие страницы существуют:
- mytutorialsite.com/category/html
- mytutorialsite .com/category/css
- mytutorialsite.com/category/js
- mytutorialsite.com/category/php
Но при посещении страницы с CategoryName, которые не перечислены в базе данных, как:
- mytutorialsite.com/category/foo
Вы должны получить 404 страницы не существует сообщения.
Как это достичь?
Спасибо, это было очень полезно! –
Есть только одна проблема с плагином frontcontroller. Теперь каждое имя $ category-> имеет свое собственное действие в контроллере. Если вы хотите, чтобы все имена категорий использовали один и тот же тип categoryAction, просто изменение «action» => «categoryname» не работает. –
Это правильно. Если вы хотите перенаправить URL-адрес на все те же действия, это еще проще (см. Мое предположение в верхней части моего ответа). Маршрут прост: «category /: category» и добавьте действие к этому маршруту («categoryName»). Затем в категории nameAction параметр «категория» доступен через $ this -> _ getParam («category»). –