Ich habe das Tutorial zur Installation von zizac / entrust von GitHub Link befolgt und bin auf einen Fehler gestoßen:

Der Klassenname muss ein gültiges Objekt oder eine Zeichenfolge in Zeile 86 in var / www / html / laravel_test / vendor / zizaco / entrust / src / command / MigrationCommand.php sein

URL der Datei MigrationCommand.php: Link

Ausgabe:

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 Artisan Vendor: Publish war erfolgreich.

Datei: config / entrust.php existiert.

Ich habe keine Optionen für die Datei config / auth.php geändert, wie z. B. auth .php. Wie man es repariert?

12
Noproblem 30 Dez. 2015 im 15:31

3 Antworten

In vendor / zizaco / entrust / src / command / MigrationCommand.php in Zeile 86.

Laravel 5.1. * Zeile hinzufügen

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

Laravel 5.2. * Zeile hinzufügen

$usersTable  = Config::get('auth.providers.users.table');
$userModel   = Config::get('auth.providers.users.model');
5
Bono 30 Apr. 2016 im 14:25

Die akzeptierte Antwort kann das Problem beheben, aber es ist sehr schlecht, direkte Herstellerdateien zu bearbeiten. Im Folgenden wird das Problem behoben, das möglicherweise auftritt, und es wird unterstützt, dass Ihre App weiterhin funktioniert, wenn Sie Entrust aktualisieren und die Codebasis behoben wird.

Fügen Sie die folgenden Zeilen zu config / auth.php darunter hinzu:

/*
|--------------------------------------------------------------------------
| 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 herausbringt, können Sie dieses entfernen oder behalten. Wie du willst.

3
Brad Bird 13 Juli 2017 im 16:19

Versuchen Sie zu laufen:

php artisan config:cache

Um sicherzustellen, dass Ihre Anwendung neue Konfigurationsdateien verwendet

BEARBEITEN

Ok, jetzt sehe ich, diese Bibliothek möchte verwenden:

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

Aber so etwas gibt es in auth nicht mehr.

Als vorübergehende Problemumgehung sollten Sie wahrscheinlich table und model wie folgt zu auth hinzufügen: https://github.com/laravel/laravel/blob/5.1/config/auth.php

Und warten Sie, bis Entrust aktualisiert wird, um dies zu entfernen

2
Marcin Nabiałek 30 Dez. 2015 im 12:57