Проблема маршрутизации с Symfony - PullRequest
0 голосов
/ 11 января 2010

Итак, у меня есть модуль, который отображает статьи. И я попытался сделать действие, которое отображало бы все статьи определенной публикации, когда эта публикация была нажата. Я попытался пойти по этому пути в уроках Symfony Jobeet, но столкнулся с некоторыми новыми головными болями. Поскольку публикации и авторы иногда могут быть недружелюбными, я хочу использовать слагов, и именно здесь я столкнулся с проблемой.

Итак, у меня есть модуль статьи, и я добавил правило маршрутизации, подобное этому

publication_articles:
  url:  /publications/:publication_slug
  class: sfDoctrineRoute
  param: { module: article, action: publication }
  options: { model: Article, type: list }

Затем я добавил функцию getPublicationSlug () к классу статьи, которая убирает пробелы и специальные символы - ничего особенного.

Затем я добавил эту функцию в класс действий:

  public function executePublication(sfWebRequest $request)
  {
      $this->articles = $this->getRoute()->getObjects();
  }

Когда я пытаюсь добавить такую ​​ссылку:

<a href="<?php echo url_for('publications/'.$article->getPublicationSlug()) ?>"><?php echo $article->getPublication() ?></a>

Страница возвращает все статьи без фильтрации публикации

и если я добавлю такую ​​ссылку:

<?php echo link_to($article->getPublication(), 'publication_articles', $article) ?>

Я получаю эту ошибку:

"/ публикации /: публикация_slug" Маршрут имеет некоторые пропущенные обязательные параметры (: публикация_слуга).

Есть идеи? Большое спасибо!

1 Ответ

1 голос
/ 11 января 2010

Ссылка на объект, на которую ссылаются руководства Symfony (url_for ('my_route', $ obj)), никогда не работала должным образом Вместо этого я всегда генерирую свои маршруты, используя прямую вставку параметров, попробуйте вместо этого:

<?php echo link_to($article->getPublication(), '@publication_articles?publication_slug=' . $article->getPublicationSlug()) ?>
...