<?php
namespace App\Http\Livewire\Admin\Posts;
use App\Models\Post;
use WebVovan\RockCms\Http\Livewire\ResourceComponent;
use WebVovan\RockCms\Rules\SingleMedia;
use WebVovan\RockCms\Traits\Livewire\HasMedia;
class PostItem extends ResourceComponent
{
use HasMedia;
// Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Π΄Π»Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
public $preview;
public Post $resource;
public string $resourceClass = Post::class;
public string $nameRouteResourceList = 'posts.list';
public string $nameRouteResourceEdit = 'posts.edit';
// ΠΡΠ°Π²ΠΈΠ»Π° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ
public function rules()
{
return [
'resource.title' => 'string|required',
'resource.desc' => 'string',
'preview' => new SingleMedia(),
];
}
/**
* ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
*/
public function init()
{
$this->resource->title = $this->resource->title ?? '';
$this->resource->desc = $this->resource->desc ?? '';
// ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ
$this->preview = $this->resource->getFirstMedia('preview');
}
/**
* ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΡΡΡΡΠ°
*/
public function save()
{
$this->resource->save();
// Π‘ΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
$this->saveSingleMedia($this->resource, $this->preview, 'preview');
}
public function render()
{
return view('livewire.admin.posts.post-item');
}
}