2011-01-25 2 views
0

Как настроить Zend_Controller_Router для использования маршрута по умолчанию по умолчанию? По какой-то неизвестной причине он использует текущий маршрут.Использовать маршрут по умолчанию с Zend Router по умолчанию

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

+0

Возможно, вам стоит добавить код и пример запроса и нужного вам маршрута. Потому что теперь, что вы говорите d oesn't, похоже, не имеет никакого смысла (маршрут по умолчанию - как следует из названия - * is *, ну, маршрут по умолчанию). BTW, вы проверили [ZF - маршруты по умолчанию] (http://framework.zend.com/manual/en/zend.controller.router.html#zend.controller.router.default-routes)? – wimvds

+0

Я думаю, что он означает URL-адрес помощника. –

+0

URL-адрес Helper - часть его, но это не компонент, вызывающий проблему. Если именованный маршрут не указан, маршрутизатор использует текущий маршрут вместо маршрута по умолчанию. Помощник URL просто проксирует этот метод. – mctom987

ответ

0

Ваш вопрос не очевиден и запутан, я попробую хотя.

Я собираюсь предположить, что вы не имеете в виду Zend_Controller_Route, но на самом деле говорят о ссылках, сгенерированных в ваших взглядах.

Вы можете использовать baseUrl() как этот

<a href="<?=$this->baseUrl("about-us")?>">About Us</a> 

Вы можете установить baseUrl в вашем Bootstrap как этот

Zend_Controller_Front::getInstance()->setBaseUrl("/"); 

Если вы работаете на местном уровне вы можете установить его на что-то вроде этого

Zend_Controller_Front::getInstance()->setBaseUrl("/my-app/public"); 

Использование baseUrl() в теперь ваши взгляды будут использовать этот путь для определения всех ваших URL-адресов. Помните, что вы должны обернуть свои ссылки в baseUrl(), чтобы это сработало.

Помощник url() не полезен для этого, он используется для выполнения таких операций, как разбиение на страницы, где вы хотите сохранить текущие параметры объекта запроса.

Надеюсь, что это поможет.

+0

Я действительно имею в виду Zend_Controller_Route Если у меня есть профиль с именем поименованного маршрута, каждая ссылка на этой странице будет разбита, потому что по умолчанию она пытается использовать маршрут профиля для сопоставления этих URL-адресов. Я хочу, чтобы он использовал маршрут по умолчанию, как и поведение на каждой другой странице без именованного маршрута. – mctom987

+0

использовать 'baseUrl' то? Вы неправильно использовали 'url' на своем сайте. –

0

От Матфея Уэьер O'Phinney:

Логика вы цитируете выше в метод сборки(). сборка() может быть вызвана с или без маршрутизации . По умолчанию предположение заключается в том, что если имя маршрута не указано , используется текущий маршрут - и если совпадение было никогда не выполнялось (или не было согласовано маршрут), будет использоваться маршрут по умолчанию.

Обоснованием для использования в настоящее время согласованного маршрута является то, что, как правило, вы будет маршрутизации в пределах одной и той же схеме - в качестве примера, если вы находитесь в RESTful парадигмы, большинство ваших ссылок будет в пределах текущий ресурс. Если бы мы должны были следовать вашему предложения, чтобы использовать «по умолчанию» маршрута, когда не указан маршрута (по крайней мере, это то, как я интерпретировать то, что вы сказали), потому что Rest_Route не маршрута по умолчанию, каждый вызов для сборки() потребуется использовать имя маршрута , которое другие будут высмеивать как вызывающие «головные боли»."

Лично я предпочитаю, чтобы быть явными и всегда указать название маршрута, таким образом, я знаю точно, какой маршрут я ориентируетесь во время сборки(), который делает отладку легче

.

Похоже, единственное решение - установить маршрут для каждой ссылки, чтобы использовать «по умолчанию» вместо того, чтобы оставить его NULL.

Смежные вопросы