Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Classe TMenu na versão 1.0.3 Olá ! Na versão anterior do framework a classe TMenu permitia definir a tag sem a tag ou a tag sem valor, porém na versão 1.0.3 não permite, apresentando o erro: Notice: Undefined variable: menu in D:VertrigoServwwwadianti-103testelibadiantiwidgetwebgeneralTMenu.class.php on line 92 Fatal error: Call to a member function getMenuItems() on a non-ob...
EF
Classe TMenu na versão 1.0.3  
Fechado
Olá !

Na versão anterior do framework a classe TMenu permitia definir a tag <menuitem> sem a tag <action> ou a tag <action> sem valor, porém na versão 1.0.3 não permite, apresentando o erro:

Notice: Undefined variable: menu in D:VertrigoServwwwadianti-103testelibadiantiwidgetwebgeneralTMenu.class.php on line 92
Fatal error: Call to a member function getMenuItems() on a non-object in D:VertrigoServwwwadianti-103testelibadiantiwidgetwebgeneralTMenu.class.php on line 92

Em alguns casos, quando estamos na fase de definição/criação do menu é comum declararmos apenas os labels na tag <menuitem> e deixar as tags <action> para depois quando criarmos os controles.

A fim de contribuir com o código eu fiz uma pequena alteração nas linhas
73, 75 e 92 de lib/adianti/widget/web/general/TMenu.class.php,

//if ( $action )
if ( isset($action) )
{
//if ( $permission_callback )
if ( ! empty($action) AND $permission_callback )
{
// check permission
$parts = explode('#', $action);
$className = $parts[0];
if (call_user_func($permission_callback, $className))
{
$this->addMenuItem($menuItem);
}
}
else
{
// menus without permission check
$this->addMenuItem($menuItem);
}
}
// parent nodes are shown just when they have valid children (with permission)
//else if ( count($menu->getMenuItems()) > 0)
else if ( isset($menu) AND count($menu->getMenuItems()) > 0)


Segue o menu.xml para testes:

<menu>
<menuitem label='Opção 1'>
<menu>
<menuitem label = 'Item 1'>
<action>Teste</action>
</menuitem>
</menu>
</menuitem>
<menuitem label='Opção 2'>
<menu>
<menuitem label = 'Item 1'>
<action></action>
</menuitem>
</menu>
</menuitem>
<menuitem label='Opção 3'>
<menu>
<menuitem label = 'Item 1'>
</menuitem>
</menu>
</menuitem>
</menu>

Atenciosamente,

Eduardo Fernandes

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (1)


PD

Oi Eduardo,

Obrigado pela contribuição. Acredito que ela seja válida e potencialmente entrará na próxima atualização.

abs,
Pablo