Reglas Generales
- Toda notificación entregada a través de los canales de notificación propios del proyecto debe extender
App\Notifications\Notification - Nunca extiendas
Illuminate\Notifications\Notificationdirectamente en esas notificaciones - Esas notificaciones deben definir:
subject()ydescription() image()es opcional. La clase base ya resuelve un valor predeterminado razonable, así que solo sobrescríbelo cuando la notificación necesite una imagen diferente.- Usa
php artisan make:notification MyNotification(el stub ya extiende la clase base) para crear una nueva Notification - No fuerces los canales manualmente a menos que esté justificado
- Esta regla se aplica solo a clases reales de notificación de Laravel, normalmente archivos bajo
app/Notificationso clases que extienden clases base de notificación de Laravel/del proyecto. - Dentro de
namespace App\Notifications;,extends Notificationes válido porque se resuelve a la clase base localApp\Notifications\Notification. No exijas escribirextends App\Notifications\Notificationni importar la clase en ese namespace. Lo mismo aplica a sub-namespaces comoApp\Notifications\Authcuando importan la clase base. - Estas reglas cubren las notificaciones dirigidas a usuarios registrados a través de los canales inbox, mail y web push del proyecto. Las notificaciones enviadas a alguien que todavía no es un usuario registrado — como el código que verifica un teléfono o correo electrónico durante el registro, cuando el modelo
Useraún no está guardado — quedan fuera de ellas. - La señal detectable es el canal de entrega. La clase base construye las cargas útiles de mail, database y web push a partir de
subject(),description()eimage(). Una notificación que se entrega solo a través de un canal dedicado que la clase base no implementa — por ejemplo, un código de verificación enviado mediante unSmsChannelpersonalizado con su propiotoSms()— no obtiene ningún beneficio de la clase base y queda fuera de esta regla. No exijas que extienda la clase base ni que definasubject()ydescription().