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