Доступ к base_path определенного каталога ресурсов с контроллера

Я хочу получить доступ к base_path (base_url зарегистрированному) определенного Asset component из контроллера, чтобы хранить мои отчеты по определенному пути, предварительно настроенному в config.yml.

Я начал менять свою конфигурацию после обновления до Symfony 2.7, как показано ниже:

приложение/config/config.yml

framework:
    assets:
        version: 'v5'
        version_format: '%%s?version=%%s'
        base_path: ~
        base_urls: ['http://cdn.example.com', 'https://secure.example.com']
        packages:
           reports:
             base_path: bundles/mybundle

Таким образом, когда я запрашиваю определенный маршрут с правильными параметрами запроса, мой контроллер генерирует HTML из определенного шаблона Twig, и в конце он будет преобразован в PDF с использованием KnpSnappyBundle.

Наконец, моя цель — создать список сгенерированных отчетов в формате PDF, доступных из общедоступного каталога активов.

$kernel->locateResource()

Однако я могу получить доступ к полному пути, используя обходной путь, подобный следующему:

$this->container->get('kernel')->locateResource('@MyBundle/Resources/public/reports')

Использование параметров.yml

Я также попросил некоторые подсказки, и кажется законным использовать parameters.yml для управления конфигурацией компонента актива. Таким образом, из контроллера к ним можно было бы получить доступ с помощью $this->getParameter() и, в то же время, как значение конфигурации для Asset.


person sentenza    schedule 12.08.2015    source источник
comment
Извините, если я что-то упустил, но в чем именно заключается ваш вопрос? Можете ли вы сделать его более заметным?   -  person Francesco Abeni    schedule 17.08.2015
comment
Мне нужно получить доступ (из контроллера) к base_urls, определенному в app/config/config.yml, и я хочу сделать это напрямую. Что-то вроде getAssets('base_urls').   -  person sentenza    schedule 18.08.2015
comment
Да, но вы также предоставляете некоторые решения, они не работают или вы спрашиваете о том, какое из них лучше? Я предположил последнее в своем ответе.   -  person Francesco Abeni    schedule 18.08.2015
comment
Они работают, но я думаю, что лучше иметь доступ к конфигурации config.yml раздела assets. Если вы определяете разные подпути, имеет смысл получить их напрямую, не определяя в двух разных файлах yml.   -  person sentenza    schedule 18.08.2015


Ответы (1)


Самый простой способ справиться с этим - определить его как параметр в parameters.yml, как вы сами предложили.

Это действительно легко получить, и это имеет смысл.

Обновить

Я хотел немного обосновать свой ответ, поэтому я процитирую http://symfony.com/doc/current/best_practices/configuration.html в качестве ссылки.

Читая там, кажется, что вы должны поместить в «parameters.yml» все параметры инфраструктуры, которые на самом деле не меняют поведение вашего приложения. Я думаю, это относится и к вашему случаю: ваше приложение не меняет своего поведения в зависимости от путей ресурсов, ему нужно только знать, где они находятся.

Итак, еще раз, я бы сказал, что размещение их в файле parameters.yml не только дает вам простое решение, но и является «хорошей практикой».

person Francesco Abeni    schedule 18.08.2015
comment
Как я уже говорил в предыдущих комментариях, я хотел бы иметь метод доступа к конфигурациям путей assets из действий контроллера без необходимости их определения в параметрах.yml. - person sentenza; 18.08.2015
comment
Ok. Я понимаю и уважаю ваш вопрос, поэтому не могу предложить решение. В любом случае, я расширил свой ответ еще немного доказательств :-) - person Francesco Abeni; 18.08.2015
comment
Спасибо за обновление и разъяснение. Сейчас я использую метод parameters.yml. - person sentenza; 19.08.2015