Menu Básico - bjverde/formDin GitHub Wiki

Nesse capitulo vamos entender o funcionamento básico do menu.

A Imagem abaixo é um link para YouTube sobre o curso de FormDin a parte de Menu Video Youtube - Curso formDin parte 4 - Menu

Vamos utilizar como exemplo o arquivo appexemplo_v1.0/includes/menu.php que é o menu da Aplicação de Exemplo 1. Menu Appev1

Abaixo o exemplo somente da parte "Campos"

$menu =  new TMenuDhtmlx();
$menu->add('1', null, 'Campos', null, null, 'user916.gif');
$menu->add('11', '1', 'Campo Texto', null, 'Declaração de texto');
	$menu->add('11.1', '11', 'Campo Texto Simples');
    	$menu->add('11.1.1', '11.1', 'Campo Texto', 'view/fields/exe_TextField.php')->setJsonParams("{'p1':'parametro_1','p2':'parametro_2'}");
    	$menu->add('11.1.2', '11.1', 'Entrada com Máscara', 'view/fields/exe_maskField.php');
    	$menu->add('11.2.3', '11.1', 'Campo Memo', 'view/fields/exe_TMemo.php');
	$menu->add('11.2', '11', 'Campo Texto Richo');
    	$menu->add('11.2.1', '11.2', 'Campo Memo com tinyMCE', 'view/fields/exe_Ttinymce.php');
    	$menu->add('11.2.2', '11.2', 'Campo Editor com CkEditor', 'view/fields/exe_TTextEditor.php');
	$menu->add('11.3', '11', 'Campo Texto funções');
    	$menu->add('11.3.1', '11.3', 'Autocompletar', 'view/fields/exe_autocomplete.php');
    	$menu->add('11.3.2', '11.3', 'Autocompletar II', 'view/fields/exe_autocomplete2.php');
    	$menu->add('11.3.3', '11.3', 'Consulta On-line', 'view/fields/exe_onlinesearch.php');
    	$menu->add('11.3.4', '11.3', 'Consulta On-line I (ERRO)', 'view/fields/exe_onlinesearch1.php');
    	$menu->add('11.3.5', '11.3', 'Autocompletar 3 + Consulta On-line', 'view/fields/exe_autocomplete3.php');
$menu->add('12', '1', 'Campo HTML');
    $menu->add('12.1', '12', 'Campo HTML', 'view/fields/exe_HtmlField.php');
    $menu->add('12.2', '12', 'Campo HTML com iFrame', 'modulos/iframe_phpinfo/ambiente_phpinfo.php');
$menu->add('13', '1', 'Campo Coord GMS');
    $menu->add('13.1', '13', 'Campo Coord GMS', 'view/fields/exe_CoordGmsField.php');
    $menu->add('13.2', '13', 'Campo Coord GMS 02', 'view/fields/exe_CoordGmsField02.php');
$menu->add('14', '1', 'Campo Select', 'view/fields/exe_SelectField.php');
$menu->add('15', '1', 'Campo Radio', 'view/fields/exe_RadioField.php');
$menu->add('16', '1', 'Campo Check', 'view/fields/exe_CheckField.php');
$menu->add('17', '1', 'Campo Arquivo ou Blob');
    $menu->add('171', '17', 'Campo Blob');
        $menu->add('1171', '171', 'Campo Blob Salvo no Banco', 'view/fields/exe_fwShowBlob.php');
        $menu->add('1172', '171', 'Campo Blob Salvo no Disco', 'view/fields/exe_fwShowBlobDisco.php');
    $menu->add('172', '17', 'Campo Arquivo simples');
       $menu->add('1721', '172', 'Assincrono', 'view/fields/exe_FileAsync.php');
       $menu->add('1722', '172', 'Normal', 'view/fields/exe_TFile.php');
       $menu->add('1723', '172', 'TAssincrono', 'view/fields/exe_TFileAsync.php');
    $menu->add('173', '17', 'Cadastro Arquivo Postgres', 'pdo/exe_pdo_4.php', 'Exemplo de Upload de imagem que mostra o arquivo antes de finalizar');

Explicando cada parâmetro

Abaixo copia da documentação do construtor do método.

    /**
    * Método para adicionar itens de menu
    *
    * @param string $strId          - 1: id do Menu
    * @param string $strIdParent    - 2: id do Item pai.
    * @param string $strText        - 3: Texto que irá aparecer para o usuário
    * @param string $strUrl         - 4: Caminho do módulos
    * @param string $strToolTip     - 5: uma explicação maior sobre o item
    * @param string $strImg         - 6: imagem será utilizada como ícone
    * @param string $strImgDisabled - 7: imagem para o menu desabilitado
    * @param boolean $boolDisabled  - 8: Menu desabilitado
    * @param string $strHotKey
    * @param boolean $boolSeparator
    * @return TMenuDhtmlx
    */

Entendendo a relação pai e filho dos menus

Vamos pegar o exemplo os primeiros itens do menu campo > Campo texto > Campo Texto Simples.

  • O primeiro parâmetro é um ID do menu
  • o segundo parâmetro é um ID do pai.

O ID pode ser um numero inteiro ou separado por ponto como nos exemplo abaixo. O importante é nunca ter dois menus com mesmo ID. Uma dia é usar os números inteiros simples para os menus raiz, depois em cada filho ir colocando separado por ponto.

$menu =  new TMenuDhtmlx();
$menu->add('1', null, 'Campos', null, null, 'user916.gif');
$menu->add('11', '1', 'Campo Texto', null, 'Declaração de texto');
	$menu->add('11.1', '11', 'Campo Texto Simples');
    	     $menu->add('11.1.1', '11.1', 'Campo Texto', 'view/fields/exe_TextField.php')->setJsonParams("{'p1':'parametro_1','p2':'parametro_2'}");
    	     $menu->add('11.1.2', '11.1', 'Entrada com Máscara', 'view/fields/exe_maskField.php');
    	     $menu->add('11.2.3', '11.1', 'Campo Memo', 'view/fields/exe_TMemo.php');
	$menu->add('11.2', '11', 'Campo Texto Richo');

O quarto parâmetro strUrl

Por padrão o formDin irá buscar o arquivo da tela dentro da pasta módulos, isso se for informado apenas o nome do arquivo PHP. Porém pode ser informado o caminho completo iniciado na raiz da aplicação.

Exemplo 01

Ainda usando a Aplicação de Exemplo 1, no menu Mensagens e Ajuda no item Hints / Tooltips. O código informa apenas o nome do arquivo PHP, assim o formDin irá buscar dentro da pasta módulos.

$menu->add('4', null, 'Mensagens e Ajuda', null, null, '../../base/imagens/feedback-512.png');
    $menu->add('40', '4', 'Hints / Tooltips', 'exe_hint.php');

Exemplo 02

Ainda usando a Aplicação de Exemplo 1, no menu Formulário no item Form 01 - Normal. O código informa todo caminho relativo do modulo, assim o formDin irá buscar dentro no caminho informado.

$menu->add('10', null, 'Formulário', null, null, '../../base/imagens/fill_form-512.png');
    $menu->add('10.1', '10', 'Form 01 - Normal', 'view/form/exe_TForm.php');

Incrementando a Primeira Aplicação

Vamos criar uma nova entrada no menu. Essa entrada será utilizada no futuro.

Repare

  1. a tela será o arquivo pedido.php, que será buscada dentro da pasta modulo
  2. terá o icone do formulário.
  3. a ultima linha do arquivo menu deve ser $menu->getXml();
  4. recarregue a aplicação (F5 ou clicando no reload)

Exemplo do que deve ser incluído no arquivo menu

$menu->add('2', null, 'Telas',null);
$menu->add('2.1', '2', 'Cadastro do Pedido','pedido.php', 'Um texto longo para Cadastro de produtos', '../../base/imagens/fill_form-512.png');

O Resultado deve parece com a imagem abaixo. Menu Novo

Próxima etapa ?

8 - Conectando com um Banco de Dados