Argument 1 übergeben SessionGuard::login() muss eine Instanz von Auth\Authenticatable in Laravel 5.2

Bin ich mit Laravel 5.2.

Ich fügte hinzu, ein neues Feld zu den users Tabelle namens username und ich habe es in der Ansicht und AuthController.php

Ich bin auch dabei einen zu prüfen, ob der Benutzer zum verwenden eines reservierten slug für seinen Benutzernamen, wenn ja, werfe ich einen Fehler, wenn der username ist gut, ich Speichere in der Datenbank.

Checke ich gegen 2 reserviert Schnecken banner und image - das ist alles, was ich reserviert habe.

Wenn ich das Häkchen entfernen, werden die Daten in der Datenbank gespeichert, normalerweise, einschließlich der reservierten Schnecken. Also ich muss das überprüfen.

Jedoch, wenn ich das überprüfen, ich bekomme diese Fehlermeldung

ErrorException in SessionGuard.php Linie 439:

Argument 1 übergeben zu Beleuchten\Auth\SessionGuard::login() muss eine Instanz von Illuminate\Verträge\Auth\Authenticatable, string, gegeben, genannt, C:\xampp\htdocs\socialnet\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php auf Zeile 63 und definiert

Dies ist mein code in AuthController nachdem ich modifiziert habe

protected function validator(array $data)
{
    return Validator::make($data, [
        'name' => 'required|max:255',
        'email' => 'required|email|max:255|unique:users',
        'password' => 'required|min:6|confirmed',
        'username' => 'required|alpha_num|unique:users,username',
    ]);
}

protected function create(array $data)
{
    $check = $this->slugCheck($data['username']);

    if($check['status'] == 'nok') {
        return 'this username is a reserved name';
    } else {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
            'username' => $data['username'],
        ]);
    }
}

public function slugCheck($slug){

    $slug = strtolower($slug);

    //is the slug in the banned words list
    //
    if(array_search($slug, array('','banner','image'))){
        return array('status' => 'nok', 'message' => 'This slug is on a list of reserved names');
    }

    $user = User::where('username', '=', $slug)->first();

    if($user){
        return array('status' => 'nok', 'message' => 'This slug is already taken');
    } else {
        return array('status' => 'ok', 'message' => 'Slug is unique');
    }

}

Wenn ich dd($check) nach dem deklarieren der $check variable und wählen Sie einen reservierten Namen, bekomme ich die korrekte Antwort.

array:2 [▼
  "status" => "nok"
  "message" => "This slug is on a list of reserved names"
]
  • stellen Sie sicher, dass Sie Hinzugefügt Benutzername User.php $fillable array.
  • Was macht Ihr-User-Modell aussieht?
  • Es ist bereits da. @manniL es ist ein einfaches Modell mit $fillable und $hidden
  • dieser Fehler ist straight forward. wenn $check['status'] == 'nok', ist wahr, es wird nicht wieder Instanz der Klasse. stattdessen wird eine Zeichenkette zurückgeben. Sie können dies lösen, indem Sie Ihre check-in einigen middleware
InformationsquelleAutor Halnex | 2016-07-15
Schreibe einen Kommentar