menús del ns-dashboard
Este filtro se utiliza para modificar el menú lateral del panel. Acepta un parámetro, que es el menú en su estado actual. Ten en cuenta que el menú final puede ser diferente del resultado esperado, ya que otros módulos pueden sobrescribir el menú.
Usa una prioridad más alta para que tu script se ejecute después de cualquier otro. Así es como registrarás un menú personalizado.
<?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;
});
}
}
Puede establecer una prioridad pasando un parámetro adicional a la función "addFilter".
Controlar la visibilidad del menú con permisos
Si tus menús requieren ciertos permisos para que sean visibles para un usuario, necesitarás usar el atributo «permissions», que acepta un arreglo de espacios de nombres de «permissions» (identificadores).
[
'permissions' => [ 'see.in.dark' ]
]
Si se proporcionan más de un permiso, el usuario debe tener estos permisos asignados a su rol.
Proporcionar submenús
El menú solo puede aceptar una jerarquía con un nivel hacia abajo. Esto significa que un submenú no puede tener submenús. La forma de un submenú es similar a la del menú principal, pero no incluye “icon” y “children”, que no se aplican a los submenús.
[
//
'childrens' => [
'submenu' => [
'label' => 'Sub menu Label'
]
],
//
]
Cada submenú, igual que el padre, debe definirse como un par clave-valor. Asegúrate de definir claves únicas para evitar cualquier posible conflicto.
<?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;
});
}
}
Insertar un menú en una posición específica
La mayoría de las veces, los menús se insertan al final de la lista. Sin embargo, es posible insertar un menú o un submenú antes o después de otro menú. El punto clave aquí es conocer el identificador del menú. Por ejemplo, si quisiéramos agregar un menú antes de inventario, inspeccionaríamos el panel de control y obtendríamos el identificador del menú que muestra el menú de inventario.
A partir de ahí, deberías poder identificar el identificador del menú.
En nuestro ejemplo, el identificador de menú que usaremos es «inventory» y no «menu-inventory». Luego usaremos ese identificador para insertar un menú antes de «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 función "array_insert_before" se puede usar para insertar un arreglo antes de una clave específica. La función "array_insert_after" se puede usar para insertar un arreglo después de una clave específica.