PHP code example of rudiwer / rwtable-laravel

1. Go to this page and download the library: Download rudiwer/rwtable-laravel library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

rudiwer / rwtable-laravel example snippets


return [
    'routes' => [
        'enabled' => true,
        'prefix' => 'admin',
        'name_prefix' => 'admin.',
        'middleware' => ['web', 'auth'],
    ],

    'field_aliases' => [
        // optional alias map for filter/sort safety
        // 'status_description' => 'statuses.description',
    ],

    'security' => [
        'allowed_field_pattern' => '/^[A-Za-z0-9_\.]+$/',
    ],
];

return [
    'routes' => [
        'enabled' => true,
        'prefix' => 'admin',
        'name_prefix' => 'admin.',
        'middleware' => ['web', 'auth', 'verified'],
    ],
    'field_aliases' => [
        'status_label' => 'statuses.description',
        'priority_label' => 'priorities.description',
        'owner_name' => 'users.name',
    ],
    'security' => [
        'allowed_field_pattern' => '/^[A-Za-z0-9_\.]+$/',
    ],
];

use App\Actions\Admin\Base\RwTableAction;
use App\Models\Task;
use Illuminate\Http\Request;
use Inertia\Response;

public function index(Request $request): Response
{
    return RwTableAction::handle(
        $request,
        Task::class,
        'Admin/Task/Index',
        ['id', 'title', 'status'],
        25,
        ['statusOptions' => $this->statusOptions()],
        function ($query): void {
            $query->where('school_id', auth()->user()->school_id);
        }
    );
}

use App\Models\Task;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

public function data(Request $request): JsonResponse
{
    $query = Task::query();

    $global = trim((string) $request->input('global', ''));

    if ($global !== '') {
        $query->where(function ($builder) use ($global): void {
            $builder
                ->orWhere('title', 'like', "%{$global}%")
                ->orWhere('owner', 'like', "%{$global}%")
                ->orWhere('status', 'like', "%{$global}%");
        });
    }

    $sortField = (string) $request->input('sortField', 'id');
    $sortOrder = strtolower((string) $request->input('sortOrder', 'asc')) === 'desc' ? 'desc' : 'asc';
    $perPage = max(1, min(100, (int) $request->input('rowsPerPage', 25)));
    $page = max(1, (int) $request->input('page', 1));

    $paginated = $query
        ->orderBy($sortField, $sortOrder)
        ->paginate($perPage, ['*'], 'page', $page);

    return response()->json([
        'data' => $paginated->items(),
        'total' => $paginated->total(),
        'current_page' => $paginated->currentPage(),
        'last_page' => $paginated->lastPage(),
    ]);
}

use App\Http\Controllers\Controller;
use App\Models\Task;
use Illuminate\Http\Request;
use Rwsoft\RwTableLaravel\Actions\RwTableAction;

class TaskController extends Controller
{
    public function index(Request $request)
    {
        return RwTableAction::handle(
            $request,
            Task::class,
            'Admin/Task/Index',
            ['id', 'title', 'status'],
            25,
            ['statuses' => []]
        );
    }

    public function inlineUpdate(Request $request, int $id)
    {
        return RwTableAction::update(
            $request,
            Task::class,
            $id,
            ['title', 'status', 'priority', 'tags']
        );
    }

    public function inlineCreate(Request $request)
    {
        return RwTableAction::create(
            $request,
            Task::class,
            ['title', 'status', 'priority', 'tags', 'index']
        );
    }

    public function inlineDelete(Request $request, int $id)
    {
        return RwTableAction::destroy($request, Task::class, $id);
    }
}
bash
php artisan vendor:publish --tag=rwtable-config
php artisan vendor:publish --tag=rwtable-migrations
php artisan vendor:publish --tag=rwtable-lang
bash
php artisan migrate
text
lang/vendor/rwtable/{locale}/rwtable.php