Насколько я знаю, нет встроенного сервиса базового URL-адреса. На самом деле это немного красный флаг, который, возможно, с вашим компонентом, в зависимости от него, может быть не такой хорошей идеей. Но я не могу придумать, почему.
Как обычно, можно просто ввести объект запроса. Но это имеет свои собственные проблемы, как описано здесь: http://symfony.com/blog/new-in-symfony-2-4-the-request-stack
Вместо впрыскивать службы @request_stack и вытащить URL из него:
class WidgetModel
{
public __construct($widgets,$requestStack)
{
$this->baseUrl = $requestStack->getCurrentRequest()->getBaseUrl();
Если вы окажетесь необходимости в BaseUrl в нескольких службах, то вы могли бы определите свой собственный сервис типа фабрики, чтобы сгенерировать его. Но опять же, это может означать, что ваш дизайн нуждается в переосмыслении.
Пытались это вы? Доступ к запросу напрямую в качестве службы редко работает, как ожидалось. Это определенно не будет работать в S3.x. Он может работать с помощью request_stack. – Cerad
Да, я создал простой проект Symfony 2.7 с классом класса WidgetModel и смог ввести только базовый URL. У вас есть ссылка на все, что показывает путь миграции для 3.x? – StuBez
«В Symfony 3.0 мы устраним проблему раз и навсегда, удалив службу запроса из контейнера». http://symfony.com/blog/new-in-symfony-2-4-the-request-stack. Вы можете идти в ногу с тем, что происходит в Symfony здесь: http://symfony.com/blog/ – Cerad