Autour de Laravel

Comment faire passer une variable depuis le controller via le model dans la notification CustomResetPasswordNotification.php ?

Avatar de Eleyane
Eleyane

Bonjour à toutes et à tous,

Je souhaite customiser la notification de la réinitilisation du mot de passe, en effet, je souhaite utiliser 2 templates différents selon le contexte. Or, je ne sais pas comment faire passer la variable depuis le controller, et je ne sais pas si c'est possible d'ailleurs.

Voici un exemple du code

Controller

class RegisterController extends Controller
{
    public function registration() 
    {
        if ($response) {
            $template_id = 100;
        } else {
            $template_id = 200;
        }
    }
}

Model

class Customer extends Authenticatable
{
    use Notifiable;

    /**
     * Send the password reset notification.
     *
     * @param  string  $token
     * @return void
     */
    public function sendPasswordResetNotification($token)
    {
        $this->notify(new CustomResetPasswordNotification($token));
    }
}

Notifications

class CustomResetPasswordNotification extends Notification
{
    use Queueable;

    private $token;
    // private $template_id;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct($token /*, $template_id*/)
    {
        $this->token = $token;
        // $this->template_id = $template_id;
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return [MailTemplateChannel::class];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMailTemplate($notifiable)
    {
        // return (new TemplateMessage($this->template_id))

        return (new TemplateMessage(100))
                    ->attribute('EMAIL', $notifiable->email)
                    ->attribute('PASSWORD', url(route('password.reset', ['token' => $this->token, 'email' => $notifiable->getEmailForPasswordReset()], false)));
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return [
            //
        ];
    }
}

J'essaie de faire passer la variable $template_id dans la notification, c'est possible ? Si oui, comment ?

Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Tu peux stocker ça en session. Peut-être même en session flash.

Vous ne pouvez pas répondre à ce sujet.