Как указать динамическое значение по умолчанию для ключа в маршрутизаторе, Zend Framework - PullRequest
0 голосов
/ 27 мая 2009

Этот вопрос связан с этим

Как установить по умолчанию для части категории значение категории в URL-адресе запроса?

$Router=$this->_front->getRouter();
$CategoryRoute = new Zend_Controller_Router_Route('category/:category/:controller/:action/*',
           array(
                 'controller' => 'index',
                 'action'     => 'index',
                 'category'   => 'aaa'
           ));
$Router->addRoute('category', $CategoryRoute);

Другими словами, мне нужно, чтобы значение [aaa] было значением категории во время создания этого маршрута. Для [category] всегда будет значение, так как в противном случае будет использоваться маршрут по умолчанию.

Пример того, что я имею в виду:
Если я зайду на сайт с URL http://baseurl/category/mycat/index
Я буду перенаправлен на контроллер = индекс, действие = индекс, категория = mycat.
Но во всех моих файлах просмотра, где я использую помощник Zend_View :: url (), ссылки будут указывать на:
http://baseurl/category/aaa/somthing/somthing (используя точный маршрут сверху)
Хотя мне на самом деле нужно, чтобы они указали на:
http://baseurl/category/mycat/somthing/somthing

Это происходит потому, что значение по умолчанию для категории записывается как константа в маршруте, а не каким-то образом берется из текущего URL.
В настоящее время я решаю эту проблему, самостоятельно извлекая категорию из URL и устанавливая ее по умолчанию.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2009

Если вы используете

$this->url(array(), 'category'); 

это должно работать.

Но имейте в виду: пока вы придерживаетесь значений по умолчанию, вы всегда будете получать ссылку простой / категории, но при использовании других параметров она должна возвращать правильно адаптированный URL-адрес на основе текущего URI.

т. если URI равен / category / aaa / index / index, то $ this-> url (array (), 'category'); вернет / category, если URI равен / category / xxx / index / index, то $ this-> url (array (), 'category'); вернет / category / xxx, если URI равен / category / xxx / index / process, то $ this-> url (array (), 'category'); вернет / категория / ххх / индекс / процесс и т. д.

0 голосов
/ 28 мая 2009

Есть ли в вашем посте вопрос? :)

ЕСЛИ я правильно понял - вы устанавливаете по умолчанию категорию , и она будет использоваться, если вы позвоните

$this->url(array(),'category');

Но когда вы используете

$this->url(array('category'=>'my-category'),'category');

будет возвращено категория / моя категория / индекс / idnex вместо категория / ааа / индекс / индекс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...