I created a class 'ArticleRequest' extending the Laravel Requests/Request class. This was method injected on to the store and update methods of my ArticleController and worked great.
I have since expanded on the ArticleRequest class to include further request handling for all request types (not just POST / PUT requests). It is now also used to check article requests in general (including GET requests) and so decided not to repeatedly inject on the methods and include it once in the ArticleController constructor instead. I achieved this by only passing the validation rules on the methods I needed:
public function rules()
{
$rules = $this->rules;
if(Request::isMethod('get') || Request::isMethod('delete'))
{
$rules = [];
}
return $rules;
}
This is also working great, but as a peculiar side effect when I try to run:
php artisan route:list
I get:
[Symfony\Component\Debug\Exception\FatalErrorException]
Call to a member function make() on null
My question is, is this error correct and should I change my implementation to use something other than the Laravel Request/Request in the Controller constructor or is this a bug in the Laravel artisan command route:list?
Full stack trace below.
PHP Fatal error: Call to a member function make() on null in /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Foundation/Http/FormRequest.php on line 73
PHP Stack trace:
PHP 1. {main}() /home/vagrant/code/base/artisan:0
PHP 2. Illuminate\Foundation\Console\Kernel->handle($input = *uninitialized*, $output = *uninitialized*) /home/vagrant/code/base/artisan:36
PHP 3. Symfony\Component\Console\Application->run($input = *uninitialized*, $output = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:94
PHP 4. Symfony\Component\Console\Application->doRun($input = *uninitialized*, $output = *uninitialized*) /home/vagrant/code/base/vendor/symfony/console/Symfony/Component/Console/Application.php:126
PHP 5. Symfony\Component\Console\Application->doRunCommand($command = *uninitialized*, $input = *uninitialized*, $output = *uninitialized*) /home/vagrant/code/base/vendor/symfony/console/Symfony/Component/Console/Application.php:195
PHP 6. Illuminate\Console\Command->run($input = *uninitialized*, $output = *uninitialized*) /home/vagrant/code/base/vendor/symfony/console/Symfony/Component/Console/Application.php:874
PHP 7. Symfony\Component\Console\Command\Command->run($input = *uninitialized*, $output = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Console/Command.php:101
PHP 8. Illuminate\Console\Command->execute($input = *uninitialized*, $output = *uninitialized*) /home/vagrant/code/base/vendor/symfony/console/Symfony/Component/Console/Command/Command.php:257
PHP 9. Illuminate\Container\Container->call($callback = *uninitialized*, $parameters = *uninitialized*, $defaultMethod = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Console/Command.php:115
PHP 10. call_user_func_array:{/home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Container/Container.php:523}(*uninitialized*, *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Container/Container.php:523
PHP 11. Illuminate\Foundation\Console\RouteListCommand->fire() /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Container/Container.php:523
PHP 12. Illuminate\Foundation\Console\RouteListCommand->getRoutes() /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:75
PHP 13. Illuminate\Foundation\Console\RouteListCommand->getRouteInformation($route = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:89
PHP 14. Illuminate\Foundation\Console\RouteListCommand->getMiddleware($route = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:109
PHP 15. Illuminate\Foundation\Console\RouteListCommand->getControllerMiddleware($actionName = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:142
PHP 16. Illuminate\Foundation\Application->make($abstract = *uninitialized*, $parameters = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php:161
PHP 17. Illuminate\Container\Container->make($abstract = *uninitialized*, $parameters = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:642
PHP 18. Illuminate\Container\Container->build($concrete = *uninitialized*, $parameters = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Container/Container.php:656
PHP 19. Illuminate\Container\Container->getDependencies($parameters = *uninitialized*, $primitives = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Container/Container.php:813
PHP 20. Illuminate\Container\Container->resolveClass($parameter = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Container/Container.php:848
PHP 21. Illuminate\Foundation\Application->make($abstract = *uninitialized*, $parameters = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Container/Container.php:887
PHP 22. Illuminate\Container\Container->make($abstract = *uninitialized*, $parameters = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:642
PHP 23. Illuminate\Container\Container->fireResolvingCallbacks($abstract = *uninitialized*, $object = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Container/Container.php:679
PHP 24. Illuminate\Container\Container->fireCallbackArray($object = *uninitialized*, $callbacks = *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Container/Container.php:1052
PHP 25. Illuminate\Validation\ValidationServiceProvider->Illuminate\Validation\{closure}($resolved = *uninitialized*, *uninitialized*) /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Container/Container.php:1089
PHP 26. Illuminate\Foundation\Http\FormRequest->validate() /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Validation/ValidationServiceProvider.php:31
PHP 27. Illuminate\Foundation\Http\FormRequest->getValidatorInstance() /home/vagrant/code/base/vendor/laravel/framework/src/Illuminate/Validation/ValidatesWhenResolvedTrait.php:18