menus-do-ns-dashboard
Este filtro é usado para modificar o menu lateral do painel. Ele aceita um parâmetro, que é o menu no seu estado atual. Observe que o menu final pode ser diferente do resultado esperado, pois outros módulos podem sobrescrever o menu.
Usando uma prioridade mais alta, faça com que seu script seja executado após todos os outros. Veja como você registrará um menu 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;
});
}
}
Você pode definir uma prioridade passando um parâmetro adicional para a função "addFilter".
Controlar a Visibilidade do Menu com Permissões
Se os seus menus exigirem certas permissões para ficarem visíveis para um utilizador, terá de usar o atributo “permissions”, que aceita um array de namespaces de “permissions” (identificadores).
[
'permissions' => [ 'see.in.dark' ]
]
Se forem fornecidas mais de uma permissão, o usuário deve ter essas permissões atribuídas ao seu perfil.
Fornecendo Submenus
O menu só pode aceitar uma hierarquia com um nível abaixo. Isso significa que um sub-menu não pode ter sub-menus. A estrutura de um sub-menu é semelhante à do menu pai, mas não inclui “icon” e “children”, que não se aplicam a sub-menus.
[
//
'childrens' => [
'submenu' => [
'label' => 'Sub menu Label'
]
],
//
]
Cada submenu, assim como o pai, deve ser definido como um par chave-valor. Certifique-se de definir chaves exclusivas para evitar qualquer possível conflito.
<?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;
});
}
}
Inserindo um menu em uma posição específica
Na maior parte do tempo, os menus são inseridos no final da lista. No entanto, é possível inserir um menu ou submenu antes ou depois de outro menu. O ponto principal aqui é saber o identificador do menu. Por exemplo, se quisermos adicionar um menu antes de “inventory”, vamos inspecionar o dashboard e obter o identificador do menu que exibe o menu de “inventory”.
A partir daí, você deve conseguir identificar o identificador do menu.
No nosso exemplo, o identificador do menu que usaremos é “inventory” e não “menu-inventory”. Em seguida, usaremos esse identificador para inserir um menu 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;
});
}
}
A função “array_insert_before” pode ser usada para inserir um array antes de uma chave específica. A função “array_insert_after” pode ser usada para inserir um array após uma chave específica.