【发布时间】:2017-06-27 12:05:12
【问题描述】:
我正在使用OctoberCMS 制作一个简单的画廊,基于Laravel 和Twig。
如何按类别过滤记录?
这是我现在的做法,但我认为这不是一个好的解决方案:
我过滤了html,但是分类之外的所有项目的完整记录仍然存在,导致额外的分页和空白页。
数据库
表“画廊”包含类别名称列表。
“图像”表包含图像名称及其标记类别。
图片列表
网址参数是/gallery/:category?/:page?
访问像 /gallery/nature/1 这样的网址将使用 for 循环按类别过滤图像。
<!-- Gallery Category Record Variable -->
{% set category = record.category %}
<!-- Image List -->
{% for record in records %}
<!-- If Image Category Tag matches Gallery Category Name -->
{% if record.category_tag == category %}
<img src="/{{ record.name }}.jpg">
{% endif %}
{% endfor %}
记录
“记录”和“记录”的结果。
for 循环在 'images→category_tag' 记录中显示 'gallery→category' 记录。
分页显示所有“图像→名称”记录。
{% for record in records %} = (All in 'images')
{{ records }} = {<ul><li>...<a href="gallery/nature?page=2">2</a>} (All in 'images')
{{ record }} = {"category":"nature","id":7} (Current category in 'gallery')
解决方案?
有没有办法在生成 html 列表之前按类别过滤“记录”?
【问题讨论】:
-
不确定我是否误解了,但是在将符合条件的记录传递给视图之前获取它不是更简单吗?喜欢
Gallery::where('category_id', $catId)->get()。当然,您首先必须使用从参数中获取的名称来获取类别 ID -
@ChristopherFrancisco 通过OctoberCMS 拖放记录列表或记录详细信息,然后设置模型类和显示列。从那里您可以使用 Twig 语法来使用记录。我是新手,在 Twig 之外使用 Laravel。
-
我的错,OctoberCMS 的链接重定向到分页页面,所以我认为它只是一个分页组件(尽管名字说 CMS,我傻了哈哈哈)
-
@ChristopherFrancisco 我听取了您的建议并尝试使用 Gallery::select()->where()->paginate();它正在解决一些问题,例如缺少 CurrentPage 值。
-
最好在你的组件中进行过滤,一个很好的例子是 RainLab 博客插件,看看它是如何按类别过滤帖子的
标签: php laravel twig octobercms