PHPackages                             bashirsh/laravel\_easy\_controller - 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. [API Development](/categories/api)
4. /
5. bashirsh/laravel\_easy\_controller

ActiveLibrary[API Development](/categories/api)

bashirsh/laravel\_easy\_controller
==================================

build api resources controllers in fast, easy and fully customizable way.

v1.0.5(6y ago)81652MITPHPPHP ^7.1.3

Since Jun 23Pushed 6y ago1 watchersCompare

[ Source](https://github.com/BashirShallah/laravel_easy_controller)[ Packagist](https://packagist.org/packages/bashirsh/laravel_easy_controller)[ RSS](/packages/bashirsh-laravel-easy-controller/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependencies (2)Versions (7)Used By (0)

Laravel Easy Controller 1.0.4
=============================

[](#laravel-easy-controller-104)

Build resources &amp; api controllers in fast, easy and fully customizable way.

Contents
========

[](#contents)

- [Features](#features)
- [Installation](#installation)
- [API Controller](#api-controller)
- [Multi Page Crud](#multi-page-crud)
- [Hooks](#hooks)

Features
========

[](#features)

### index features

[](#index-features)

- filter
- Query Hook
- pagination
- limit
- order &amp; order by
- transform row
- export to excel (current page or all results).

### forms features

[](#forms-features)

- validation
- change the data before store
- redirect
- after save hooks

### delete features

[](#delete-features)

- redirect
- after save hooks

Installation
============

[](#installation)

composer require bashirsh/laravel\_easy\_controller

Api Controller
--------------

[](#api-controller)

to create new API Controller we need to extend the class `ApiController`,

app/Http/Controllers/Api/UsersController.php

```
use bashirsh\laravel_easy_controller\ApiController;

class UsersController extends ApiController {
    protected $model = '\App\Models\User';
}

```

This class will create a full resource controller with the methods:

- index
- show
- store
- update
- delete

then we need to add the resource to the routes.

routes/api.php

```
...
Route::apiResource('users', 'UsersController');
...

```

CrudController
--------------

[](#crudcontroller)

to create new controller we need to extend the class `CrudController`

#### Controller

[](#controller)

app/Http/Controllers/UsersController.php

```
use bashirsh\laravel_easy_controller\CrudController;

class UsersController extends CrudController {
    protected $viewPath = 'admin.users';
    protected $model = '\App\Models\User';
    protected $resource = 'admin.users';
}

```

This class will create a full resource controller with the methods:

- index
- show
- add
- store
- edit
- update
- delete
- export to excel

then we need to add the resource to the routes, and create view files.

#### Route

[](#route)

routes/web.php

```
...
Route::resource('users', 'UsersController');
Route::get('users_excel', 'UsersController@excel');
...

```

#### Views

[](#views)

create 4 files in views
resources/views/admin/users/index.blade.php
the controller will pass the variable `$data` which contain the result of Model::paginate()

resources/views/admin/users/show.blade.php
the controller will pass the variable `$item`, which contain the result of Model::find($id)

resources/views/admin/users/create.blade.php we can print validation errors

```
@if ($errors->any())

        @foreach ($errors->all() as $error)
            {{ $error }}
        @endforeach

@endif

```

resources/views/admin/users/edit.blade.php
the controller will pass the variable `$item`, which contain the result of Model::find($id)

Hooks
-----

[](#hooks)

The package contain a lot of hooks which help you to customize any thing in the controllers, you can see them here: [Hooks](src/Hooks).

### Index Hooks

[](#index-hooks)

#### Index Query Hook

[](#index-query-hook)

The package will handle pagination limit and filter out of the box, and we can change the query ex: adding conditions or using eager load.

```
use bashirsh\laravel_easy_controller\ApiController;

class UsersController extends ApiController {
    protected $model = '\App\Models\User';

    function indexQueryHook($query){
        $query->where('user_type', 'admin');
        return $query;
    }
}

```

#### Define filters

[](#define-filters)

we define our allowed filters by defining.

```
use bashirsh\laravel_easy_controller\ApiController;

class UsersController extends ApiController {
    protected $model = '\App\Models\User';

    public function filter_fields(){
        return [
            [
                // field equal to name by default
                // and the default condition is '='
                'name'=>'id'
            ],
            [
                'name'=>'name',
                'field'=>'name',
                'cond'=>'like'
            ]
        ];
    }
}

```

#### Transform Row

[](#transform-row)

```
use bashirsh\laravel_easy_controller\ApiController;

class UsersController extends ApiController {
    protected $model = '\App\Models\User';

    public function index_transformer($item){
        $item->new_value = 'test';
        $item->other_value = 'test 2';

        return $item;
    }
}

```

### Forms Hooks

[](#forms-hooks)

#### define validation rules

[](#define-validation-rules)

```
use bashirsh\laravel_easy_controller\ApiController;

class UsersController extends ApiController {
    protected $model = '\App\Models\User';

    public function add_rules(){
        return [
            'name' => 'required',
            'email' => 'required|email|unique:users',
            'password' => 'required',
        ];
    }

    public function edit_rules($item){
        return [
            'name' => 'required',
            'email' => [
                'required',
                Rule::unique('users')->ignore($item->id),
            ],
        ];
    }
}

```

#### change the data before store

[](#change-the-data-before-store)

```
use bashirsh\laravel_easy_controller\ApiController;

class UsersController extends ApiController {
    protected $model = '\App\Models\User';

    protected function prepare_data_to_add($data)
    {
        $data->created_by = Auth::ID();
        return $data;
    }

    protected function prepare_data_to_update($data)
    {
        $data->updated_by = Auth::ID();
        return $data;
    }
}

```

#### redirect

[](#redirect)

you can define redirect\_url to redirect after save, update or delete

and you can customize using these methods

- add\_redirect\_url
- edit\_redirect\_url
- destroy\_redirect\_url

```
use bashirsh\laravel_easy_controller\ApiController;

class UsersController extends ApiController {
    protected $model = '\App\Models\User';

    /**
     * $item: the affected object
     */
    protected function redirect_url($item)
    {
        return route('users.index');
    }

    protected function add_redirect_url($item)
    {
        return route('users.show', [$item->id]);
    }

    protected function edit_redirect_url($item)
    {
        return route('users.show', [$item->id]);
    }

    protected function destroy_redirect_url($item)
    {
        return route('users.index');
    }
}

```

#### After save hook

[](#after-save-hook)

```
use bashirsh\laravel_easy_controller\ApiController;

class UsersController extends ApiController {
    protected $model = '\App\Models\User';

    // used for both save and update
    protected function afterSaveHook($item, $request)
    {
        // do whatever you want
    }

    protected function afterUpdateHook($item, $request)
    {
        // do whatever you want
    }

    protected function afterStoreHook($item, $request)
    {
        // do whatever you want
    }
}

```

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 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.

###  Release Activity

Cadence

Every ~16 days

Total

6

Last Release

2432d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/eb0491738d4118a251985772701d19d79a4936bf5bedcc078b7fedf26f431cd2?d=identicon)[BashirShallah](/maintainers/BashirShallah)

---

Top Contributors

[![BashirShallah](https://avatars.githubusercontent.com/u/4357479?v=4)](https://github.com/BashirShallah "BashirShallah (15 commits)")

---

Tags

apicontrollercrudlaravel

### Embed Badge

![Health badge](/badges/bashirsh-laravel-easy-controller/health.svg)

```
[![Health](https://phpackages.com/badges/bashirsh-laravel-easy-controller/health.svg)](https://phpackages.com/packages/bashirsh-laravel-easy-controller)
```

###  Alternatives

[darkaonline/l5-swagger

OpenApi or Swagger integration to Laravel

2.9k34.0M112](/packages/darkaonline-l5-swagger)[echolabsdev/prism

A powerful Laravel package for integrating Large Language Models (LLMs) into your applications.

2.3k388.3k10](/packages/echolabsdev-prism)[sburina/laravel-whmcs-up

WHMCS API client and user provider for Laravel

271.3k](/packages/sburina-laravel-whmcs-up)

PHPackages © 2026

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