Используя маршруты для генерации URL в задаче Symfony

Я выполняю 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

Как я могу разрешить это?

7
задан Peter Mortensen 17 August 2010 в 18:35
поделиться

1 ответ

Чтобы сгенерировать 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;
  }
17
ответ дан 6 December 2019 в 08:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: