Вызов контроллера laravel через командную строку

В рамках kohana я могу вызвать контроллер через командную строку, используя

php5 index.php --uri=controller/method/var1/var2 

Можно ли вызвать контроллер, который я хочу в Laravel 5 через cli? Если да, как это сделать?

Solutions Collecting From Web of "Вызов контроллера laravel через командную строку"

Пока нет способа (не уверен, что когда-нибудь будет). Однако вы можете создать свою собственную команду Artisan, которая может это сделать. Создайте команду CallRoute используя CallRoute команду:

 php artisan make:console CallRoute 

Это создаст класс команд в app/Console/Commands/CallRoute.php . Содержимое этого класса должно выглядеть следующим образом:

 <?php namespace App\Console\Commands; use Illuminate\Console\Command; use Symfony\Component\Console\Input\InputOption; use Illuminate\Http\Request; class CallRoute extends Command { protected $name = 'route:call'; protected $description = 'Call route from CLI'; public function __construct() { parent::__construct(); } public function fire() { $request = Request::create($this->option('uri'), 'GET'); $this->info(app()['Illuminate\Contracts\Http\Kernel']->handle($request)); } protected function getOptions() { return [ ['uri', null, InputOption::VALUE_REQUIRED, 'The path of the route to be called', null], ]; } } 

Затем вам необходимо зарегистрировать команду, добавив ее в массив $commands в app/Console/Kernel.php :

 protected $commands = [ ..., 'App\Console\Commands\CallRoute', ]; 

Теперь вы можете вызвать любой маршрут , используя следующую команду:

 php artisan route:call --uri=/route/path/with/param 

Имейте в виду, что эта команда вернет ответ, поскольку он будет отправлен в браузер, а это означает, что он содержит заголовки HTTP в верхней части вывода.

Я использую Laravel 5.0, и я запускаю контроллеры, используя этот код:

 $ php artisan tinker $ $controller = app()->make('App\Http\Controllers\MyController'); $ app()->call([$controller, 'myMethodName'], []); 

последний [] в app()->call() может содержать такие аргументы, как [user_id] => 10 т. д.

Для Laravel 5.4: php artisan make: команда CallRoute

Затем в app/Console/Commands/CallRoute.php :

 namespace App\Console\Commands; use Illuminate\Console\Command; use Illuminate\Http\Request; class CallRoute extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'route:call {uri}'; /** * The console command description. * * @var string */ protected $description = 'php artsian route:call /route'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { $request = Request::create($this->argument('uri'), 'GET'); $this->info(app()->make(\Illuminate\Contracts\Http\Kernel::class)->handle($request)); } } 

Затем в app/Console/Kernel.php :

 protected $commands = [ 'App\Console\Commands\CallRoute' ]; 

Вызов: php artisan route:call /path