Aggiungere un link al menu
Ora che abbiamo creato un segnaposto per la nostra pagina delle impostazioni del modulo, aggiungiamo un link al menu. Le istruzioni qui sotto mostrano come creare un link di menu al modulo hello_world nella sezione «Sviluppo» della pagina «Amministrazione > Configurazione» (http://example.com/admin/config).
Nella cartella principale del vostro modulo create un nuovo file chiamato hello_world.links.menu.yml e aggiungete il seguente contenuto:
hello_world.admin: title: 'Hello module settings' description: 'example of how to make an admin settings page link' parent: system.admin_config_development route_name: hello_world.content weight: 100
Notate che la prima riga riserva uno spazio dei nomi, come nel nostro esempio di file di routing. Prestate anche attenzione all’uso del nostro nome di rotta nella quinta riga (utilizziamo lo spazio dei nomi dalla prima riga dell’esempio di file di routing). Titolo e descrizione verranno mostrati nella sezione «Sviluppo». Notate che la riga parent descrive il link genitore per il menu. In altre parole, il link di menu verrà creato sotto admin, config, development.
Questo aggiungerà un link al percorso specificato in hello_world.content (in questo esempio definito in hello_world.routing.yml) nelle pagine di amministrazione del vostro sito, nella scheda «Configurazione» (URL /admin/config) sotto la sezione «Sviluppo». Naturalmente sarà necessario svuotare la cache affinché le modifiche abbiano effetto.
Dopo aver svuotato la cache troverete il link di menu «Impostazioni del modulo Hello» nella sezione «Sviluppo» della pagina di configurazione. Facendo clic sul link verrà richiamato il modulo hello_world.
Consigli aggiuntivi
Il file .links.menu.yml è abbastanza flessibile. Potete anche usarlo per collegarvi a risorse esterne o tramite un link interno:
hello_world.admin: title: 'Hello module settings' description: 'example of how to make an admin settings page link' parent: system.admin_config_development url: http://example.com/this-is-some-example weight: 100 hello_world.admin2: title: 'Hello module settings' description: 'example of how to make an admin settings page link' parent: system.admin_config_development url: internal:/some-internal-path
Non modificabile dall’interfaccia:
Notate che quando create link di menu utilizzando file yml e moduli personalizzati in questo modo, ottenete link di menu non modificabili dall’interfaccia utente. Potete modificare i link solo tramite il file yml. Essi sono considerati gestiti dal modulo e non amministrativi. Quando fate clic sul pulsante di modifica per la voce di menu, ricevete il messaggio «Questo link è fornito dal modulo XXX. Il titolo e il percorso non possono essere modificati».
Per creare link di menu modificabili, dovete farlo in questo modo:
$my_menu = \Drupal::entityTypeManager()->getStorage('menu_link_content') ->loadByProperties(['menu_name' => 'my-menu-name']); foreach ($my_menu as $menu_item) { $parent_id = $menu_item->getParentId(); if (!empty($parent_id)) { $top_level = $parent_id; break; } } $menu_link = MenuLinkContent::create([ 'title' => 'My menu link title', 'link' => ['uri' => 'internal:/my/path'], 'menu_name' => 'my-menu-name', 'parent' => $top_level, 'expanded' => TRUE, 'weight' => 0, ]); $menu_link->save();