PHPackages                             christhompsontldr/laraman - 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. [Admin Panels](/categories/admin)
4. /
5. christhompsontldr/laraman

ActiveProject[Admin Panels](/categories/admin)

christhompsontldr/laraman
=========================

Laravel crud manager.

v3.0.4(6y ago)71.2k2MITPHP

Since May 2Pushed 6y ago2 watchersCompare

[ Source](https://github.com/ChrisThompsonTLDR/laraman)[ Packagist](https://packagist.org/packages/christhompsontldr/laraman)[ RSS](/packages/christhompsontldr-laraman/feed)WikiDiscussions 3.0 Synced 2w ago

READMEChangelog (10)Dependencies (1)Versions (26)Used By (0)

Laraman - Laravel Data Manager
==============================

[](#laraman---laravel-data-manager)

Laraman is a Laravel based administration panel.

Laraman provides a quick user interface for reviewing and managing data stored in your database.

Laraman is really good at the index route, searching, filtering and pagination. It leaves the create, update and delete to the application.

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

[](#installation)

### Composer

[](#composer)

Require this package with composer:

```
composer require christhompsontldr/laraman

```

### Service Provider

[](#service-provider)

After updating composer, add the ServiceProvider to the providers array in config/app.php

#### Laravel 5.x:

[](#laravel-5x)

```
Christhompsontldr\Laraman\ServiceProvider::class,

```

### Config

[](#config)

Copy the `config/laraman.php` file from the packge to your applications config directory.

Routes
------

[](#routes)

Laraman utilizes the `resource` method in routes to build all the required routes.

In `routes/web.php` add"

```
Laraman::resource('users');

```

Laraman will now look for a `app/Http/Controllers/Manage/UserController.php`.

The namespace of the Laraman controllers can be changed in the `config/laraman.php` file. `Manage` is the default namespace.

Models
------

[](#models)

Include the Laraman trait on your model

```
use Christhompsontldr\Laraman\Traits\LaramanModel;

```

and then use it

```
use LaramanModel;

```

Laraman utilizes something we call `formatters`. We have included a few default formatters, but you are welcome to write your own. Review the `Christhompsontldr\Laraman\Traits\LaramanModel` class for examples.

Think of these as post-accessors. This allows Laraman to manipulate model data after the application's accessors have been applied.

Example of using the date formatter

```
public function __configure()
{
    $this->columns = [
        [
            'field' => 'created_at',
            'display' => 'Created',
            'formatter' => 'datetime',
            'options'   => [
                'format' => 'F j, Y g:ia',
            ]
        ],

```

Controllers
-----------

[](#controllers)

Include the Laraman trait on your controller

```
use Christhompsontldr\Laraman\Traits\LaramanController;

```

and then use it

```
use LaramanController;

```

Laraman expects your controller to have a `__configure()` method where a few things are configured.

```
public function __configure()
{
    $this->columns = [
        [
            'field' => 'id',
        ],
        [
            'field' => 'name',
        ],
        [
            'field' => 'email',
        ],
        [
            'field'   => 'organization.name',
            'display' => 'Organization',
        ],
    ];

    $this->buttons = [
        config('laraman.view.hintpath') . '::buttons.view',
    ];
}

```

This example will build an index route with a table with 4 columns and 1 button.

Options
-------

[](#options)

### Model

[](#model)

If the model name you want to use doesn't make the naming convention you used for your controller, it can be set with the model attribute

```
    public function __configure()
    {
        $this->model = \App\Mail::class;

```

### Views

[](#views)

Need to load views from another path, use the `viewPath` attribute

```
    public function __configure()
    {
        $this->viewPath = config('laraman.view.hintpath') . '::mail';

```

### Route

[](#route)

The route where laraman lives for this controller can be changed

```
    public function __configure()
    {
        $this->routePath = config('laraman.route.prefix') . '.mail';

```

### Search

[](#search)

You can enable model level searches with the `searchEnabled` attribute

```
public function __configure()
{
    $this->searchEnabled = true;

```

Your model will need to have implemented a `search()` method. This is commonly found in the Laravel Scout library or the Algolia Search for Laravel library.

### Columns

[](#columns)

The only required array key for a column is the `field`. This will be the database column name you want to display.

#### display

[](#display)

`display` will change the name displayed to the user in the top of the table.

#### related model data

[](#related-model-data)

The dot notation can be used to reach related model data.

```
public function __configure()
{
    $this->columns = [
        [
            'field' => 'id',
        ],
        [
            'field' => 'name',
        ],
        [
            'field' => 'email',
        ],
        [
            'field'   => 'organization.name',
            'display' => 'Organization',
        ],
    ];

```

`organization.name` will load the name from the related organization.

#### blade

[](#blade)

If you need to use a custom blade for a field, define it like this

```
public function __configure()
{
    $this->columns = [
        [
            'field' => 'braintree_customer_id',
            'display' => 'Braintree Customer',
            'options' => [
                'blade' => config('laraman.view.hintpath') . '::fields.memberships.customer'
            ]
        ],

```

### Filters

[](#filters)

Laraman can utilize filters defined on the model

```
public function __configure()
{
    $this->filters = [
        [
            'field' => 'event',
            'display' => 'Event',
            'type' => 'select',
            'values' => [
                'send'  => 'send',
                'hard_bounce' => 'hard bounce',
                'open'   => 'open',
                'soft_bounce' => 'soft bounce',
                'deferral' => 'clickdeferral',
                'delivered' => 'delivered',
                'reject' => 'reject',
                'spam' => 'spam',
            ]
        ],
    ];

```

If the model has a `filterEvent` defined, it will be utilized

```

    public function filterEvent($builder, $val)
    {
        return $builder->{$val}();
    }

```

Could be used to apply model scopes like `scopeSend()` and `scopeOpen()`.

### Buttons

[](#buttons)

Action buttons can be added with the `buttons` attribute

```
public function __configure()
{
    $this->buttons = [
        'laraman::buttons.braintree-transaction',
        'laraman::buttons.receipt',
    ];

```

### Scopes

[](#scopes)

If you need to scope the model being used, define a `scope` method in your controller

```
class TrialController extends Controller
{
    use LaramanController;

    public function scope($builder)
    {
        //  only show trials
        return $builder->trial();
    }

```

### Extras

[](#extras)

Have extra data to pass from the controller to the view, use `extras`

```
class TrialController extends Controller
{
    use LaramanController;

    public function __configure()
    {
        $this->columns = [
            [
                'field' => 'created_at',
                'display' => 'Created',
                'formatter' => 'datetime',
                'options'   => [
                    'format' => 'F j, Y g:ia',
                ]
            ]
        ];

        //  active trials
        $this->extras['active'] = Membership::trial()->active()->count();

        //  by day
        $this->extras['byday'] = [];
        foreach (range(0, 30) as $day) {
            $date = Carbon::now()->subDays($day)->format('Y-m-d');

            $this->extras['byday'][$date] = Membership::trial()->active()->whereDate('created_at', $date)->count();
        }
    }

```

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor1

Top contributor holds 88.2% 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 ~52 days

Recently: every ~70 days

Total

23

Last Release

2198d ago

Major Versions

1.1.21 → v2.0.02018-03-26

v2.1 → v3.02019-09-16

### Community

Maintainers

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

---

Top Contributors

[![ChrisThompsonTLDR](https://avatars.githubusercontent.com/u/348801?v=4)](https://github.com/ChrisThompsonTLDR "ChrisThompsonTLDR (82 commits)")[![taylornotwell](https://avatars.githubusercontent.com/u/78162749?v=4)](https://github.com/taylornotwell "taylornotwell (6 commits)")[![jameswagoner](https://avatars.githubusercontent.com/u/3052854?v=4)](https://github.com/jameswagoner "jameswagoner (5 commits)")

---

Tags

laravelmanageradmin

### Embed Badge

![Health badge](/badges/christhompsontldr-laraman/health.svg)

```
[![Health](https://phpackages.com/badges/christhompsontldr-laraman/health.svg)](https://phpackages.com/packages/christhompsontldr-laraman)
```

###  Alternatives

[appzcoder/laravel-admin

Laravel Admin Panel

737106.5k](/packages/appzcoder-laravel-admin)

PHPackages © 2026

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