Aren't you tired of having to create a FormRequest
class for almost every invokable Controller
you create?
It turns out, with a few tweaks, you can use a FormRequest
class as a controller.
This package provides only one class: a RequestController
class that extends the FormRequest
class we all know and adapt it slightly so it works as an invokable Controller
.
composer require lorisleiva/request-controller
class MyController extends RequestController
{
public function middleware()
{
return [];
}
public function authorize()
{
return true;
}
public function rules()
{
return [];
}
public function __invoke()
{
// ...
}
}
Note that the middleware
, authorize
and rules
methods are all optional and default to the value displayed in the example.
Since RequestController
extends FormRequest
, you have access to all the methods you are used to, like:
$this->get($attribute)
— To access a request attribute.$this->route($attribute)
— To access a route parameter.$this->validated()
— To access the validated data.$this->user()
— To access the user.- Etc.
Similarly, you can override the same FormRequest
methods you are used to, in order to customize the validation logic:
attributes()
— To provide user-friendly names to your attributes.message()
— To customize your validation messages.withValidator()
— To extends the current validator.validator()
— To take full control over the validator created.- Etc.
Enjoy! ✨