[英]Custom formfield for core component
我正在為Joomla 3.2編寫一個小插件,該插件應該擴展核心組件(com_content),因此在創建文章時,它還會在后端顯示自定義表單字段。
我遵循了docs的指示 ,但是不幸的是,它根本無法解決 。 表單字段按應有的方式顯示在后端,但是當我輸入內容並單擊“保存”時,值將不會存儲在數據庫中。
test123.php
<?php
defined ( '_JEXEC' ) or die ( 'Restricted access' );
class plgContentTest123 extends JPlugin {
protected $autoloadLanguage = true;
function onContentPrepareForm($form, $data) {
$app = JFactory::getApplication();
$option = $app->input->get('option');
switch($option) {
case 'com_content':
if ($app->isAdmin()) {
JForm::addFormPath(__DIR__ . '/forms');
$form->loadFile('content', false);
}
return true;
}
return true;
}
}
?>
表格/content.xml
<?xml version="1.0" encoding="UTF-8"?>
<form>
<fields name="params" >
<fieldset name="params" >
<field
name="test123"
type="text"
label="Test Field"
/>
<field
name="test234"
type="text"
label="Another one"
filter="email"
/>
</fieldset>
</fields>
</form>
但是,我可以用XML文件替換以前存在的表單域-這些值已正確存儲。 (此外,我注意到, Jform::loadFile
的$reset
參數( 請參閱docs )沒有任何作用。無論是true
還是false
,都會始終替換formfields。)
我完全不知道這里發生了什么……!? 那有人嗎
我找到了解決問題的辦法。 僅供將來參考:
本教程不適用於com_content的原因是,數據庫中的__content
沒有字段“ params”(與本教程中使用的__contact_details
相比)。
因此,要么您必須更改表並添加一列。 但是,有一個更好的解決方案:由於字段集中的所有參數都以JSON編碼的字符串存儲在數據庫中,因此您可以簡單地使用自定義參數連接到現有的字段集中:
<?xml version="1.0" encoding="UTF-8"?>
<form>
<fields name="urls" >
<fieldset name="urls" >
<field
name="test123"
type="text"
label="Test Field"
/>
<field
name="test234"
type="text"
label="Another one"
filter="email"
/>
</fieldset>
</fields>
</form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.