воскресенье, 20 сентября 2009 г.

get_partial & task в symfony

Есть проект на symfony.
Имеется консольная задача в которой необходимо выполнять рассылку писем.
Тело письма создаётся через 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)

3 комментария:

  1. Какое ужасное извращение :(

    ОтветитьУдалить
  2. Знаешь вариант получше? Делись :)

    ОтветитьУдалить
  3. Загрузить роутинг нужного приложения и создать урл по-человечески.

    http://www.symfony-project.org/blog/2009/02/17/cross-application-links

    ОтветитьУдалить