es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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)

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para hacer que el campo legend sea accesible para la traducción sin cambiar la propiedad $_accessible de la entidad File, puedes usar la opción accessibleFields en la configuración del comportamiento TranslateBehavior.

    Primero, elimina la propiedad $_accessible de la entidad File:

    class File extends Entity
    {
        use TranslateTrait;
    }
    

    Luego, modifica la clase FilesTable para incluir la opción accessibleFields en la configuración del comportamiento TranslateBehavior:

    class FilesTable extends Table
    {
        public function initialize(array $config): void
        {
            $this->addBehavior('Translate', [
                'fields' => ['legend'],
                'accessibleFields' => ['legend' => true],
            ]);
        }
    }
    

    Esto permitirá la traducción del campo legend sin cambiar las reglas de acceso en la entidad File. La opción accessibleFields especifica qué campos deben ser accesibles para la traducción independientemente de su propiedad $_accessible. En este caso, solo el campo legend es accesible para la traducción.

Comments are closed.