¿Qué propiedades (y por qué) se deben incluir en los métodos serialize()
y deserialize()
en Symfony 2?¿Qué propiedades tienen que ser serializadas/deserializadas en Symfony 2 User class?
Por ahora he id
el campo y que sólo funciona, pero me gustaría saber por qué y cuál es el propósito deserialize()
User
en clase. con el fin de evitar este mensaje:
No puede actualizar un usuario de la EntityUserProvider que no contiene un identificador. El objeto de usuario debe ser serializado con su propio identificador mapeado por Doctrine .
Class User implements AdvancedUserInterface, \Serializable
{
/**
* @return string
*/
public function serialize()
{
return serialize($this->id);
}
/**
* @param string $data
*/
public function unserialize($data)
{
$this->id = unserialize($data);
}
}
Aunque sin implementar \Serializable
y con todas las propiedades protected
, estoy consiguiendo:
Symfony \ Component \ Security \ Core \ autenticación \ Token \ UsernamePasswordToken :: serialize() obligada devolver una cadena o NULL.
Gracias por ayudarnos. Sin embargo, sin serializar el ID (por ejemplo, solo el nombre de usuario) me sale "No se puede actualizar un usuario del EntityUserProvider que no contiene un identificador". ... – gremo
Bien. Eso es específico de Doctrine entonces. Deberías serializarlo en este caso. –
Definitivamente necesita identificación, si no va a sobrescribir la forma en que se actualiza el objeto de usuario. Hay pocas frases en la documentación de SF2 sobre este tema: "El ID es el valor más importante que debe ser serializado porque el método refreshUser() recarga al usuario en cada solicitud usando el ID. En la práctica, esto significa que el objeto Usuario se recarga desde la base de datos en cada solicitud usando la identificación del objeto serializado. Esto asegura que todos los datos del usuario estén actualizados ". –