2016-05-04 19 views
0

Ich versuche, Benutzer auf die Homepage umleiten, wenn ausgeblendet Eingabefeld in einen ungültigen Wert geändert wurde, aber da create-Methode Benutzerinstanz zurückgeben muss ich das hier nicht tun. Also, was sind meine Möglichkeiten?Laravel 5.2 Redirect in AuthController Methode erstellen

/** 
* Create a new user instance after a valid registration. 
* 
* @param array $data 
* @return User 
*/ 
protected function create(array $data) 
{ 
    $role = Role::where('name', $data['role'])->first(); 

    // Hidden role field has been tampered with! Redirect to homepage. 
    if(!$role){ 
     return redirect('/'); 
    } 

    $user = new User(); 
    $user->email = $data['email']; 
    $user->password = bcrypt($data['password']); 
    $user->save(); 
    $user->roles()->attach($role); 
    return $user; 
} 

fatale Fehler mit oben-Code:

FatalThrowableError in SessionGuard.php line 418: 
Type error: Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of Illuminate\Http\RedirectResponse given, called in E:\xampp\htdocs\taskie\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php on line 63 
+0

Erklären Sie Ihr Problem spezifisch.Wenn Sie irgendeinen Fehler dann zeigen Sie es und sagen Sie, was Sie wollen? –

+0

@Chonchol Mahmud Erste Frage mit Fehlermeldung aktualisiert. Ich möchte Benutzer innerhalb der create() Methode zur Startseite umleiten, wenn das versteckte Eingabefeld keinen gültigen Wert enthält. –

+0

Zeigen Sie Ihre Routen-Datei für die Startseite an. –

Antwort

0

Im AuthController mit handwerklichem erzeugen make:auth wird die Register Benutzeranforderung register durch das Verfahren behandelt, nicht create. Diese Methode ist im Merkmal Illuminate\Foundation\Auth\RegistersUsers implementiert. Sie können diese Methode in Ihrem Controller überladen und ihr Verhalten ändern.

/** 
* Handle a registration request for the application. 
* 
* @param \Illuminate\Http\Request $request 
* @return \Illuminate\Http\Response 
*/ 
public function register(Request $request) 
{ 
    $data = $request->all(); 
    $role = Role::where('name', $data['role'])->first(); 

    // Hidden role field has been tampered with! Redirect to homepage. 
    if(!$role){ 
     return redirect('/'); 
    } 

    return parent::register($response); 
} 
0

Ich löste das Problem durch Erstellen einer benutzerdefinierten Validierung.

'email' => ['required','max:255','unique:users','regex:/(@org.co.uk)$/',], 

und jetzt keine Notwendigkeit von Redirects.