【发布时间】:2020-05-18 19:34:54
【问题描述】:
我们继承了一个Joomla项目,需要为产品图片实现一个重复字段。
我们无法理解如何在数据库中实现这一点。是否有一些命名约定来告诉 Joomla 使用什么表/外键?
我们在 xml 文件中有这个:
<?xml version="1.0" encoding="UTF-8"?>
<field
name="gallery_images"
type="subform"
label="Gallery Images"
description="Images for the gallery"
multiple="true"
min="1"
max="10"
>
<form>
<field
name="image_url"
type="media"
label="Image"
/>
</form>
</field>
然后我们将其拉入表单edit.php文件中,如下所示:
<div class="control-group">
<div class="control-label"><?php echo $this->form->getLabel('gallery_images'); ?></div>
<div class="controls"><?php echo $this->form->getInput('gallery_images'); ?></div>
</div>
这实际上在后端都可以完美运行。但它没有保存任何地方。我们尝试在产品表上创建一个字段,认为它可能会存储为 JSON。我们已经尝试为带有 product_id 的图像创建另一个表,认为 Joomla 可能只是计算出外键?
Joomla 文档似乎没有说明它在数据库中的工作方式。 (https://docs.joomla.org/Subform_form_field_type)
提前致谢。
【问题讨论】:
-
按照现在的配置方式,Joomla 将尝试将 subfields-json 存储在各自的模型
gallery_images列中。只有关于文件名的命名约定,但由于您的 edit.php 已经呈现了您的 .xml 文件字段,我认为这是正确的。 -
谢谢,这是我们的预期,但它没有发生。可能我们正在做的其他事情阻止了它?无论哪种方式,我们都编写了一些代码来手动保存该字段并且有效。我们在互联网上发现了其他必须做同样事情的人。我已经添加了答案。
-
媒体字段可能需要格外小心,因为它是一个 javascript 重字段,并且子表单确实存在需要 javascript 的字段的问题。