Viewing file: MenuItem.php (3.4 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Webkul\Core\Menu;
use Illuminate\Support\Collection;
class MenuItem { /** * Create a new MenuItem instance. * * @return void */ public function __construct( private string $key, private string $name, private string $route, private string $url, private int $sort, private string $icon, private string $info, private Collection $children, ) {}
/** * Set name of menu item. */ public function setName(string $name): self { $this->name = $name;
return $this; }
/** * Get name of menu item. */ public function getName(): string { return $this->name; }
/** * Set position of menu item. */ public function setPosition(int $sort): self { $this->sort = $sort;
return $this; }
/** * Get position of menu item. */ public function getPosition() { return $this->sort; }
/** * Set icon of menu item. */ public function setIcon(string $icon): self { $this->icon = $icon;
return $this; }
/** * Get the icon of menu item. */ public function getIcon(): string { return $this->icon; }
/** * Set info of menu item. */ public function setInfo(string $info): self { $this->info = $info;
return $this; }
/** * Get info of menu item. */ public function getInfo(): string { return $this->info; }
/** * Set route of menu item. */ public function setRoute(string $route): self { $this->route = $route;
return $this; }
/** * Get current route. */ public function getRoute(): string { return $this->route; }
/** * Set url of menu item. */ public function setUrl(string $url): self { $this->url = $url;
return $this; }
/** * Get the url of the menu item. */ public function getUrl(): string { return $this->url; }
/** * Set the key of the menu item. */ public function setKey(string $key): self { $this->key = $key;
return $this; }
/** * Get the key of the menu item. */ public function getKey(): string { return $this->key; }
/** * Set children of menu item. */ public function setChildren(Collection $children): self { $this->children = $children;
return $this; }
/** * Check weather menu item have children or not. */ public function haveChildren(): bool { return $this->children->isNotEmpty(); }
/** * Get children of menu item. */ public function getChildren(): Collection { if (! $this->haveChildren()) { return collect(); }
return $this->children; }
/** * Check weather menu item is active or not. */ public function isActive(): bool { if (request()->fullUrlIs($this->getUrl().'*')) { return true; }
if ($this->haveChildren()) { foreach ($this->getChildren() as $child) { if ($child->isActive()) { return true; } } }
return false; } }
|