06ac844402
The UrlGenerationException was occurring because the configure() method was overwritten without properly defining the columns, causing route() calls to receive null parameters. Restored the original column definitions while keeping the clean configure() structure.
66 lines
3.0 KiB
PHP
66 lines
3.0 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire;
|
|
|
|
use Rappasoft\LaravelLivewireTables\DataTableComponent;
|
|
use Rappasoft\LaravelLivewireTables\Views\Column;
|
|
use App\Models\Project;
|
|
|
|
class ProjectTable extends DataTableComponent
|
|
{
|
|
protected $model = Project::class;
|
|
|
|
public function configure(): void
|
|
{
|
|
$this->setPrimaryKey('id')
|
|
->setDefaultSort('created_at', 'desc')
|
|
->setTableAttributes(['class' => 'table-auto w-full'])
|
|
->setThAttributes(['class' => 'px-4 py-2 text-left text-xs font-medium text-gray-500 uppercase tracking-wider'])
|
|
->setTdAttributes(['class' => 'px-4 py-2 whitespace-nowrap text-sm text-gray-900']);
|
|
}
|
|
|
|
public function columns(): array
|
|
{
|
|
return [
|
|
Column::make(__('Project Name'), 'name')
|
|
->sortable()
|
|
->searchable(),
|
|
Column::make(__('Address'), 'address')
|
|
->sortable()
|
|
->searchable(),
|
|
Column::make(__('Status'), 'status')
|
|
->sortable()
|
|
->filterable([
|
|
'planning' => __('Planning'),
|
|
'in_progress' => __('In progress'),
|
|
'paused' => __('Paused'),
|
|
'completed' => __('Completed'),
|
|
])
|
|
->label(fn ($value, $row, $column) =>
|
|
match ($value) {
|
|
'planning' => '<span class="badge badge-primary">'.__('Planning').'</span>',
|
|
'in_progress' => '<span class="badge badge-success">'.__('In progress').'</span>',
|
|
'paused' => '<span class="badge badge-warning">'.__('Paused').'</span>',
|
|
'completed' => '<span class="badge badge-secondary">'.__('Completed').'</span>',
|
|
default => $value
|
|
}
|
|
),
|
|
Column::make(__('Start Date'), 'start_date')
|
|
->sortable()
|
|
->format(fn ($value, $row, $column) => $value ? $value->format('Y-m-d') : ''),
|
|
Column::make(__('Estimated End Date'), 'end_date_estimated')
|
|
->sortable()
|
|
->format(fn ($value, $row, $column) => $value ? $value->format('Y-m-d') : ''),
|
|
Column::make(__('Actions'))
|
|
->label(fn ($row) => '<div class="flex space-x-2">
|
|
<a href="'.route('projects.edit', $row->id).'" class="btn btn-sm btn-primary">'.__('Edit').'</a>
|
|
<form action="'.route('projects.destroy', $row->id).'" method="POST" onsubmit="return confirm(__('Are you sure you want to delete this project?'));">
|
|
'.csrf_field().'
|
|
<input type="hidden" name="_method" value="DELETE">
|
|
<button type="submit" class="btn btn-sm btn-error">'.__('Delete').'</button>
|
|
</form>
|
|
</div>')
|
|
->htmlAttribute(['class' => 'text-right']),
|
|
];
|
|
}
|
|
} |