私はLaravelアプリがPassportを使用するように設定しようとしていますが、AppServiceProvider.phpでクラスをロードすることにこだわっています。
<?php // AuthServiceProvider.php
namespace S1\Providers;
use Laravel\Passport\PassportServiceProvider;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as
ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
...
public function boot()
{
$this->registerPolicies();
Passport::routes();
Passport::tokensCan([
'client' => 'this is a api client test'
]);
}
}
。
<?php . // auth.php
...
return [
'guards' => [
'web' => [
'driver' => 'passport',
'provider' => 'users',
],
], ...
。
<?php // app.php
'providers' => [
...
Laravel\Passport\PassportServiceProvider::class,
....
。
<?php // AppServiceProvider.php
namespace S1\Providers;
use Illuminate\Support\ServiceProvider;
use S1\Providers\AppServiceProvider;
use Laravel\Passport\PassportServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
// Enable Laravel Migrations Generator for development only
if ($this->app->environment() !== 'production') {
$this->app->register(\Way\Generators\GeneratorsServiceProvider::class);
$this->app->register(\Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class);
}
}
}
この結果、次のエラーが発生します。
[Symfony\Component\Debug\Exception\FatalThrowableError]
Class 'S1\Providers\Passport' not found
私はこれを機能させましたが、再構築しなければならなかったので、今ではこのエラーを乗り越えることができません。私の名前空間で何かが起こっていますが、何がわからないのです。
あなたのAuthServiceProvider.php
、 変化する:
use Laravel\Passport\PassportServiceProvider;
に:
use Laravel\Passport\Passport;
パスポートのインポートを忘れたようです。追加してみてください
use App\Passport\Passport;
appServiceProvider
<?php // AppServiceProvider.php
namespace S1\Providers;
use App\Passport\Passport;
use Illuminate\Support\ServiceProvider;
use S1\Providers\AppServiceProvider;
use Laravel\Passport\PassportServiceProvider;
class AppServiceProvider extends ServiceProvider
{
public function register()
{
// Enable Laravel Migrations Generator for development only
if ($this->app->environment() !== 'production') {
$this->app->register(\Way\Generators\GeneratorsServiceProvider::class);
$this->app->register(\Xethron\MigrationsGenerator\MigrationsGeneratorServiceProvider::class);
}
}
}
特定のPassport
バージョンに適切なLaravel
バージョンをインストールします。 Laravel 5.5、Passport 4.0のインストール:
composer require laravel/passport=~4.0
Laravel=バージョンを確認するには:
php artisan --version
または、"laravel/framework": "5.5.*",
のrequireオブジェクトの下にあるcomposer.json
を参照してください。
composer.jsonを確認してください。laravel/ passportに次のように "require"が含まれているかどうかがわかります。
"require": {
"php": ">=5.6.4",
"laravel/framework": "5.4.*",
"laravel/passport": "^3.0",
"laravel/tinker": "~1.0"
},
再実行しない場合
作曲家にはlaravel/passportが必要です
<?php
namespace App\Providers;
use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Laravel\Passport\PassportServiceProvider;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
Passport::routes();
//
}
}