Estoy tratando de agregar un campo simple y simple a cada elemento de contenido #__, y he seguido con mucho cuidado el tutorial en Agregar campos personalizados a 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 central 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: con 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>
Respuestas:
El AHA! moment: #__content ya no tiene la
params
columna, por lo que se deben realizar los siguientes ajustes para que el complemento funcione con componentes / tablas enattribs
lugar deparams
(que parece ser solo #__content a partir de v3.2):fields
nombre a "attribs"fieldset
nombre a algo único (utilicé el nombre del complemento)/forms/content.xml
en-GB.plg_content_pass.ini
fuente