Ich habe eine ziemlich einfache App, die Plugins für die meisten Funktionen verwendet. Ich möchte jedem Plugin erlauben, einige benutzerdefinierte Menüs und Menüpunkte zu definieren, alle diese Menüs an einem Ort zu sammeln (vielleicht AppController :: initialize) und ein Array zu erstellen, das an ein Hauptmenü-Element übergeben wird komplettes MenüAnfügen von Einstellungen von einem Plugin
Was ich bisher getan ist die Menüs der
Plugin definieren# plugins/TestPlugin/config/menus.php
return [
'menus' => [
[
'header' => 'TestPlugin',
[
'title' => 'Click me!',
'href' => './',
],
[
'title' => 'Click me too!',
'href' => './',
]
]
]
];
Laden Sie die config:
# plugins/TestPlugin/config/bootstrap.php
use Cake\Core\Configure;
Configure::load('TestPlugin.menus', 'default' , true);
Und lesen Sie die Variable:
# src/Controller/AppController.php
public function initialize()
{
parent::initialize();
$plugin_menus = Configure::read('menus);
Aber wenn Ich habe mehr als ein Plugins, menus
wird überschrieben.
Ich bin mir nicht sicher, ob das der beste Weg ist. Was ich versuche zu erreichen, ist mit mehreren Modulen ändern (append to) die gleiche Konfigurationsvariable
Mein Problem ist, dass ich die Navigation des Plugins mit 'Configure :: read ('menus)' lade, was die Variable' $ menu' jedes anderen Plugins überschreibt. Also suche ich nach einer Möglichkeit, die 'plugins/TestPlugin/menus.php' Datei zu laden, die ein' $ menus' Array zurückgibt, ohne eine bereits existierende '$ menus' Variable zu überschreiben. – karivolas
Sie haben meine Verwendung von 'array_merge' in der Antwort verpasst. Damit können Sie das Array auf eine multidimensionale Weise eintasten, um Ihre zusätzlichen Navigationsdaten aufzunehmen. –