Пользовательские поля в модуле с повторяемым полем

Я пытаюсь создать модуль, который отобразит список настраиваемых полей и позволит мне разместить один или несколько в этом модуле.

module.xml

    <fields name="params">
        <fieldset name="basic">
            <field name="componentOfField" type="radio" default="0" label="MOD_CUSTOM_FIELDS_IN_A_MODULE_COMPONENT_OF_FIELD_LABEL" description="MOD_CUSTOM_FIELDS_IN_A_MODULE_COMPONENT_OF_FIELD_DESCRIPTION">
                <option value="0">MOD_CUSTOM_FIELDS_IN_A_MODULE_COMPONENT_OF_FIELD_LABEL_ARTICLE</option>
                <option value="1">MOD_CUSTOM_FIELDS_IN_A_MODULE_COMPONENT_OF_FIELD_LABEL_CONTACT</option>
                <option value="2">MOD_CUSTOM_FIELDS_IN_A_MODULE_COMPONENT_OF_FIELD_LABEL_USERS</option>
            </field>
            <field name="repeatableArticleFields"
                   description="MOD_CUSTOM_FIELDS_IN_A_MODULE_OPTION_DESC"
                   type="subform"
                   label="MOD_CUSTOM_FIELDS_IN_A_MODULE_OPTION_LABEL"
                   min="1"
                   max="1000"
                   formsource="/modules/mod_custom_fields_in_a_module/xml/articlesSubform.xml"
                   multiple="true"
                   buttons="add,remove"
                   layout="joomla.form.field.subform.repeatable"
                   showon="componentOfField:0"
                   groupByFieldset="false"/>
...

XML /articleSubform.xml

<?xml version="1.0" encoding="UTF-8"?>
<form>
    <field
            name="customFieldsListArticle"
            label="MOD_CUSTOM_FIELDS_IN_A_MODULE_FIELDS_LIST_LABEL"
            type="sql"
            default="10"
            sql_select="id, title"
            sql_from="#__fields"
            key_field="id"
            value_field="title"
            sql_filter="com_content.article"
            sql_group="title"

            header="MOD_CUSTOM_FIELDS_IN_A_MODULE_FIELDS_LIST_ARTICLE_DEFAULT_TEXT"
    />
</form>

TMPL /default.php

<?php

    JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');
    JModelLegacy::addIncludePath(JPATH_SITE.'/components/com_content/models', 'ContentModel');

    $id = JFactory::getApplication()->input->get('id');

    $model =& JModelLegacy::getInstance('Article', 'ContentModel', array('ignore_request'=>true));
    $appParams = JFactory::getApplication()->getParams();
    $model->setState('params', $appParams);
    $item =& $model->getItem($id);
    $jcFields = FieldsHelper::getFields('com_content.article',  $item, True);

    foreach($jcFields as $jcField)
    {
        $jcFields[$jcField->name] = $jcField;
    }

echo "<h2>Field Value is equal to: " . $item->jcFields['test']->value . "</h2>";

Это не отображает поле, однако я вижу поле в print_r($jcField);, поэтому поле существует на этой странице.

Кроме того, моя информация о подчиненности не отображается в print_r($params);, и поэтому я не могу ее назвать. Я вижу, что подформация работает на заднем конце, поэтому я думаю, что часть XML правильно закодирована.

2 голоса | спросил Eoin 26 Maypm18 2018, 18:18:58

1 ответ


0

Пока у меня нет личного опыта в вашей задаче, мне кажется, что одна из проблем связана с вашим filter, пытающимся доступ к столбцу, который не принадлежит вызываемой таблице в вашем запросе.

sql_filter="com_content.article"

Я ожидаю, что вам нужно будет использовать предложение JOIN в вашем запросе между #__fields и com_content для достижения намеченного. Может быть полезно вырваться из синтаксиса sql_ и использовать query

ответил mickmackusa 27 Mayam18 2018, 04:11:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132