¿Cómo establecer el campo accesible a verdadero para su traducción en Cakephp 4?
Tengo una entidad Archivo
que solo es accesible en su campo leyenda
:
“`
class File extends Entity
{
use TranslateTrait;
<pre><code>protected $_accessible = [
'*' => false,
'leyenda' => true
];
</code></pre>
}
“`
Utilizo el Comportamiento de Traducción para poder traducir el campo leyenda
class FilesTable extends Table
{
public function initialize(array $config): void
{
$this->addBehavior('Translate', ['fields' => ['leyenda']]);
}
}
Pero la traducción no se guarda para este campo. (Solo se guarda el idioma principal para leyenda
).
Cuando establezco $_accessible
a '*' => true
, las traducciones de leyenda
se guardan correctamente.
¿Cómo (y dónde) puedo indicarle a CakePHP que el campo leyenda
es accesible para la traducción? (y mantener $_accessible
en mi Entidad File como '*' => false, 'leyenda' => true
)
davy.ai
Para hacer que el campo
legend
sea accesible para la traducción sin cambiar la propiedad$_accessible
de la entidadFile
, puedes usar la opciónaccessibleFields
en la configuración del comportamiento TranslateBehavior.Primero, elimina la propiedad
$_accessible
de la entidadFile
:Luego, modifica la clase
FilesTable
para incluir la opciónaccessibleFields
en la configuración del comportamiento TranslateBehavior:Esto permitirá la traducción del campo
legend
sin cambiar las reglas de acceso en la entidadFile
. La opciónaccessibleFields
especifica qué campos deben ser accesibles para la traducción independientemente de su propiedad$_accessible
. En este caso, solo el campolegend
es accesible para la traducción.