PHP Classes
elePHPant
Icontem

File: README.md

Recommend this page to a friend!
  Classes of Thiago Przyczynski  >  Laravel CRUD Tools  >  README.md  >  Download  
File: README.md
Role: Documentation
Content type: text/markdown
Description: Documentation
Class: Laravel CRUD Tools
Provides components to build CRUD interfaces
Author: By
Last change: README.md updated
Date: 11 days ago
Size: 3,626 bytes
 

 

Contents

Class file image Download

Laravel Crud Tools

Easy to use Laravel CRUD package with Controller, Model and Log system built in

Installation

Install through composer using: `composer install thiagoprz\crud-tools`

Run after install scripts for Spatie Activity Logger:

`php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="migrations"`

Run migrations:

`php artisan migrate`

You can read Spatie Activity Log Documentations

Usage

  • CRUD Controller: A CRUD Controller can be achieve by just creating a standard controller class using ControllerCrud trait.

The next step is to create a folder inside `resources/views` with the desired namespace or on root folder if the controller won't be using a specific namespace (admin on the example).

<?php

namespace App\Http\Controllers\Admin;

use App\Models\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Thiagoprz\CrudTools\Http\Controllers\ControllerCrud;

class UserController extends Controller
{
    use ControllerCrud;
    public $modelClass = User::class;
}

Views directory structure used by Controller CRUD based on the above example:

Folder: > views/admin/user

Files: > create.blade.php

> edit.blade.php

Available vars: $model (the model being updated)

> form.blade.php

Available vars: $model (the model being updated - only on edit action)

> index.blade.php

Available vars: $items (the pagination object containing a filtered collection of the model)

> show.blade.php

Available vars: $model (the model being displayed)

  • CRUD Model:

For models you just need to add the trait ModelCrud and after that create a static property declaring model's validations based on the create, update and/or delete scenarios.

<?php
...
use Thiagoprz\CrudTools\Models\ModelCrud;
class User extends Authenticatable
{
    use ModelCrud;
    
    /
     * Model validations
     *
     * @var array
     */
    static $validations = [
        'create' => [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ],
        'update' => [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ],
    ];
    ...
}

Searchable fields:

You can create a $searchable property that will hold fields allowed to be searched on the static method search() - very useful with the ControllerCrud.

<?php
...
use Thiagoprz\CrudTools\Models\ModelCrud;
class User extends Authenticatable
{
    use ModelCrud;
    /
     * Fields that can be searched by (static)method search()
     *
     * @var array
     */
    static $searchable = [
        'id' => 'int',
        'name' => 'string',
    ];
    ...
}

Upload fields:

You can create a fileUploads method to define which and where your uploadable fields will store the files:

<?php
...
use Thiagoprz\CrudTools\Models\ModelCrud;
class User extends Authenticatable
{
    use ModelCrud;
    ...
    /
     * @param Campaign $model
     * @return array
     */
    public static function fileUploads(Campaign $model)
    {
        return [
            'FIELD_NAME' => [
                'path' => 'FOLDER', // Mandatory
                'name' => 'FILE_NAME', // (OPTIONAL)if not provided will be the file original name 
            ],
        ];
    }
    ...
}