簡體   English   中英

核心組件的自定義表格字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM