D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
dateitor
/
www
/
vendor
/
rappasoft
/
laravel-livewire-tables
/
src
/
Views
/
Columns
/
Filename :
LinkColumn.php
back
Copy
<?php namespace Rappasoft\LaravelLivewireTables\Views\Columns; use Illuminate\Database\Eloquent\Model; use Rappasoft\LaravelLivewireTables\Exceptions\DataTableConfigurationException; use Rappasoft\LaravelLivewireTables\Views\Column; use Rappasoft\LaravelLivewireTables\Views\Traits\Configuration\LinkColumnConfiguration; use Rappasoft\LaravelLivewireTables\Views\Traits\Core\{HasLocationCallback,HasTitleCallback}; use Rappasoft\LaravelLivewireTables\Views\Traits\Helpers\LinkColumnHelpers; class LinkColumn extends Column { use LinkColumnConfiguration, LinkColumnHelpers, HasLocationCallback, HasTitleCallback; protected string $view = 'livewire-tables::includes.columns.link'; public function __construct(string $title, ?string $from = null) { parent::__construct($title, $from); $this->label(fn () => null); } public function getContents(Model $row): null|string|\Illuminate\Support\HtmlString|DataTableConfigurationException|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View { if (! $this->hasTitleCallback()) { throw new DataTableConfigurationException('You must specify a title callback for an link column.'); } if (! $this->hasLocationCallback()) { throw new DataTableConfigurationException('You must specify a location callback for an link column.'); } return view($this->getView()) ->withColumn($this) ->withTitle(app()->call($this->getTitleCallback(), ['row' => $row])) ->withPath(app()->call($this->getLocationCallback(), ['row' => $row])) ->withAttributes($this->hasAttributesCallback() ? app()->call($this->getAttributesCallback(), ['row' => $row]) : []); } }