it-swarm-es.tech

Cómo guardar campos personalizados en componentes principales

Estoy tratando de agregar un campo simple y simple a cada elemento de contenido #__, y he seguido cuidadosamente el tutorial en Agregar campos personalizados a los componentes principales , sustituyendo "contenido" por "contacto". Ahora tengo un complemento instalable que incluye con éxito la pestaña/campo en el formulario de edición del elemento de contenido de administrador, y funciona de maravilla, excepto por esa molesta función de "guardar".

La única referencia a Guardar es (nuevamente, contenido en lugar de contacto):

Los campos adicionales se cargan desde el archivo formularios/contact.xml en el directorio de complementos. Es importante que estos campos estén en un elemento de campos con la propiedad de nombre establecida en "params". Si no establece este nombre de propiedad, los campos aparecerán en el sitio de administración pero los valores no se guardarán.

El hecho de que exista esta nota de advertencia me sugiere que Joomla debería saber que los campos están allí y que el código principal lo maneja, pero como no está guardando, me pregunto si debería agregar otro evento.

Aquí está el campo simple que necesito: invisible para el usuario, pero crítico de todos modos, y ni mucho menos la necesidad de un CCK para almacenarlo.
¿Qué está mal/falta que impide que se guarde el campo personalizado?

Actualización: esperando más allá de la esperanza de que el campo personalizado se almacenara en la base de datos, agregué una columna a la tabla de contenido #__ con el mismo nombre e intenté, sin suerte.

gdp.php

class plgContentGdp 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;
    }
}

/forms/content.xml

<?xml version="1.0" encoding="UTF-8"?>
<form>
    <fields name="params" >
        <fieldset name="params" >
            <field
                name="content_myfield"
                type="text"
                label="PLG_CONTENT_GDP_MYFIELD"
                />
        </fieldset>
    </fields>
</form>

HTML representado (sin la etiqueta)

<div class="tab-pane active" id="attrib-params">
    <div class="control-group ">
        <div class="controls">
            <input
                type="text"
                value=""
                id="jform_params_content_myfield"
                name="jform[params][content_myfield]"
                class=""
                aria-invalid="false"
                >
        </div>
    </div>
</div>
22
GDP

El AHA! moment - #__content ya no tiene la columna params, por lo que se deben realizar los siguientes ajustes para que el complemento funcione con componentes/tablas con attribs en lugar de params (que parece ser solo #__contenido a partir de v3.2):

  1. Cambie el nombre fields a "attribs"
  2. Cambie el nombre fieldset a algo único (utilicé el nombre del complemento)
  3. Agregue una cadena de idioma para la pestaña en la página de edición de contenido

/ forms/content.xml

<form>
    <fields name="attribs" >
        <fieldset name="gdp" >
            <field
                name="myfield"
                type="text"
                label="PLG_CONTENT_GDP_MYFIELD"
                />
        </fieldset>
    </fields>
</form>

en-GB.plg_content_pass.ini

COM_CONTENT_GDP_FIELDSET_LABEL="My Custom Fields"
19
GDP