mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-13 06:56:48 +00:00
add tags
This commit is contained in:
25
app/Http/Livewire/Frontend/SearchByTag.php
Normal file
25
app/Http/Livewire/Frontend/SearchByTag.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Livewire\Frontend;
|
||||
|
||||
use App\Models\Tag;
|
||||
use Livewire\Component;
|
||||
|
||||
class SearchByTag extends Component
|
||||
{
|
||||
public string $country = 'de';
|
||||
|
||||
public function render()
|
||||
{
|
||||
return view('livewire.frontend.search-by-tag', [
|
||||
'tags' => Tag::query()
|
||||
->with([
|
||||
'courses.lecturer',
|
||||
])
|
||||
->withCount([
|
||||
'courses',
|
||||
])
|
||||
->get(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -3,9 +3,11 @@
|
||||
namespace App\Http\Livewire\Tables;
|
||||
|
||||
use App\Models\Course;
|
||||
use App\Models\Tag;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Rappasoft\LaravelLivewireTables\DataTableComponent;
|
||||
use Rappasoft\LaravelLivewireTables\Views\Column;
|
||||
use Rappasoft\LaravelLivewireTables\Views\Filters\MultiSelectFilter;
|
||||
|
||||
class CourseTable extends DataTableComponent
|
||||
{
|
||||
@@ -32,6 +34,23 @@ class CourseTable extends DataTableComponent
|
||||
->setPerPage(50);
|
||||
}
|
||||
|
||||
public function filters(): array
|
||||
{
|
||||
return [
|
||||
MultiSelectFilter::make('Tag')
|
||||
->options(
|
||||
Tag::query()
|
||||
->get()
|
||||
->mapWithKeys(fn($item, $key) => [$item->name => $item->name])
|
||||
->toArray()
|
||||
)
|
||||
->filter(function (Builder $builder, array $values) {
|
||||
ray($values);
|
||||
$builder->withAnyTags($values, 'search');
|
||||
}),
|
||||
];
|
||||
}
|
||||
|
||||
public function columns(): array
|
||||
{
|
||||
return [
|
||||
@@ -43,6 +62,10 @@ class CourseTable extends DataTableComponent
|
||||
->collapseOnMobile(),
|
||||
Column::make("Name", "name")
|
||||
->sortable(),
|
||||
Column::make("Tags")
|
||||
->label(
|
||||
fn($row, Column $column) => view('columns.courses.tags')->withRow($row)
|
||||
),
|
||||
Column::make("Termine")
|
||||
->label(
|
||||
fn($row, Column $column) => '<strong>'.$row->events_count.'</strong>'
|
||||
|
||||
Reference in New Issue
Block a user