如何在Octobercms的前端显示attachMany图像?

时间:2019-03-26 22:31:52

标签: laravel twig octobercms

这应该很简单,但无法找出缺少的内容。我正在尝试在前端显示attachMany,但它不起作用。

它在后端工作正常,仅当我将其更改为attachOne时才在前端工作

    `{% for image in ads.gallery %}
   <img src="{{ image.gallery.thumb(100, auto) }}">
  {% endfor %}`

我希望它显示在前端图库中上传的所有图像

2 个答案:

答案 0 :(得分:1)

您只需要从下面的代码中删除图库,即可使用。

sum = from;

答案 1 :(得分:1)

在关系 attachOne 中,这是有效的,因为即使通过for loop使用{{ image.gallery.thumb(100, auto) }},您仍试图获取图库。

对于 attachMany 关系,您需要执行以下操作。

{% for image in ads.gallery %}
   <img src="{{ image.thumb(100, auto) }}">
{% endfor %}

有关更多信息,请访问此官方文档链接Here.

而且,如果您仍然有任何疑问,请发表评论。

编辑

因此您正在页面上使用此查询,

$this['ads'] = Advert::whereHas('cats', function ($query) use ($slug) 
              { 
                 $query->where('slug',$slug); 
              })->get();

现在,根据您的查询,您正在页面上检索多个 广告,因此您需要编写一个for循环广告才能在页面上展示并循环进入画廊

{% for ad in ads %}
   //to get values from you can do {{ad.name}}
   //to get gallery values from particular ad, you will need to write for loop again(because you have used relation attachMany) 
    {% for image in ad.gallery %}
       <img src="{{ image.thumb(100, auto) }}">
    {% endfor %}
{% endfor %}

要检索图库,您应该使用eager loading,因此您的查询应该是

$this['ads'] = Advert::with('gallery')->whereHas('cats', function ($query) use ($slug) 
              { 
                 $query->where('slug',$slug); 
              })->get();