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
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
Oi Eduardo,
Obrigado pela contribuição. Acredito que ela seja válida e potencialmente entrará na próxima atualização.
abs,
Pablo