File: //home/armgroup/libs/app/Http/Livewire/Admin/Menu/Edit.php
<?php
namespace App\Http\Livewire\Admin\Menu;
use App\Http\Livewire\ConvertEmptyStringsToNull;
use App\Http\Livewire\General;
use App\Models\Menu;
use Livewire\Component;
class Edit extends Component
{
use ConvertEmptyStringsToNull, General;
public Menu $menu;
public $menus;
protected $listeners = ['imageChanged'];
public function mount()
{
$this->menus = Menu::query()
->where('id', '<>', $this->menu->id)
->select('id', 'title')
->get();
}
public function render()
{
return view('livewire.admin.menu.edit');
}
protected function rules()
{
return [
'menu.title' => 'required|string|max:250',
'menu.url' => 'nullable|string|max:250',
'menu.icon' => 'nullable|max:250|string',
'menu.parent_id' => 'nullable|exists:menus,id|not_in:'.$this->menu->id,
'menu.status' => 'required|in:0,1',
'menu.sort_order' => 'nullable|integer|min:0|max:10000',
];
}
public function update()
{
$this->validate();
$this->menu->update();
$this->doneMessage("منوی {$this->menu->title} با موفقیت ویرایش شد");
return redirect()->route('admin.menus.index');
}
public function imageChanged($iconPath)
{
$this->menu->icon = ltrim(parse_url($iconPath, PHP_URL_PATH), '/');
}
}