2016-06-08 3 views
1

fand ich habe diesen CodeLaravel + FatalErrorException in Collection.php Linie 11: Interface 'Illuminate Verträge Queue QueueableCollection' nicht

use App\User; 

use Auth; 

use App\Http\Controllers\Controller; 

use App\Libraries\CustomLib; 

class UsersController extends Controller 
{ 

    public function postLogin(){ 
     // var_dump($_POST); 
     $email = \Input::get('username'); 
     $password = \Input::get('password'); 

     $user = User::where("email",$email)->first(); 
     var_dump($user_info); 
    } 
} 

ich diese Störung erhalte:

FatalErrorException in Collection.php line 11: Interface 'Illuminate\Contracts\Queue\QueueableCollection' not found 

Nicht sicher, was das bedeutet.

Irgendwelche Ideen bitte, wie man das löst.

Danke!

+0

Erfolgt dies nur für das ** User ** -Modell und welche Version ist Ihr Laravel/Framework in Ihrer composer.lock-Datei? – TheFallen

+0

@TheFallen Version ist '" Version ":" v5.2.36 "' – PinoyStackOverflower

Antwort

2

ich dieses gelöst durch QueueableCollection.php in diesem Link Download: https://github.com/illuminate/contracts/tree/master/Queue

Sieht aus wie Diese Datei wurde beim Composer-Update nicht gezogen. Nicht sicher, obwohl.

Danke SO! :)

+0

Das gleiche Problem nach Composer Update in Laravel 5.2. Dank dieser Antwort sparen Sie meine Zeit. Prost !!! –

+0

du bist ein lebensretter mann :) – Uzair

-1

Der spezielle Fehler bedeutet, dass eine Datensatzsammlung, die aus der Datenbank als Laravel Collection abgerufen wird, die im QueueableCollection-Interface beschriebenen Methoden nicht implementiert. Dies liegt oft an einer fehlenden Abhängigkeit. In der Regel ermöglichen Laravels-Modelle die Serialisierung. In diesem Fall ist das, weil das Benutzermodell verwendet werden kann, um E-Mails für Passwort-Erinnerungen usw. zu senden. Wenn diese Schnittstelle fehlt, löst Laravel eine Ausnahme aus, die besagt, dass eine erforderliche Komponente nicht instanziiert werden kann. Diese Methode wird auch als "Codierung zu einer Schnittstelle" bezeichnet.

Weitere Info:

Es sieht aus wie Sie eine manuelle Authentifizierung versuchen. Bitte stellen Sie sicher, dass Ihre App \ User-Modell implementiert authentifizierbarer:

use Illuminate\Database\Eloquent\Model; 
use Illuminate\Contracts\Auth\Authenticable; 
use Illuminate\Auth\Authenticable as AuthenticableTrait; 

class User extends Model implements Authenticable { 
    use AuthenticableTrait; 
} 

Diese in der Dokumentation abgedeckt

https://laravel.com/docs/5.2/authentication#authenticating-users

Um Ihnen eine Reise in die Website zu speichern, ist hier eine Umschreibung von ihrem Beispiel mit Ihrem Beispiel:

use App\User; 

use Auth; 

use Illuminate\Support\Facades\Auth; 

use App\Http\Controllers\Controller; 

use App\Libraries\CustomLib; 

class UsersController extends Controller 
{ 

    public function postLogin() 
    { 
     $email = \Input::get('username'); 
     $password = \Input::get('password'); 

     if (Auth::attempt(['email' => $email, 'password' => $password])) { 
      // Authentication passed. Redirect to "dashboard" 
      return redirect()->route('dashboard'); 
     } 
    } 

} 

Informationen über den Benutzer nun über die Auth Fassade zugegriffen werden kann:

Auth::user()->name; 
Auth::user()->email; 
Auth::user()->id; 

Auth::user() ist an die Sitzung gebunden. Wenn diese Option aktiviert ist, wird ein Erinnerungs-Token auch als Cookie gesetzt, so dass Anmeldungen über das Ablaufdatum der Sitzung hinaus bestehen bleiben (ich glaube, der Standardwert beträgt 2 Stunden).

Weitere Informationen:

https://laracasts.com/discuss/channels/general-discussion/laravel-5-authattemp-method?page=1

**Edit:** für Namensräumen in gebracht Model, korrigiert Erbschaft

+0

Wie wird das ** AuthenticableTrait ** einen Fehler von ** QueueableCollection ** beheben, der ein Kontakt für ** Eloquent ** ist? – TheFallen

+0

Ich hatte ein ähnliches Problem, es wurde durch das Lesen der Dokumentation und einen tieferen Einblick behoben: https://github.com/laravel/framework/search?utf8=%E2%9C%93&q=getQueueableIds%28%29 Wenn die IDs für eine Modellsammlung nicht abgerufen werden können, wird dieser Fehler ausgegeben. Nicht standardmäßige App \ User-Modelle können manchmal Fehler in Bezug auf Authentifizierung, Autorisierung, Warteschlangenbildung, Serialisierung, De-Serialisierung und mehr verursachen. –

+0

Ok, aber der Fehler ist für eine fehlende Schnittstelle und ** Authenticable ** Merkmal wird standardmäßig in der Benutzerklasse Illuminate verwendet, die erweitert ** Illuminate \ Database \ Eloquent \ Model **, nicht ** \ Eloquent **. – TheFallen

0

Ich aktualisiere meinen Komponisten, um ältere Version von Illuminate/Datenbank zu verwenden, und es funktioniert jetzt. Ich denke, das Problem ist mit der neuen Version von eloquent. "illuminate/database": "5.2.*" zu "illuminate/database": "5.2.21"