Как создать дружественный URL в Symfony PHP? - PullRequest
6 голосов
/ 29 августа 2008

Я всегда забываю об этих встроенных Symfony функциях для создания ссылок.

Ответы [ 4 ]

9 голосов
/ 30 августа 2008

Если ваша цель - создать удобные для пользователя URL-адреса во всем приложении, используйте следующий подход:

1) Создайте правило маршрутизации для вашего модуля / действия в файле routing.yml приложения. В следующем примере показано правило маршрутизации для действия, которое показывает самые последние вопросы в приложении, по умолчанию используется страница 1 (с использованием пейджера):

recent_questions:
   url:    questions/recent/:page
   param:  { module: questions, action: recent, page: 1 }

2) После настройки правила маршрутизации используйте помощник url_for() в шаблоне для форматирования исходящих URL-адресов.

<a href="<?php echo url_for('questions/recent?page=1') ?>">Recent Questions</a>

В этом примере будет создан следующий URL: http://myapp/questions/recent/1.html.

3) Входящие URL-адреса (запросы) будут проанализированы системой маршрутизации, и если в конфигурации правила маршрутизации будет найдено совпадение с шаблоном, именованные подстановочные знаки (т. Е. Часть URL :/page) станут параметрами запроса .

Вы также можете использовать помощник link_to() для вывода URL без использования тега HTML <a>.

1 голос
/ 29 августа 2008

Этот совет для symfony 1.0. Это, вероятно, будет работать для более поздних версий.

В пределах вашего класса sfAction :

string genUrl ($ parameters = array (), $ absolute = false)

например. $ this-> getController () -> genUrl ('yourmodule / youraction? key = value & key2 = value', true);

В шаблоне :

Это создаст нормальную ссылку.

строка link_to ($ name, $ internal_uri, $ options = array ());

например. link_to ('Имя моей ссылки', 'ваш модуль / youraction? key = value & key2 = value');

0 голосов
/ 08 ноября 2011

Вы можете создать URL-адрес напрямую, без предварительного определения правила.

Если вы хотите сгенерировать URL в действиях, вы можете использовать generateUrl () helper:

$this->generateUrl('default', array('module'=>'[ModuleName]','action'=>'[ActionName]'))

Если вы хотите создать URL в шаблонах, вы можете использовать url_for () helper:

url_for('[ModuleName]/[ActionName]', $absolute)

установите $ absolute как true / false, не забудьте использовать echo, если хотите отобразить его.

Но если вы хотите сделать ссылку (что-то вроде <a href=""></a>), link_to () помощник сделает.

0 голосов
/ 16 декабря 2008

Кроме того, если вы действительно хотите строку запроса с этим URL, вы используете это:

link_to('My link name', 'yourmodule/youraction?key=value&key2=value',array('query_string'=>'page=2'));

В противном случае он попытается направить его как часть URL и, скорее всего, нарушит ваше действие.

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