https://github.com/therealedatta/laravel-actions
Actions: controller + auth + validation in one class
https://github.com/therealedatta/laravel-actions
actions laravel
Last synced: 5 months ago
JSON representation
Actions: controller + auth + validation in one class
- Host: GitHub
- URL: https://github.com/therealedatta/laravel-actions
- Owner: therealedatta
- License: mit
- Created: 2022-10-06T12:30:03.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-09T02:52:17.000Z (over 2 years ago)
- Last Synced: 2025-10-20T09:46:22.410Z (8 months ago)
- Topics: actions, laravel
- Language: PHP
- Homepage:
- Size: 51.8 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Actions: controller + auth + validation in one class
[](https://packagist.org/packages/therealedatta/laravel-actions)
[](https://github.com/therealedatta/laravel-actions/actions?query=workflow%3Arun-tests+branch%3Amain)
[](https://github.com/therealedatta/laravel-actions/actions?query=workflow%3A"Fix+PHP+code+style+issues"+branch%3Amain)
[](https://packagist.org/packages/therealedatta/laravel-actions)
This package provides only one class: an Action class that extends the FormRequest class we all know and adapt it slightly so it works as an invokable Controller.
## Installation
```bash
composer require therealedatta/laravel-actions
php artisan actions:install
```
You can publish the action stubs for the make:action commad:
```bash
php artisan actions:stubs
```
## Usage
```bash
php artisan make:action User\EditUser
```
This command will create the `User\Actions\EditUser` class. The actions subfolder can be modified/removed in in the `config/actions.php` file.
The stub used to generate the class can be modified publishing the stub (check installation section).
`handle` should execute the action itself and `__invoke` (or any other method you want to call)
should call handle and return the controller response.
This package executes authorization automatically. By default is true, you can change this in the `config/actions.php` file.
Important: This package does not call validate automatically. You should call `validate` in `handle` method.
```php
public function handle(): User
{
$validated_data = $this->validate();
return tap($this->user)->update($validated_data);
}
```
## Testing
We use pint for styling, larastan for static analysis and pest for testing:
```bash
composer test
```
## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
## Contributing
Please see [CONTRIBUTING](CONTRIBUTING.md) for details.
## Security Vulnerabilities
Please review [our security policy](../../security/policy) on how to report security vulnerabilities.
## Credits
- Authors:
- [edatta](https://github.com/therealedatta)
- [All Contributors](../../contributors)
- Inspiration:
- [Loris Leiva actions package](https://github.com/lorisleiva/laravel-actions) / [Loris Leiva request/controller article](https://lorisleiva.com/if-formrequests-and-invokable-controllers-had-a-baby/)
## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.