Articoli

Id Titolo Autore Testo
3960 Assumenda maxime ut pariatur quos. Chanelle Molestiae corporis explicabo qui quas debitis ut a...
3959 Nulla in occaecati omnis aut. Chanelle Nihil et aliquam facere officiis dicta animi. Recu...
3958 Inventore dolorum qui a est eius velit. Emerson Adipisci fuga quo possimus. In natus occaecati ame...
3957 Non sed atque et ullam quaerat quae. Emerson Cum vel est voluptas et. Rerum incidunt blanditiis...
3956 Sed excepturi sunt qui animi voluptas doloribus. Carol Et ipsa tempore molestiae sed in at nam dolores. A...
3955 Consequuntur temporibus autem laborum pariatur rerum dignissimos sunt. Carol Rerum ut molestias accusamus impedit ut. Quae volu...
3954 Pariatur ut fugiat quo consequatur nulla quia. Chyna Sequi at eaque id qui deleniti harum. Autem ut sed...
3953 Maxime nihil eum sunt qui reiciendis molestias. Chyna Ut et dolores non iure eaque. Beatae illo sequi ve...
3952 Tempore quasi quia qui quo rerum. Virginie Iste consectetur consequuntur et pariatur. Cumque...
3951 Fugit quam eveniet ipsum aut sequi fugit. Virginie Et voluptate eos omnis est aut. Vel et molestiae q...
tot. 20

struttura del modulo

demo-module/
├─ Livewire/
│  ├─ Home.php
│  ├─ ArticlesTable.php
│  ├─ ArticlesView.php
│  └─ ArticlesEdit.php
├─ Views/
│  ├─ home.blade.php
│  ├─ articles_table.blade.php
│  ├─ articles_view.blade.php
│  ├─ articles_edit.blade.php
│  ├─ menu.blade.php
│  └─ frontend_menu.blade.php
├─ Models/               Article.php, Author.php
├─ Database/             Migrations/, Seeders/
├─ config.php            layout, menu entry
├─ routes.php
└─ DemoModuleServiceProvider.php

route

routes.php


Route::get('demo/articles'ArticlesTable::class)
    ->
middleware(['web'])
    ->
name('demo.articles')
    ->
crumbs(fn ($crumbs) => $crumbs->parent('demo')->push(__('Articles'), route_lang('demo.articles')));

componente

Livewire/ArticlesTable.php


<?php

namespace App\Modules\Demo\Livewire;

use 
App\Modules\Demo\Models\Article;
use 
App\Modules\Demo\Models\Author;
use 
Livewire\Component;
use 
Zofe\Rapyd\Traits\WithDataTable;

class 
ArticlesTable extends Component
{
    use 
WithDataTable;

    public 
string $search '';

    public ?
int $author_id null;

    public function 
updatedSearch(): void
    
{
        
$this->resetPage();
    }

    public function 
updatedAuthorId(): void
    
{
        
$this->resetPage();
    }

    public function 
getDataSet()
    {
        return 
Article::ssearch($this->search)
            ->
with('author')
            ->
when($this->author_id, fn ($q) => $q->where('author_id'$this->author_id))
            ->
orderBy($this->sortField$this->sortAsc 'asc' 'desc')
            ->
paginate($this->perPage);
    }

    public function 
render()
    {
        return 
view('demo::articles_table', [
            
'items' => $this->getDataSet(),
            
'authors' => Author::query()->orderBy('firstname')->pluck('firstname''id')->toArray(),
        ])->
layout('layout::admin');
    }
}

view

Views/articles_table.blade.php


<x-rpd::card>
    <
x-rpd::table title="Articles" :items="$items">
        <
x-slot name="filters">
            <
x-rpd::input col="col" debounce="350" model="search" placeholder="search..." />
            <
x-rpd::select col="col-3" model="author_id" :options="$authorsplaceholder="author..." addempty />
        </
x-slot>

        <
x-slot name="buttons">
            <
x-rpd::button route="demo.articles" color="outline-dark" label="Reset" />
            <
x-rpd::button route="demo.articles.edit" color="outline-primary" label="Add" />
        </
x-slot>

        <
table class="table">
            <
thead>
            <
tr>
                <
th><x-rpd::sort model="id" label="Id" /></th>
                <
th><x-rpd::sort model="title" label="Title" /></th>
                <
th>{{ __('Author') }}</th>
                <
th>{{ __('Body') }}</th>
                <
th></th>
            </
tr>
            </
thead>
            <
tbody>
            @foreach (
$items as $article)
                <
tr>
                    <
td><x-rpd::nav-link :label="$article->idroute="demo.articles.view" :params="$article->id/></td>
                    <
td>{{ $article->title }}</td>
                    <
td>{{ $article->author?->firstname }}</td>
                    <
td>{{ Str::limit(strip_tags($article->body), 50) }}</td>
                    <
td class="text-end"><x-rpd::icon name="edit" route="demo.articles.edit" :params="$article->id/></td>
                </
tr>
            @endforeach
            </
tbody>
        </
table>
    </
x-rpd::table>
</
x-rpd::card>

Support
How can I help you today?