Я выполняю Symfony 1.3.6 на Ubuntu 10.0.4 LTS.
Я записал задачу Symfony, которая генерирует отчет, который содержит ссылки (URL).
Вот отрывок execute()
метод в моем классе задачи:
protected function execute($arguments = array(), $options = array())
{
//create a context
sfContext::createInstance($this->configuration);
sfContext::getInstance()->getConfiguration()->loadHelpers(array('Url', 'Asset', 'Tag'));
...
$url = url_for("@foobar?cow=marymoo&id=42");
// Line 1
echo 'This is a test';
// Line 2
echo link_to('This is a test', $url);
}
Имя маршрута определяется как это:
foobar:
url: /some/fancy/path/:cow/:id/hello.html
param: { module: mymodule, action: myaction }
Когда это выполняется, сгенерированная ссылка:
Строка 1 производит этот вывод:
./symfony/symfony/some/fancy/path/marymoo/42/hello.html
вместо ожидаемого:
/some/fancy/path/marymoo/42/hello.html
Строка 2 генерирует ошибку:
Не удалось найти, что подходящий маршрут генерирует URL для параметрических усилителей "массив ('действие' => 'symfony', 'модуль' =>'.')".
Снова, ожидаемый URL:
/some/fancy/path/marymoo/42/hello.html
Как я могу разрешить это?
Чтобы сгенерировать URL-адрес в задаче:
protected function execute($arguments = array(), $options = array())
{
$routing = $this->getRouting();
$url = $routing->generate('route_name', $parameters);
}
Мы добавляем метод для генерации маршрутизации, чтобы всегда использовался рабочий URL-адрес:
/**
* Gets routing with the host url set to the url of the production server
* @return sfPatternRouting
*/
protected function getProductionRouting()
{
$routing = $this->getRouting();
$routingOptions = $routing->getOptions();
$routingOptions['context']['host'] = 'www.example.com';
$routing->initialize($this->dispatcher, $routing->getCache(), $routingOptions);
return $routing;
}