Necesito personalizar la clase Usuario. Sigo todos los pasos pero en lugar de tomarme mi nueva clase toma la del core. Describo como la cree, es raro porque personalice muchas clases y no tuve problema con ninguna, pero con esta me esta pasando que no la reconoce.
creo el archivo en /src/pers/admin/modelo/usuario.php
le puse el namespace de la personaliación y la extendí de la clase original:
<?php
namespace admin\modelo;
class usuario extends \siu\modelo\usuario {
...
}
3. Concretamente para comprobar cual de las dos esta tomando, en el metodo "nuevo" agregue al principio var_dump("Personalizacion"); die(); en mi clase nueva y var_dump("Core"); die(); en la clase original.
Al intentar registrar un usuario nuevo me devuelve:
string 'Core' (length=11)
Con esto compruebo que levanta la clase usuario del core y no la mía.
Gracias de antemano.
Consulta: ¿desde dónde y cómo estás tratando de usar los métodos personalizados en esa nueva clase? Creo imaginar por dónde viene el problema, pero espero tu respuesta y lo vemos bien.
No cambie el lugar desde donde se usa, simplemente necesitaba extender el metodo “nuevo” para que cada vez que se crea un nuevo usuario se inserte un registro en una tabla, por lo tanto solo agregue unos inserts al final del método
El problema está en el uso de servicios estáticos. Lo tenemos identificado y con intenciones de cambiarlo en una próxima versión, para flexibilizar este tipo de personalizaciones, pero te ofrezco una solución alternativa por ahora. Mirá este ejemplo en siu\operaciones\acceso\controlador:
Como se puede ver, se está consumiendo directamente el servicio estático provisto por la clase siu\modelo\usuario (en este ejemplo, usuario::solicitud_resetear_clave). Si quisieras usar la función redefinida en la clase propia, deberías (por ahora) personalizar también esta clase consumidora, para cambiar el “use”.
<?php
namespace <nombre_pers>\operaciones\acceso;
use <nombre_pers>\modelo\usuario;
use kernel\kernel;
use kernel\error_kernel_validacion;
use siu\errores\error_preinscripcion_login;
use siu\operaciones\acceso\pagelet_recuperar_pass;
use kernel\util\validador;
class controlador extends \siu\operaciones\acceso\controlador
{
function accion__recuperar()
{
$pagelet = $this->vista()->set_pagelet('recuperar_pass');
if (kernel::request()->isPost()) {
$email_raw = $this->get_usuario_sin_validar();
try {
$email = $this->validate_param('usuario', 'post', validador::TIPO_MAIL);
if (($this->usa_captcha()) && (!$this->check_recaptcha())) {
$this->add_error($this->trans('error_recaptcha'));
return;
}
$token = usuario::solicitud_resetear_clave($email);
$this->enviar_mail_recuperar_pass($email, $token);
$pagelet->set_estado_info(pagelet_recuperar_pass::MAIL_ENVIADO);
$this->add_var('email', $email);
} catch (error_kernel_validacion $e) {
$this->add_error($this->trans('login_error_formato_mail'), $e);
$this->add_var('nombre_usuario', $email_raw);
} catch (error_preinscripcion_login $e) {
$pagelet->set_estado_info(pagelet_recuperar_pass::MAIL_NO_EXISTENTE);
}
}
}
}
?>