ホームページ >バックエンド開発 >PHPチュートリアル >Laravel アプリケーションの HTML ナビゲーション メニューを迅速に生成する拡張パッケージ: Laravel Menu

Laravel アプリケーションの HTML ナビゲーション メニューを迅速に生成する拡張パッケージ: Laravel Menu

WBOY
WBOYオリジナル
2016-06-20 12:33:391900ブラウズ

これらの 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/.

免責事項: この記事は翻訳です。原文はこちらでご覧ください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。