Как я могу написать url /: lang / display-cv-: cvid, используя zend_config? - PullRequest
1 голос
/ 19 мая 2011

Я получил файл 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 Ответ

1 голос
/ 19 мая 2011

Вам необходимо использовать 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"
...