Имеется консольная задача в которой необходимо выполнять рассылку писем.
Тело письма создаётся через get_partial.
В шаблоне письма есть link_to и/или url_for.
Проблема в том, что роутер не может создать правилый URL, т.к. приложение выполняется вне web-окружения и вместо нормальных ссылок получаем что-то типа http://symfony/symfony/post/2009.
Я выкрутился следующим способом
$_SERVER['HTTP_HOST'] = 'myhost'; $_SERVER['SCRIPT_NAME'] = '/index.php'; $configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false); $context = sfContext::createInstance($configuration); $configuration->loadHelpers('Partial'); $body = get_partial('post/mail_notify', array('myvar' => $myval));Обратите внимание на параметр 'prod'. Это необходимо для того что бы роутер смог выкинуть /index.php из URL'а (если generate_shortest_url=true в factories.yml)
Какое ужасное извращение :(
ОтветитьУдалитьЗнаешь вариант получше? Делись :)
ОтветитьУдалитьЗагрузить роутинг нужного приложения и создать урл по-человечески.
ОтветитьУдалитьhttp://www.symfony-project.org/blog/2009/02/17/cross-application-links