Маршрутизация Symfony 2 с URL-адресом в качестве аргумента

У меня возникли проблемы при попытке передать URL-адрес в качестве аргумента в Symfony2.

Мой файл routing.yml имеет этот шаблон: pattern: mark/{date}/{url}

Когда я пытаюсь перейти к : /web/app_dev.php/mark/1307374717828/http%3A%2F%2Flocalhost%2Fweb%2Fapp_dev.php%2Fhome%2F

У меня есть не найденная страница, кажется, что она не смотрит на symfony, потому что у меня нет проблемы «несоответствия маршрута».

Итак, как передать URL-адрес в качестве аргумента?


person Saperlipopette    schedule 06.06.2011    source источник


Ответы (2)


Это не такое элегантное использование маршрутизации, как возможность сказать шаблон: отметка/{дата}/{url}, но вы можете просто искать часть «url» в качестве параметра запроса.

(в файле routing.yml)

_testurlthing:
    pattern: /mark/{date}
    defaults: { _controller: AcmeTestUrlBundle:Url:mark }

(в AcmeTestUrlBundle/Controllers/UrlController.php)

public function markAction($date)
{
  $url = $this->get('request')->get('url');
  return new Response("sending you to $url");
}

Теперь вы можете ссылаться на /web/app_dev.php/mark/1307374717828?url=http%3A%2F%2Flocalhost%2Fweb%2Fapp_dev.php%2Fhome%2F

Или с помощью ветки:

{{ path('_testurlthing', { 'date': 1307374717828, 'url': 'http%3A%2F%2Flocalhost%2Fweb%2Fapp_dev.php%2Fhome%2F' }) }}
person tuxedo25    schedule 07.06.2011

По умолчанию Symfony не соответствует символу «/»; Вы должны специально разрешить это, как описано здесь, в документации Symfony.

person FaZ    schedule 29.11.2017
comment
Хотя ссылка здесь полезна, было бы лучше также скопировать соответствующие части здесь. Не у всех есть доступ к внешним сайтам, и ссылки могут со временем перестать работать. - person JonathanDavidArndt; 29.11.2017