2015-12-30 3 views
11

Ich habe zizac/entrust Installation Tutorial gefolgt von GitHub Link und mit Fehlern konfrontiert:Wie in Laravel zu beheben 5.2 Zizaco trust: Migration Klassenname Validierung?

Class name must be a valid object or a string in var/www/html/laravel_test/vendor/zizaco/entrust/src/commands/MigrationCommand.php on line 86

MigrationCommand.php Datei url: Link

outut:

php artisan entrust:migration 

Tables: roles, role_user, permissions, permission_role 
A migration that creates 'roles', 'role_user', 'permissions', 'permission_role' tables will be created in database/migrations directory 

Proceed with the migration creation? [Yes|no] (yes/no) [yes]: yes 

Creating migration... 
PHP Fatal error: Class name must be a valid object or a string in /var/www/html/laravel_test/vendor/zizaco/entrust/src/commands/MigrationCommand.php on line 86 

der Befehl: php Handwerker-Anbieter: veröffentlichen war erfolgreich.

Datei: config/entrust.php exist.

Ich habe keine Optionen zu config/auth.php Datei geändert wie - auth.php. Wie man es repariert?

Antwort

40

in Verkäufer/zizaco/entrust/src/Befehle zu entfernen /MigrationCommand.php auf der Leitung 86

entfernen Linie:

$usersTable = Config::get('auth.table'); 
    $userModel = Config::get('auth.model'); 

add line:

$usersTable = Config::get('auth.providers.users.table'); 
$userModel = Config::get('auth.providers.users.model'); 

und config/Auth.php Datei schreiben Provider-Leitung als wie mich:

'providers' => [ 
    'users' => [ 
     'driver' => 'eloquent', 
     'model' => App\User::class, 
     'table' => 'users', 
    ], 

    // 'users' => [ 
    //  'driver' => 'database', 
    //  'table' => 'users', 
    // ], 
], 

dann wird Ihr Problem lösen: glücklich Codierung

+1

Dies funktionierte für mich und nicht die akzeptierte Antwort ! –

+0

Das löst das Problem. Ich bin auf Laravel 5.2 und benutze multi auth. Das funktioniert wie Charme! Danke – Nizam

+0

Vielen Dank für Ihre Antwort. Es funktioniert gut mit Laravel 5.2..Dies sollte als richtige Antwort markiert werden .. :-) –

2

Try running:

php artisan config:cache 

um sicherzustellen, dass Ihre Anwendung frisch Konfigurationsdateien

EDIT verwendet

Ok, jetzt sehe ich, wollen diese Bibliothek verwenden:

$usersTable = Config::get('auth.table'); 
    $userModel = Config::get('auth.model'); 

aber da ist nichts so in auth mehr.

So als vorübergehende Lösung sollten Sie probaby table und model-auth Datei hinzufügen, etwa so: https://github.com/laravel/laravel/blob/5.1/config/auth.php

und warten, bis Entrust aktualisiert wird dieses

+0

Danke, immer noch das gleiche Problem. Ich denke, das Problem ist mit der Datei config/auth.php. – Noproblem

+0

Können Sie Ihre 'User.php' Datei anzeigen? Es sollte in "App" Namespace sein –

+0

Link: https://github.com/laravel/laravel/blob/master/app/User.php – Noproblem

5

In Verkäufer/zizaco/entrust /src/commands/MigrationCommand.php auf der Leitung 86.

Laravel 5.1. * Add Line

$usersTable = Config::get('auth.table'); 
$userModel = Config::get('auth.model'); 

Laravel 5.2. * Add Line

$usersTable = Config::get('auth.providers.users.table'); 
$userModel = Config::get('auth.providers.users.model'); 
+1

Während dieser Code die Frage beantworten könnte, wäre es besser, einige Kontext einzubeziehen, zu erklären, wie es funktioniert und wann es zu verwenden ist. Nur-Code-Antworten sind auf lange Sicht nicht nützlich. – Bono

3

Die akzeptierte Antwort kann das Problem beheben, aber es ist sehr schlechte Praxis direkte Herstellerdateien zu bearbeiten.Das Folgende behebt das Problem, das Sie möglicherweise haben, und unterstützt Ihre App weiterhin, wenn Sie sich entscheiden, Entrust zu aktualisieren, und sie beheben ihre Codebasis.

Fügen Sie die folgenden Zeilen zu config/Auth.php unter:

/* 
|-------------------------------------------------------------------------- 
| User Providers 
|-------------------------------------------------------------------------- 
| 
| All authentication drivers have a user provider. This defines how the 
| users are actually retrieved out of your database or other storage 
| mechanisms used by this application to persist your user's data. 
| 
| If you have multiple user tables or models you may configure multiple 
| sources which represent each model/table. These sources may then 
| be assigned to any extra authentication guards you have defined. 
| 
| Supported: "database", "eloquent" 
| 
*/ 

Laravel 5.1 - 5,4

'model' => \App\Models\User::class, 
'table' => 'users', 

Sobald Entrust ein Update rollt Sie diese es oder halten entfernen können. Wie du willst.

+1

funktioniert in Laravel 5.4 – Cocuba

Verwandte Themen