web-dev-qa-db-ja.com

プログラムでメニューを作成するにはどうすればよいですか?

Drupal 8 drupal.orgのmenu_apiのドキュメントを読みます。サンプルガイドには、メニューリンクを作成して既存のメニューに挿入するオプションが一覧表示されています。最初にメニュー自体を作成し、あとがきメニューリンク?

私は、stackexchangeの他の回答に基づいてentitytypeマネージャーを使用しましたが、ymlの方法をお勧めします。ポインタはありますか?

use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\menu_link_content\Entity\MenuLinkContent;

\Drupal::entityTypeManager()
->getStorage('menu')
->create([
 'id' => 'test',
 'label' => 'test menu',
'description' => 'test test',
 ])
 ->save();

以下のルートを使用してリンクを作成します。

 test.home:
 title: 'Home'
 url: 'test.url'
 menu_name: test
 weight: 1
3
user67075

何かが発生したときにメニューを作成する必要がある機能がある場合は、コードを使用するだけで十分です。

エンティティオブジェクト\Drupal\menu\Entity\Menu::createで静的作成メソッドを使用することを好みますが、マネージャーも問題ありません。

drupalサイトのセットアップの一環として開発環境でメニューを作成する場合は、config export/importを使用することをお勧めします。drushを使用する場合、それをデプロイメントの一部にすることができます。構成をインポートして、プロダクションが常に保存した構成を反映するようにします。

1
googletorp