2010-01-10 82 views
0

所以我有一个显示文章的模块。我试图做出一个行动,显示出版物被点击时某个出版物的所有文章。我尝试了在symfony工作教程上这样做,但我遇到了一些新的麻烦。由于出版物和作者可以是某个URL不友好的,我想用子弹,而这正是我遇到了这个问题。路径问题的Symfony的

所以我有一篇文章模块和I加一个路由规则这样

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) ?> 

我得到这个错误:

The "/publications/:publication_slug" route has some missing mandatory parameters (:publication_slug).

任何想法?非常感谢!

回答

1

Symfony指南中引用的对象链接(url_for('my_route',$ obj))从来没有适用于我。相反,我总是使用产生直接的参数插入我的路线,尝试此相反:

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

虽然上面会立即解决的问题,它看起来像你就会有下一个更深层次的问题。进一步查看自定义getter路由后,它看起来完全不受Doctrine支持,只有Propel。 sfDoctrineRoute将只匹配上实际存在的表定义,而sfPropelRoute使用反射来支持自定义的干将列。你需要将你的slug列添加到你的表格定义中才能使它工作。 – nortron 2010-01-11 02:05:42

+0

感谢您的帮助。这是奇怪的BC这个页面说,这是由教条支持。 http://www.symfony-project.org/jobeet/1_2/Doctrine/en/07 – Danny 2010-01-11 02:10:04

+0

我正在使用相同的教程来实现它,但我不能让它工作,因为他们说,所以我深入到实际的sfDoctrinePlugin代码并确认它。我希望我错了,但是我写了一个测试实现,并且无法使它工作。如果你找到一种方法使它工作,请让我知道。 – nortron 2010-01-11 02:53:21