Menus can also be created from an array-like data source with the static build
method, or the non-static fill
method.
The methods accept a data source as their first parameter, and a callable as their second. The method calls the callable over every item in the data source. The callable has three parameters: the menu, the item and the item's key.
$items = [
'/' => 'Home',
'/about' => 'About',
'/contact' => 'Contact',
];
Menu::build($items, function ($menu, $label, $link) {
$menu->link($link, $label);
});
The build
and fill
methods allow you to use any iteratable data source for a menu. Here's another example using the result of an Eloquent query in Laravel.
$products = Product::all();
Menu::build($products, function ($menu, $product) {
$menu->action('ProductController@detail', $product->name, $product->id);
});