将 ViewBag 变量传递给组件

Passing ViewBag Variable to Component

自定义图库组件 (Pollozen SimpleGallery) 的标记时,手动传递 slug 效果很好。 (图库组件在布局中使用)。

[Gallery]
idGallery = 0
markup = "user"
slug = "test"

尝试分配由静态页面 (Rainlab Pages) 设置的变量时没有任何反应

[Gallery]
idGallery = 0
markup = "user"
slug = {{page.galleryId}}

{{page.galleryId}} 在实际布局中显示为 "test"。我应该如何将 viewBag 变量分配给组件才能使其正常工作?

为了pass the variable to the component,您必须在使用该组件的树枝部分执行此操作。这是一个例子:

[Gallery]
idGallery = 0
markup = "user"
==
{% component 'Gallery' slug=viewBag.slug %}

我刚刚用我的一个测试组件对此进行了测试,它按预期工作。

我最终不得不创建一个部分来嵌套组件。不知道为什么直接传递变量不起作用,但我怀疑静态页面变量是在组件初始化后计算的。

description = "Gallery (nested for static pages compatibility)"

[viewBag]

[Gallery]
idGallery = 0
markup = "user"
slug = "{{ id }}"

==

{% for image in gallery.images %}
    ...
{% endfor %}

布局内部:

{% partial 'gallery' id=page.galleryId %}