Zend Внедрение SEO-дружественных или тщеславных URL-адресов с маршрутизатором

У меня есть простое веб-приложение электронной коммерции с URL-адресом продукта, например:

http://www.example.com/product/view/product_id/15

где «Продукт» — это контроллер, а «представление» — это действие в контроллере продукта.

Как изменить этот URL-адрес, чтобы он отображался как:

http://www.example.com/product/view/product_name/iphone-4S-16-gb

где product_id "15" — это первичный ключ в таблице продуктов, а product_name имеет значение "iphone 4s 16 gb" без дефисов

Каков самый простой способ для меня внести это изменение. Был бы очень признателен за вашу помощь. Большое спасибо.


person Gublooo    schedule 02.03.2012    source источник


Ответы (1)


resources.router.routes.view-article.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.view-article.route = "articles/(?!archive)([a-zA-Z\-]+)/(\d+)(?:/(.*))?"
resources.router.routes.view-article.reverse = "articles/%s/%d/%s"
resources.router.routes.view-article.defaults.module = "articles"
resources.router.routes.view-article.defaults.controller = "view"
resources.router.routes.view-article.defaults.action = "view-article"
resources.router.routes.view-article.map.1 = topicSlug
resources.router.routes.view-article.defaults.topicSlug = topicSlug
resources.router.routes.view-article.map.2 = id
resources.router.routes.view-article.defaults.id = 0
resources.router.routes.view-article.map.3 = articleSlug
resources.router.routes.view-article.defaults.articleSlug = articleSlug

ссылки типа http://example.com/articles/circus/616/4-marta-vse-za-ruletkami

http://example.com/products/category/product_id/product_name

ИЗМЕНИТЬ 1

это настройка для плагина маршрутизатора по умолчанию. показан как articles из модуля моего блога, но легко обновляется для магазина.

части - http://example.com/ хост :) articles/circus/ => модуль и контроллер mapeed.

resources.router.routes.view-article.map.1 = topicSlug — это категория. для магазина.

616/4-marta-vse-za-ruletkami ID и любой слаг. описание продукта, например, «iphone-4S-16-gb»

значения по умолчанию в конфиге.

другой пример /{maps2module}/{maps2topicSlug}/{maps2id}/{maps2articleSlug}

person SMka    schedule 02.03.2012
comment
Возможно небольшое пояснение? - person Sandro Meier; 02.03.2012
comment
Спасибо. Этого достаточно для меня. Я понял. :-Д - person Sandro Meier; 02.03.2012
comment
Спасибо SMka за ваш вклад, но я очень новичок в этой теме, и я не могу понять это. Есть ли какой-нибудь простой учебник, который я могу прочитать об этом - person Gublooo; 06.03.2012
comment
в ZF нет ничего простого :)))) но читайте документы. есть масса примеров. framework.zend.com/manual/en/zend.controller.router. html - person SMka; 06.03.2012