# Menu
# Tworzenie pozycji menu na podstawie klasy
Niestandardowe elementy menu służą do podłączenia dynamicznie wygenerowanych danych. Przykładem takiego typu sekcji mogą być kategorie.
# Definiowanie niestandardowego typu menu
W pliku konfiguracyjnym Modules/Menu/Config/config.php należy dodać parę "klucz - wartość" wewnątrz custom-menuable-types, gdzie kluczem jest nazwa rodzaju menu.
Wartością może być nazwa klasy, która posiada metodę getItemData() zwracającą dane lub tablica, w której pierwszym elementem jest nazwa klasy, a drugim jej metoda.
// Modules/Menu/Config/config.php
'custom-menuable-types' => [
'categories' => CategoryService::class,
// lub
'categories' => [CategoryService::class, 'customMethod'],
],
Następnie należy stworzyć klasę, która zwróci odpowiednie dane.
class CategoryService
{
public function getItemData(array $options = null)
{
return CategoryResource::collection(
Category::all()
);
}
}
# Dodatkowe opcje
use Modules\Core\Models\Option;
class CategoryService
{
public function options(): array
{
return [
Option::number('count'),
Option::select('order_by', [
'asc' => 'Ascending',
'desc' => 'Descending'
]),
];
}
}
# Walidacja pól z opcjami
Reguły walidacji dla opcji należy zdefiniować poprzez dodanie publicznej metody rules():
class CategoryService
{
public function rules(): array
{
return [
'count' => 'integer|min:1',
'order_by' => 'in:asc,desc|string',
];
}
}