У меня проблема, когда пространство имен passport недоступно, когда я вызываю passport:client. Я создал новый проект Laravel версии 5.6.34, в который я установил Паспорт Laravel по документации. Я также проверил аналогичный вопрос и безуспешно выполнил все шаги.
Вызов php artisan passport:client --password --name = "Test" из командной строки работает без проблем, и я вижу клиента в базе данных.
Однако, если я создам маршрут в routes/web.php следующим образом:
<?php
use Illuminate\Support\Facades\Route;
use \Illuminate\Support\Facades\Artisan;
Route::get('/', function () {
Artisan::call('passport:client', [
'--password' => true,
'--name' => "Test client",
'--quiet' => true,
]);
});
и используйте фасад Artisan для вызова команды. Я получаю сообщение об ошибке ниже, когда перехожу к http://homestead.test/.
Symfony \ Component \ Console \ Exception \ CommandNotFoundException
The command "passport:client" does not exist.
Я добавил Laravel\Passport\PassportServiceProvider::class в массив поставщиков в config/app.php.
Как я могу вызвать команду passport:client из веб-маршрута?
У нас есть приложение Laravel, которое имеет несколько сотен подключений к базе данных, которые обрабатываются динамически. В интерфейсе администратора вы можете создать новый проект и, следовательно, новую базу данных, в которой нам нужно создать клиента.
Другой вариант - создать экземпляр ClientRepository и вызвать метод createPasswordGrantClient(), но я бы хотел этого избежать, если это возможно. Мне любопытно узнать, почему пространство имен доступно при вызове из CLI, но не через запрос. Я могу вызывать другие команды, такие как migrate:fresh, по запросу, но passport:client не сработает, даже если он является частью миграции или внутри другой команды.






Согласно эта ссылка, я выполнил следующие команды.
composer update
php artisan config:cache
php artisan migrate
php artisan passport:install
Это мне помогло.
Спасибо, но это то же самое, что и мой связанный аналогичный вопрос, который не помог, однако я ценю время, которое вы потратили на это. Может быть, это поможет кому-то еще с подобной проблемой