Symfony 2 эквивалент для функции url_for () в Symfony 1 - PullRequest
6 голосов
/ 04 ноября 2011

В Symfony 1 мы можем получить доступ к действию на странице шаблона, например, url_for('modulename/actionname'), не записывая ничего в routing.yml.

как это возможно в Symfony2 ?, то есть если мне нужно получить доступ к нескольким действиям в ветке без указания в routing. Это полезно при использовании ajax.

Заранее спасибо

Ответы [ 2 ]

3 голосов
/ 04 ноября 2011

Если я правильно понимаю ваш вопрос, вы спрашиваете, как создать URL-адрес, передавая имя модуля и имя действия вместо имени маршрута. Это правильно?

Я не думаю, что это возможно в Symfony2. Если вы посмотрите на метод generate в Symfony\Component\Routing\Generator\UrlGenerator, вы увидите, что он ожидает имя маршрута в качестве первого параметра. Кроме того, Symfony2 изначально не поддерживает общие маршруты, которые поддерживает Symfony 1 (для справки ниже).

default_index:
  url:   /:module
  param: { action: index }

default:
  url:   /:module/:action/*

Без этих общих маршрутов вы не можете просто получить доступ к / myModule / myAction без фактического определения маршрута для него. И не забывайте, что Symfony2 теперь использует пакеты, которые еще больше усложнят это.

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

Чтобы создать URL-адреса ...
- от контроллера: $this->generateUrl($routeName);
- из шаблона PHP: $view['router']->generate($routeName);
- Из шаблона Twig: {{ path('_routeName') }} или {{ url('_routeName') }} для абсолютного URL

1 голос
/ 01 июня 2013

Кроме слов оружия , вот несколько примеров (с параметрами):

Допустим, наша маршрутизация:

#routing.yml
acme_demo_page:
  path: /{page}.{_format}
  defaults:
    _controller:  AcmeDemoBundle:Page:index

Мы сгенерируемURL для этой маршрутизации, следующий:

Из действия любого контроллера:

$url = $view['router']->generate("acme_demo_page", array(
    "page" => "main",
    "_format" => "html",
));

Из любого шаблона PHP:

$url = $this->generateUrl("acme_demo_page", array(
    "page" => "main",
    "_format" => "html",
));

Из любого шаблона Twig:

<a href="{{ path('acme_demo_page', {page:'main', _format:'html'}) }}">Home</a>
<a href="{{ url('acme_demo_page', {page:'main', _format:'html'}) }}">Abs Home</a>

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

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