Ahora mismo, cuando necesitamos mostrar un mensaje al usuario lo estamos añadiendo al canal master del log, pero las necesidades a la hora de mostrar mensajes al usuario no son las mismas que para el log:
Necesitamos gestionar los mensajes de usuario de forma independiente, para añadir funciones que solamente son interesantes de cara al usuario.
Podemos añadir al modelo User los métodos flashError()
, flashWarning()
, flashInfo()
y flashNotice()
para añadir mensajes a mostrar en pantalla al usuario. Y podemos ampliar esto con funciones para añadir botones, enlaces, etc.
// mostramos un mensaje de error para el usuario
Session::user()->flashError('save-error')
->show();
// mostramos un mensaje de error para el usuario, pero en la siguiente cargar de la página, no ahora
Session::user()->flashError('save-error')
->showLater();
// mostramos un mensaje de advertencia para el usuario, con un botón con enlace
Session::user()->flashWarning('no-accounting-plan')
->addLinkBtn('EditEjercicio?code=2023', 'import-plan')
->show();
// mostramos un mensaje de advertencia con un botón de acción
Session::user()->flashWarning('no-accounting-plan')
->addActionBtn($viewName, 'import-plan', 'import')
->show();
// mostramos un mensaje con un enlace de ayuda
Session::user()->flashNotice('no-accounting-plan')
->addHelpLink('accounting-plan', 'read-more')
->show();
// obtenemos los mensajes del usuario
$messages = Session::user()->getMessages();
Para guardar estos mensajes lo haremos en un nuevo modelo llamado UserMessage. Será este modelo realmente el que tiene los métodos de showLater(), addLinkBtn(), addHelpLink(), etc. Los métodos error(), warning(), info() y notice() del modelo User simplemente crearán un objeto de este modelo y lo devolverán:
class User ...
{
public function error(string $text): UserMessage
{
$message = new UserMessage();
$message->body = Tools::lang()->trans($message);
$message->level = 'error';
return $message;
}
}
Para los no usuarios podemos tener también mensajes en Session:
// mostramos un mensaje de error
Session::flashError('save-error')
->show();
// mostramos un mensaje de error, pero en la siguiente cargar de la página, no ahora
Session::flashError('save-error')
->showLater();
// mostramos un mensaje de advertencia, con un botón con enlace
Session::flashWarning('no-accounting-plan')
->addLinkBtn('EditEjercicio?code=2023', 'import-plan')
->show();
// mostramos un mensaje de advertencia con un botón de acción
Session::flashWarning('no-accounting-plan')
->addActionBtn($viewName, 'import-plan', 'import')
->show();
// mostramos un mensaje con un enlace de ayuda
Session::flashNotice('no-accounting-plan')
->addHelpLink('accounting-plan', 'read-more')
->show();
// obtenemos los mensajes del usuario
$messages = Session::getMessages();
Esta tarea fue aprobada el 21-06-2023 y está pendiente para comenzar el desarrollo el 21-07-2025.
|
22-05-2024 00:27:14 elguitarraverde_19045 ENVIADA - https://github.com/NeoRazorX/facturascripts/pull/1549 |