ホームページ >バックエンド開発 >PHPチュートリアル >Laravel アプリケーションの HTML ナビゲーション メニューを迅速に生成する拡張パッケージ: Laravel Menu
これらの HTML ナビゲーション メニューの生成は簡単そうに見えますが、メニューの数が増えると、ますます面倒になります。これは、単に基本的な HTML をレンダリングするだけではなく、さらに、メニュー項目の間に HTML を挿入する必要がある場合もあります。
この目的のために、私は拡張パッケージ (GitHub アドレス: https://github.com/spatie/laravel-menu) を作成しました。この拡張パッケージによって提供される API はシンプルかつエレガントで、完全な機能を備えています。ここではその使用方法を簡単に説明します。
この拡張機能はフレームワークに依存しませんが、ここでは Laravel アプリケーションで使用するように設定しています。
最初に Composer を使用してこの拡張機能をインストールします:
composer require spatie/laravel-menu
次に、サービス プロバイダーとファサードを config/app.php のプロバイダーとエイリアスに登録します:
// config/app.php'providers' => [ // ... Spatie\Menu\Laravel\MenuServiceProvider::class,],'aliases' => [ // ... 'Menu' => Spatie\Menu\Laravel\MenuFacade::class,],
次に、それを使用して HTML ナビゲーション メニューを生成します。
次のようなメニューを生成するとします:
<ul> <li><a href="/">Home</a></li> <li><a href="/about">About</a></li></ul>
実装コードは次のとおりです:
$menu = Menu::new() ->add(Link::to('/', 'Home')) ->add(Link::to('/about', 'About'));
その後、ビューで render メソッドを使用できます。メニューを表示するには:
// in a blade viewHere is the menu: {!! $menu !!}
以下では、より複雑なメニューを生成してみます:
<ul> <li> <ul> <li><a href="/introduction">Introduction</a></li> <li><a href="/requirements">Requirements</a></li> <li><a href="/installation-setup">Installation and Setup</a></li> </ul> </li> <li> <h2>Basic Usage</h2> <ul> <li><a href="/basic-usage/your-first-menu">Your First Menu</a></li> <li><a href="/basic-usage/working-with-items">Working With Items</a></li> <li><a href="/basic-usage/adding-sub-menus">Adding Sub Menus</a></li> </ul> </li></ul>
はい、これはドキュメント インターフェイスのナビゲーション メニューです。タイトル。対応する生成コードは次のとおりです。
Menu::new() ->add(Menu::new() ->link('/introduction', 'Introduction') ->link('/requirements', 'Requirements') ->link('/installation-setup', 'Installation and Setup') ) ->add(Menu::new() ->prepend('<h2>Basic Usage</h2>') ->prefixLinks('/basic-usage') ->link('/your-first-menu', 'Your First Menu') ->link('/working-with-items', 'Working With Items') ->link('/adding-sub-menus', 'Adding Sub Menus') );
特定のメニュー項目をアクティブにしたい場合は、setActive メソッドを呼び出すことができます。
$menu = Menu::new() ->add(Link::to('/', 'Home')) ->add(Link::to('/about', 'About')->setActive());
設定するのは非常に面倒です。メニュー項目を手動でアクティブ化します。ほとんどの場合、より適切な方法は、どのメニュー項目がアクティブ化されるかをコードに決定させることです。
$menu = Menu::new() ->add(Link::to('/', 'Home')) ->add(Link::to('/about', 'About')->setActive()); ->setActiveFromRequest();
リンクを指定するだけでなく、他のメソッドを使用してメニューをポイントすることもできます。項目を柔軟に指定できます:
Menu::new() ->url('/', 'Home') ->route('contact', 'Contact') ->action('AcmeController@detail', 'Acme');
この拡張機能パッケージには、属性操作、コンテンツの追加、マクロのサポートなど、他にも多くの便利なメソッドがあります。完全なドキュメントについては、https://docs を参照してください。 spatie.be/menu/v1/.
免責事項: この記事は翻訳です。原文はこちらでご覧ください。