PHPackages                             matt-daneshvar/laravel-resource-actions - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. matt-daneshvar/laravel-resource-actions

ActiveLibrary

matt-daneshvar/laravel-resource-actions
=======================================

General implementation for Laravel resource actions

3661[1 issues](https://github.com/matt-daneshvar/laravel-resource-actions/issues)PHP

Since Jul 3Pushed 5y ago5 watchersCompare

[ Source](https://github.com/matt-daneshvar/laravel-resource-actions)[ Packagist](https://packagist.org/packages/matt-daneshvar/laravel-resource-actions)[ RSS](/packages/matt-daneshvar-laravel-resource-actions/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

Laravel Resource Actions
========================

[](#laravel-resource-actions)

[![Packagist PHP Version Support](https://camo.githubusercontent.com/415e4f16e32ca59f5b390f1d4600263dab80f7d5bb606209549f8b7f88a69453/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6d6174742d64616e6573687661722f6c61726176656c2d7265736f757263652d616374696f6e73)](https://camo.githubusercontent.com/415e4f16e32ca59f5b390f1d4600263dab80f7d5bb606209549f8b7f88a69453/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f6d6174742d64616e6573687661722f6c61726176656c2d7265736f757263652d616374696f6e73)[![Build Status](https://camo.githubusercontent.com/1f81036f59e6a6f99f4f536a78bccca7dff178dc5671b6882096c5c8a53ddc6b/68747470733a2f2f7472617669732d63692e6f72672f6d6174742d64616e6573687661722f6c61726176656c2d7265736f757263652d616374696f6e732e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/matt-daneshvar/laravel-resource-actions)[![GitHub](https://camo.githubusercontent.com/d90ad93586553163881c3c108e5ff2558be5cdb143143fa3b8c4563553aa4430/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d6174742d64616e6573687661722f6c61726176656c2d7265736f757263652d616374696f6e732e737667)](https://camo.githubusercontent.com/d90ad93586553163881c3c108e5ff2558be5cdb143143fa3b8c4563553aa4430/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6d6174742d64616e6573687661722f6c61726176656c2d7265736f757263652d616374696f6e732e737667)

If you've built a dozen Laravel apps and if you're anything like me, you're tired of rewriting basic CRUD controllers a thousand times. This package DRYs up your code by extracting those repetitive actions into a few magical traits.

Installation
------------

[](#installation)

Require the package using composer:

```
composer require matt-daneshvar/laravel-resource-actions

```

Usage
-----

[](#usage)

Once installed, you can write:

```
class TaskController extends BaseController
{
    use Index, Create, Store, Show, Edit, Update, Destroy;

    protected $rules = ['name' => 'required|string|max:250'];
}
```

Instead of:

```
class TaskController extends BaseController
{
    protected $rules = ['name' => 'required|string|max:250'];

    public function index()
    {
        return view('task.index', ['tasks' => Task::paginate(20)]);
    }

    public function create()
    {
        return view('task.create');
    }

    public function store(Request $request)
    {
        $input = $request->validate($this->rules);

        Task::create($input);

        return back()->with('success', 'A new task is successfully created.');
    }

    public function show(Task $task)
    {
        return view('task.show', ['task' => $task]);
    }

    public function edit(Task $task)
    {
        return view('task.edit', ['task' => $task]);
    }

    public function update(Task $task, Request $request)
    {
        $input = $request->validate($this->rules);

        $task->update($input);

        return back()->with('success', 'The task is successfully updated.');
    }

    public function destroy(Task $task)
    {
        $task->delete();

        return back()->with('success', 'The task is successfully deleted.');
    }
}
```

### Actions

[](#actions)

#### Index

[](#index)

The `index` action returns the `resource.index` view with a paginated collection of the relevant model, so that you may write:

```
class TaskController extends BaseController
{
    use Index;
}
```

Instead of:

```
class TaskController extends BaseController
{
    public function index()
    {
        return view('task.index', ['tasks' => Task::paginate(20)]);
    }
}
```

#### Create

[](#create)

The `create` action returns the `resource.create` view, so that you may write:

```
class TaskController extends BaseController
{
    use Create;
}
```

Instead of:

```
class TaskController extends BaseController
{
    public function create()
    {
        return view('task.create');
    }
}
```

#### Store

[](#store)

The `store` action validates the request against the `$rules`, persists a new model, and redirects back with a success message. For this action you may write:

```
class TaskController extends BaseController
{
    use Store;

    protected $rules = ['name' => 'required|string|max:250'];
}
```

Instead of:

```
class TaskController extends BaseController
{
    protected $rules = ['name' => 'required|string|max:250'];

    public function store(Request $request)
    {
        $input = $request->validate($this->rules);

        Task::create($input);

        return back()->with('success', 'A new task is successfully created.');
    }
}
```

#### Show

[](#show)

The `show` action returns the `resource.show` view with the relevant model, so that you may write:

```
class TaskController extends BaseController
{
    use Show;
}
```

Instead of:

```
class TaskController extends BaseController
{
    public function show(Task $task)
    {
        return view('task.show', ['task' => $task]);
    }
}
```

#### Edit

[](#edit)

The `edit` action returns the `resource.edit` view with the relevant model, so that you may write:

```
class TaskController extends BaseController
{
    use Edit;
}
```

Instead of:

```
class TaskController extends BaseController
{
    public function edit(Task $task)
    {
        return view('task.edit', ['task' => $task]);
    }
}
```

#### Update

[](#update)

The `update` action validates the request against the `$rules`, updates the relevant model, and redirects back with a success message. For this action you may write:

```
class TaskController extends BaseController
{
    use Update;

    protected $rules = ['name' => 'required|string|max:250'];
}
```

Instead of:

```
class TaskController extends BaseController
{
    protected $rules = ['name' => 'required|string|max:250'];

    public function update(Task $task, Request $request)
    {
        $input = $request->validate($this->rules);

        $task->update($input);

        return back()->with('success', 'The task is successfully updated.');
    }
}
```

#### Destroy

[](#destroy)

The `destroy` action deletes the relevant model and redirects back with a success message. For this action you may write:

```
class TaskController extends BaseController
{
    use Destroy;
}
```

Instead of:

```
class TaskController extends BaseController
{
    public function destroy(Task $task)
    {
        $task->delete();

        return back()->with('success', 'The task is successfully deleted.');
    }
}
```

### Using All Actions

[](#using-all-actions)

If you intend to include all 7 resource actions in your controller, you may use the `ResourceActions` trait as an alias:

```
class TaskController extends BaseController
{
    use ResourceActions;
}
```

Which is equivalent to:

```
class TaskController extends BaseController
{
    use Index, Create, Store, Show, Edit, Update, Destroy;
}
```

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance19

Infrequent updates — may be unmaintained

Popularity15

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity33

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/4dd4c3943583b0db4572b8702f3ee8f85a3fa7ecf99401d5f1add6613821f031?d=identicon)[matt-daneshvar](/maintainers/matt-daneshvar)

---

Top Contributors

[![matt-daneshvar](https://avatars.githubusercontent.com/u/10030505?v=4)](https://github.com/matt-daneshvar "matt-daneshvar (37 commits)")

---

Tags

laravelresource-actionsresource-controllerrestful-actions

### Embed Badge

![Health badge](/badges/matt-daneshvar-laravel-resource-actions/health.svg)

```
[![Health](https://phpackages.com/badges/matt-daneshvar-laravel-resource-actions/health.svg)](https://phpackages.com/packages/matt-daneshvar-laravel-resource-actions)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
