Как я могу написать url /:lang/display-cv-:cvid, используя zend_config?
Я получил файл zend_config с именем rout.ini.
В настоящее время мой URL выглядит следующим образом /:LanguageCode/display-cv/:CVID
как определено этим маршрутом:
routes.display-cv.route = /:LanguageCode/display-cv/:CVID
routes.display-cv.defaults.controller = users-profile
routes.display-cv.defaults.action = display-cv
routes.display-cv.defaults.CVID =
routes.display-cv.reqs.CVID = "\d+"
routes.display-cv.defaults.LanguageCode = 'en'
routes.display-cv.reqs.LanguageCode = "[a-z]{2}"
что приводит к /en/display-cv/1
но мой босс хочет этого вместо:
/en/display-cv-1.html
Я попытался просто изменить:
routes.display-cv.route = /:LanguageCode/display-cv/:CVID
чтобы:routes.display-cv.route = /:LanguageCode/display-cv-:CVID.html
но результат таков:/en/display-cv-:CVID.html
, это считается статическим URL.
Тогда я называю это так:
<?php foreach ($this->CvList as $CV){ ?>
<a href="<?php echo $this->url(array(
'action' => 'display-cv',
'CVID' => $CV->CVID,
'LanguageCode' => 'en'
),'display-cv'); ?>">
<?php echo $CV->CvName; ?> <BR/>
</a>
<?php } ?>
Как я могу изменить приведенную выше конфигурацию, чтобы добиться этого?
1 ответ
Решение
Вам нужно использовать Zend_Controller_Router_Route_Regex. Например, для вашего случая я думаю, что вы могли бы сделать:
resources.router.routes.display-cv.route = "(.+)/display-cv-(\d+)\.html"
resources.router.routes.display-cv.type = "Zend_Controller_Router_Route_Regex"
resources.router.routes.display-cv.defaults.controller = users-profile
resources.router.routes.display-cv.defaults.action = display-cv
resources.router.routes.display-cv.map.1 = LanguageCode
resources.router.routes.display-cv.map.2 = id
resources.router.routes.display-cv.reverse = "/%s/display-cv-%d.html"
Надеюсь это поможет.
РЕДАКТИРОВАТЬ: была ошибка с идентификатором и URL реверса.
routes.display-cv.route = "(.+)/display-cv-(\d+)\.html"
routes.display-cv.type = "Zend_Controller_Router_Route_Regex"
routes.display-cv.defaults.controller = users-profile
routes.display-cv.defaults.action = display-cv
routes.display-cv.map.1 = LanguageCode
routes.display-cv.map.2 = CVID
routes.display-cv.reverse = "%s/display-cv-%d.html"