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