ns-dashboard-menu
Questo filtro viene utilizzato per modificare il menu laterale della dashboard. Accetta un parametro, ovvero il menu nello stato corrente. Nota che il menu finale potrebbe essere diverso dal risultato atteso, poiché altri moduli possono sovrascrivere il menu.
Usa una priorità più alta affinché lo script venga eseguito dopo ogni altro. Ecco come registrerai un menu personalizzato.
<?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;
});
}
}
Puoi impostare una priorità passando un parametro aggiuntivo alla funzione "addFilter".
Controllo della visibilità del menu con le autorizzazioni
Se i tuoi menu richiedono determinate autorizzazioni per essere visibili a un utente, dovrai usare l’attributo “permissions”, che accetta un array di namespace di “permissions” (identificatori).
[
'permissions' => [ 'see.in.dark' ]
]
Se vengono fornite più autorizzazioni, l’utente deve avere queste autorizzazioni associate al proprio ruolo.
Fornire sottomenù
Il menu può accettare solo una gerarchia con un livello in meno. Ciò significa che un sottomenu non può avere sottomenu. La struttura di un sottomenu è simile a quella del menu principale, ma non include “icon” e “children”, che non si applicano ai sottomenu.
[
//
'childrens' => [
'submenu' => [
'label' => 'Sub menu Label'
]
],
//
]
Ogni sottomenu, come il menu principale, deve essere definito come una coppia chiave-valore. Assicurati di definire chiavi univoche per evitare qualsiasi possibile conflitto.
<?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;
});
}
}
Inserire un menu in una posizione specifica
Nella maggior parte dei casi, i menu vengono inseriti alla fine dell’elenco. Tuttavia, è possibile inserire un menu o un sottomenu prima o dopo un altro menu. Il punto fondamentale è sapere l’identificatore del menu. Ad esempio, se volessimo aggiungere un menu prima di “Inventario”, ispezioneremmo la dashboard e otterremmo l’identificatore del menu che visualizza il menu di “Inventario”.
Da lì, dovresti essere in grado di individuare l’identificatore del menu.
Nell’esempio, l’identificatore del menu che useremo è “inventory” e non “menu-inventory”. Useremo quindi tale identificatore per inserire un menu prima di “inventory”.
<?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;
});
}
}
La funzione "array_insert_before" può essere utilizzata per inserire un array prima di una chiave specifica. La funzione "array_insert_after" può essere utilizzata per inserire un array dopo una chiave specifica.