ns-Dashboard-Menüs
Dieser Filter wird verwendet, um das Dashboard-Seitenmenü zu ändern. Er akzeptiert einen Parameter, nämlich das Menü in seinem aktuellen Zustand. Beachten Sie, dass das Endmenü möglicherweise von dem erwarteten Ergebnis abweicht, da andere Module das Menü überschreiben können.
Verwenden Sie eine höhere Priorität, damit Ihr Skript nach allen anderen ausgeführt wird. So registrieren Sie ein benutzerdefiniertes Menü.
<?php
namespace Modules\YourModuleNamespace\Providers;
use Illuminate\Support\ServiceProvider;
use App\Classes\Hook;
class ModuleSerivceProvider extends ServiceProvider
{
public function register()
{
Hook::addFilter( 'ns-dashboard-menus', function( $menus ) {
$menus[ 'my-menus' ] = [
'label' => __( 'Your Menu' ),
'href' => url( '/' ),
'permissions' => [], // accept an array of permissions
'icon' => 'fa-icon', // use https://icons8.com/line-awesome icons.
'childrens' => [
// sub menu having the same shape as the parent, excluding "childrens" and "icon".
]
];
return $menus;
});
}
}
Sie können eine Priorität festlegen, indem Sie einen zusätzlichen Parameter an die Funktion „addFilter“ übergeben.
Sichtbarkeit des Menüs mit Berechtigungen steuern
Wenn Ihre Menüs bestimmte Berechtigungen benötigen, damit sie für einen Benutzer sichtbar sind, müssen Sie das Attribut „permissions“ verwenden, das ein Array von „permissions“-Namespaces (Kennungen) akzeptiert.
[
'permissions' => [ 'see.in.dark' ]
]
Wenn mehr als eine Berechtigung bereitgestellt wird, müssen diese Berechtigungen der Rolle des Benutzers zugeordnet sein.
Bereitstellen von Untermenüs
Das Menü kann nur eine Hierarchie mit genau einer Ebene darunter akzeptieren. Das bedeutet, dass ein Untermenü keine weiteren Untermenüs haben kann. Die Form eines Untermenüs ist ähnlich wie die des übergeordneten Menüs, enthält jedoch nicht „icon“ und „children“, da diese für Untermenüs nicht gelten.
[
//
'childrens' => [
'submenu' => [
'label' => 'Sub menu Label'
]
],
//
]
Jedes Untermenü muss wie der übergeordnete Eintrag als Schlüssel-Wert-Paar definiert werden. Achten Sie darauf, eindeutige Schlüssel zu verwenden, um mögliche Konflikte zu vermeiden.
<?php
namespace Modules\YourModuleNamespace\Providers;
use Illuminate\Support\ServiceProvider;
use App\Classes\Hook;
class ModuleSerivceProvider extends ServiceProvider
{
public function register()
{
Hook::addFilter( 'ns-dashboard-menus', function( $menus ) {
$menus[ 'my-menus' ] = [
'label' => __( 'Your Menu' ),
'href' => url( '/' ),
'permissions' => [], // accept an array of permissions
'icon' => 'fa-icon', // use https://icons8.com/line-awesome icons.
'childrens' => [
'submenu' => [
'label' => __( 'First Submenu' ),
'href' => url( '/url/to/page' ),
'permissions' => [], // any permission to contro visibility.
]
]
];
return $menus;
});
}
}
Einfügen eines Menüs an einer bestimmten Position
In den meisten Fällen werden Menüs am Ende der Liste eingefügt. Es ist jedoch möglich, ein Menü oder Untermenü vor oder nach einem anderen Menü einzufügen. Der entscheidende Punkt dabei ist, die Kennung des Menüs zu kennen. Wenn wir beispielsweise ein Menü vor „Inventar“ hinzufügen möchten, prüfen wir das Dashboard und ermitteln die Kennung des Menüs, das das Menü für „Inventar“ anzeigt.
Von dort aus sollten Sie in der Lage sein, die Menükennung zu erkennen.
In unserem Beispiel verwenden wir als Menükennung „inventory“ und nicht „menu-inventory“. Anschließend verwenden wir diese Kennung, um ein Menü vor „inventory“ einzufügen.
<?php
namespace Modules\YourModuleNamespace\Providers;
use Illuminate\Support\ServiceProvider;
use App\Classes\Hook;
class ModuleSerivceProvider extends ServiceProvider
{
public function register()
{
Hook::addFilter( 'ns-dashboard-menus', function( $menus ) {
$menus = array_insert_after( $menus, 'inventory', [
'my-menus' => [
'label' => __( 'Your Menu' ),
'href' => url( '/' ),
'permissions' => [], // accept an array of permissions
'icon' => 'fa-icon', // use https://icons8.com/line-awesome icons.
'childrens' => [
'submenu' => [
'label' => __( 'First Submenu' ),
'href' => url( '/url/to/page' ),
'permissions' => [], // any permission to contro visibility.
]
]
]
]);
return $menus;
});
}
}
Die Funktion „array_insert_before“ kann verwendet werden, um ein Array vor einem bestimmten Schlüssel einzufügen. Die Funktion „array_insert_after“ kann verwendet werden, um ein Array nach einem bestimmten Schlüssel einzufügen.