gpt4 book ai didi

php - Symfony 中的文章排序列表

转载 作者:行者123 更新时间:2023-12-04 07:00:01 27 4
gpt4 key购买 nike

我有一个名为文章的模块,其中显示了我上传的文章列表。在索引上,它只是列出了所有的文章。

但我想知道如何才能做到这一点,例如,如果我点击作者,它将带我到一个页面,该页面只显示该作者的文章(并使网址漂亮,例如:文章/丹尼尔)或不同的领域,例如通过出版物。我显然知道如何进行查询,但我不明白我是否应该为这些东西制作新模板,或者只是更改索引页面上的参数并检查它们。

最佳答案

您可以使用 ORM 对象路由以最少的编码来实现此目的。我假设您使用的是 Doctrine,但如果您使用的是 Propel,则实现应该非常相似(可能只是使用 sfPropelRoute 作为您的类)。在您的应用程序的 config/routing.yml 添加您的自定义路由:

author_articles:
url: /authors/:author
param: { module: articles, action: author }
class: sfDoctrineRoute
options: { model: Article, type: list }

注意:我使用 URL/authors/而不是您请求的/articles/,因此此路由不会与您的文章模块中的任何操作冲突,但您可以在配置中随意使用您喜欢的任何 URL。

保存这些更改后清除缓存以使 Symfony 知道新路由。这样做的目的是告诉您的应用程序获取与/authors/* 匹配的所有 URL,并将它们传递给您的文章模块的作者操作,生成与 URL 中的 :author 参数匹配的对象列表。对象路由仅通过上面的配置自动完成所有这些。

现在在您的文章模块的作者操作中添加:
public function executeAuthor() {
$this->articles = $this->getRoute()->getObjects();
}

现在,您在操作模板的变量中获得了查询结果。在您认为合适的情况下,在您的 authorSuccess.php 模板中循环 $articles 数组。

要使用作者姓名从主列表链接到此路由,您可以将 url_for 助手与刚刚创建的路由一起使用,以动态生成完整的 URL:
<a href="<?php echo url_for('@author_articles?author=' . $article['author']) ?>"><?php echo $article['author'] ?></a>

这里的所有都是它的。

关于php - Symfony 中的文章排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2023827/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com