Estoy tratando de personalizar de restablecimiento de contraseña de correo electrónico en Laravel.

Tengo que reemplazar esta función:

namespace Illuminate\Auth\Passwords;

use Illuminate\Auth\Notifications\ResetPassword as ResetPasswordNotification;
use Illuminate\Http\Request;


trait CanResetPassword
{
    /**
     * Get the e-mail address where password reset links are sent.
     *
     * @return string
     */
    public function getEmailForPasswordReset()
    {
        return $this->email;
    }

    /**
     * Send the password reset notification.
     *
     * @param  string  $token
     * @return void
     */

public function sendPasswordResetNotification($token)
{

    $this->notify(new ResetPasswordNotification($token));

}

Este es mi intento:

 public function sendPasswordResetNotification($token, Requests $request)
{
Mail::to($request->email)->send(new newpassword($token));
}

Me sale este error:

Declaración de
Iluminar\Foundation\Auth\Usuario::sendPasswordResetNotification($token,
Iluminar\Http\Solicitud de $request) debe ser compatible con
Iluminar\Contratos\Auth\CanResetPassword::sendPasswordResetNotification($token)

InformationsquelleAutor prgrm | 2017-03-03

2 Comentarios

  1. 8

    Si usted lee el error, es decir que su clase no es compatible con CanResetPassword. Si mira….

    interface CanResetPassword
    {
        /**
         * Get the e-mail address where password reset links are sent.
         *
         * @return string
         */
        public function getEmailForPasswordReset();
        /**
         * Send the password reset notification.
         *
         * @param  string  $token
         * @return void
         */
        public function sendPasswordResetNotification($token);
    }

    Se puede ver la función sendPasswordResetNotification sólo puede tomar un parámetro, $token. Por lo que usted necesita para eliminar Request $request como un parámetro a partir de la firma de método.

    Con el fin de recibir la solicitud, usted querrá usar la función request() dentro de la sendPasswordResetNotification método.

    public function sendPasswordResetNotification($token)
    {
        Mail::to(request()->email)->send(new newpassword($token));
    }
  2. 7

    Me sorprende que vas a que la longitud de personalizar el correo.

    Intente esto en su lugar:

    php artisan vendor:publish

    A continuación, modifique el archivo aquí

    /resources/views/vendor/notifications/email.blade.php

    Funciona muy bien para nuestro uso.

    [email protected]:~/laravel_5.4$ php artisan vendor:publish
    Copied Directory [/vendor/laravel/framework/src/Illuminate/Pagination/resources/views] To [/resources/views/vendor/pagination]
    Copied Directory [/vendor/laravel/framework/src/Illuminate/Notifications/resources/views] To [/resources/views/vendor/notifications]
    Copied Directory [/vendor/laravel/framework/src/Illuminate/Mail/resources/views] To [/resources/views/vendor/mail]
    Publishing complete.

    Ahora bien, si usted NECESITA para cambiar el texto, y desea que el botón de fantasía que el original ResetPassword clase de usos, usted puede extender la clase del correo en su User.php la clase como en el siguiente ejemplo.

    Aquí está una copia de la nuestra, que funciona muy bien COMO UN EJEMPLO SOLAMENTE:

    <?php
    
    namespace App;
    
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Illuminate\Notifications\Notifiable;
    use Illuminate\Auth\Notifications\ResetPassword;
    use Illuminate\Notifications\Messages\MailMessage;
    
    class User extends Authenticatable
    {
        use Notifiable;
    
        protected $table = 'Users';
    
        /**
         * The attributes that are mass assignable.
         *
         * @var array
         */
        protected $fillable = [
            'firstName',
            'lastName',
            'email',
            'password',
        ];
    
        /**
         * The attributes that should be hidden for arrays.
         *
         * @var array
         */
        protected $hidden = [
            'password', 'remember_token',
        ];
    
        /**
         * Sends the password reset notification.
         *
         * @param  string $token
         *
         * @return void
         */
        public function sendPasswordResetNotification($token)
        {
            $this->notify(new CustomPassword($token));
        }
    }
    
    class CustomPassword extends ResetPassword
    {
        public function toMail($notifiable)
        {
            return (new MailMessage)
                ->line('We are sending this email because we recieved a forgot password request.')
                ->action('Reset Password', url(config('app.url') . route('password.reset', $this->token, false)))
                ->line('If you did not request a password reset, no further action is required. Please contact us if you did not submit this request.');
        }
    }

Dejar respuesta

Please enter your comment!
Please enter your name here