‘guard’ => false en las opciones de newEntity() no funciona en Cakephp4.
Ciertamente hay algo que hago mal, pero no puedo usar correctamente la opción guard
del método newEntity()
.
// Entidad
class Bloc extends AbstractBloc
{
protected $_accessible = [
'guard' => false // Todos los campos están protegidos contra la asignación masiva
];
}
En este ejemplo, 'guard' => false
no permite guardar mi entidad:
// Controlador
public function test()
{
$entity = $this->Blocs->newEntity([
'titre' => 'TEST ASSIGNEMENT',
'rubrique_id' => 282,
'description' => 'Contenido'
], ['guard' => false]); // guard es false pero nada cambia
if ($this->Blocs->save($entity)) {
return $this->redirect([...]);
}
else {
die('el guardado es falso');
}
}
¿Qué estoy haciendo mal?
davy.ai
Basándome en el código proporcionado, parece que estás estableciendo correctamente la opción
guard
enfalse
al crear una nueva entidad. Sin embargo, dado que la propiedad$_accessible
de tu entidadBloc
está configurada como['*' => false]
, esto significa que todos los campos están protegidos contra asignación masiva, incluyendo los que estás tratando de establecer al crear la nueva entidad (titre
,rubrique_id
ydescription
).Para solucionar este problema, puedes actualizar la propiedad
$_accessible
de tu entidadBloc
para permitir los campos que deseas establecer durante la asignación masiva, de la siguiente manera:O puedes establecer los valores de los campos individualmente después de crear la nueva entidad en lugar de intentar establecerlos durante la asignación masiva:
Cualquiera de estos enfoques te permitirá crear y guardar una nueva entidad
Bloc
con los campos que deseas establecer.