我正在尝试通过插件在Joomla 3上添加一些自定义字段。我创建了一个名为Geoaddress的地址,旨在在文章编辑页面中显示3个文本字段。用户可以编辑其中一个以输入其地址(带有街道名称,邮政编码等),其他两个则为只读。关于地址字段的值,必须在表单保存事件中计算2个只读字段的值。
我并没有真正理解如何做到这一点,但是我实现了在标签中将所有3个字段与文章编辑视图上的其他自定义字段一起显示,并且所有值都存储在数据库中。 我基本上是从Text-Plugin制作了一个副本,并对其进行了调整。现在,我找不到任何解决方案,无法在提交表单后编辑字段的值。 我没有发现FieldsPlugin的onSave方法的任何引用。
forms> geoaddress.xml
<?xml version="1.0" encoding="UTF-8"?>
<form>
<fields name="attribs">
<fieldset name="fields-1" label="Geo Address">
<field
name="geoaddress_longitude"
type="text"
label="GeoAddress - Longitude"
readonly="true"
/>
<field
name="geoaddress_latitude"
type="text"
label="GeoAddress - Latitude"
readonly="true"
/>
</fieldset>
</fields>
</form>
geoaddress.php
class PlgFieldsGeoaddress extends FieldsPlugin
{
protected $autoloadLanguage = true;
public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
{
$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);
if (!$fieldNode)
{
return $fieldNode;
}
if (JFactory::getApplication()->isClient('site'))
{
// The user field is not working on the front end
return;
}
if (JFactory::getApplication()->isAdmin())
{
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('geoaddress');
}
$form->setValue('geoaddress_latitude','123456');
return $fieldNode;
}
}
我仅找到此文档,但找不到要搜索的内容:https://api.joomla.fr/joomla3/d3/df4/classFieldsPlugin.html