2016-10-02 1 views
-1

Ich brauche eine E-Mail zu senden, nachdem ein neuer Benutzer angelegt wird.Laravel E-Mail Bestätigung über die Registrierung

Aber ich weiß nicht, wie auf der Homepage zurückzukehren, ohne einen Fehler. Das ist, was ich gerade mache.

User::create([ 
      'name' => $data['name'], 
      'username' => $data['username'], 
      'email' => $data['email'], 
      'password' => bcrypt($data['password']), 
      'phone' => bcrypt($data['phone']), 
      'confirmation_code' => str_random(30), 
     ]); 

Email_function(); 

if (Auth::attempt(['email' => $data['email'], 'password' => bcrypt($data['password']) ])) { 
     // Authentication passed... 
     return redirect('/'); 
    } 

Ich halte diese Meldung als mein Fehler.

SErrorException in SessionGuard.php line 439: 
Argument 1 passed to Illuminate\Auth\SessionGuard::login() must implement interface Illuminate\Contracts\Auth\Authenticatable, null given, called in /Applications/XAMPP/xamppfiles/htdocs/sniddl/vendor/laravel/framework/src/Illuminate/Foundation/Auth/RegistersUsers.php on line 63 and defined 

Edit: den Titel geändert, um die Antwort zu reflektieren.

+0

Wo der Rest der Fehler ist? – Devon

+0

Ich habe es jetzt hinzugefügt. Das tut mir leid. – CriticalTheWizard

+1

Welche Zeile 63 von RegistersUser? Der auth :: Versuch? – Devon

Antwort

4

Hier wird eine mit einer zusätzlichen E-Mail-Funktion

sicher Antrag ist auf den Seiten oben mit Namensräumen verwendet werden enthalten Stellen für Registerregler erstellen Funktion geändert:

use Illuminate\Http\Request; 

Ändern Sie den erstellen Funktion in Ihrem Controller:

protected function create(Request $data) 
{ 


    $user      = new User; 
    $user->name     = $data->input('name'); 
    $user->username    = $data->input('username'); 
    $user->email    = $data->input('email'); 
    $user->password    = bcrypt($data->input('password')); 
    $user->phone    = bcrypt($data->input('phone')); 
    $user->confirmation_code = str_random(60); 
    $user->save(); 

    if ($user->save()) { 

     $this->sendEmail($user); 

     return redirect('VIEWPATH.VIEWFILE')->with('status', 'Successfully created user.'); 

    } else { 

     return redirect('VIEWPATH.VIEWFILE')->with('status', 'User not created.'); 

    } 

} 

Erstellen Sie die sendEmail f in demselben Controller, der Laravels eingebaute E-Mail verwenden wird. Stellen Sie sicher, Sie erstellen und Ihre HTML-E-Mail:

public function sendEmail(User $user) 
{ 
    $data = array(
     'name' => $user->name, 
     'code' => $user->confirmation_code, 
    ); 
    \Mail::queue('EMAILVIEWPATH.HTMLEMAILVIEWFILE', $data, function($message) use ($user) { 
     $message->subject('Subject line Here'); 
     $message->to($user->email); 
    }); 
} 

HINWEIS: Ihr gehen zu müssen, die VIEWPATH.VIEWFILE und EMAILVIEWPATH.HTMLEMAILVIEWFILE bei einer minimium in den obigen Beispielen aktualisieren.

Überprüfen Sie die unten repos für Controller: https://github.com/laravel/laravel/blob/master/app/Http/Controllers/Auth/RegisterController.php https://github.com/jeremykenedy/laravel-auth/blob/master/app/Http/Controllers/Auth/AuthController.php

REGISTER VIEW (Klinge) Beispiel https://github.com/jeremykenedy/laravel-auth/blob/master/resources/views/auth/register.blade.php

E-MAIL, DASS VARIABLES ERHÄLT: https://github.com/jeremykenedy/laravel-auth/blob/master/resources/views/emails/activateAccount.blade.php

0

Ok, es stellt sich heraus, dass User::create als Variable erlaubt es Ihnen, sich in den Benutzer einzuloggen, indem Sie die Variable zurückgeben. So was.

$user = User::create([ 
      'name' => $data['name'], 
      'username' => $data['username'], 
      'email' => $data['email'], 
      'password' => bcrypt($data['password']), 
      'phone' => bcrypt($data['phone']), 
      'confirmation_code' => str_random(30), 
     ]); 

Email_function(); 

return $user; 
+0

Es ist das, wie Sie ein erstellen Benutzer in Ihrem Auth-Controller? – developernator

+0

Ja, ich bin jetzt. Mache ich etwas falsch? – CriticalTheWizard

Verwandte Themen