6. Operadores Especiais¶
Nessa seção veremos como utilizar os operadores especiais que podem ser usados para dar um significado diferente à uma variável.
6.1 Operador Opcional (?)¶
Quando uma variável é criada mas não recebe seu valor na criação do componente, entende-se que foi uma falha do programador, e por consequência todo o atributo do qual essa variável faz parte é removido da estrutura.
Primeiro, vamos analisar um exempo válido:
$buttonTemplate = new \Cajudev\UI\Template('button', [
'button' => [
'attributes' => [
'class' => 'btn btn-::style btn-::size',
],
'text' => '::text'
],
]);
$easyForm = new \Cajudev\EasyForm();
$easyForm->templates->add($buttonTemplate);
$easyForm->create('button', [
'::style' => 'primary',
'::size' => 'lg',
'::text' => 'Enviar',
]);
Resultado:
Mas o que acontece se eu não informar um valor para a variável ::size?
$easyForm->create('button', [
'::style' => 'primary',
'::text' => 'Enviar',
]);
Resultado:
Todo o atributo class da qual aquela variável faz parte foi removido. Esse comportamento serve para indicar
ao programador que ele esqueceu de inicializar alguma variável, pois a mesma poderia passar desapercebida
e ter coisas como ::size aparecendo no código fonte da página.
Quando surge a necessidade de ter variáveis opcionais, ou seja, que nem sempre deverão ser informadas,
você pode utilizar o operador ?, que ao invés de remover todo o atributo removerá apenas essa variavel,
caso a mesma não seja informada.
$buttonTemplate = new \Cajudev\UI\Template('button', [
'button' => [
'attributes' => [
'class' => 'btn btn-::style btn-::size?', //operador aqui
],
'text' => '::text'
],
]);
$easyForm = new \Cajudev\EasyForm();
$easyForm->templates->add($buttonTemplate);
$easyForm->create('button', [
'::style' => 'primary', //size não foi inicializada
'::text' => 'Enviar',
]);
Resultado:
6.2 Operador Condicional (!)¶
O operador condicional serve para relacionar a existência de um atributo com a existência de uma variável.
No exemplo a seguir, criamos uma condição onde o elemento span, somente será exibido,
caso a variável ::required tenha sido informada.
$inputTemplate = new \Cajudev\UI\Template('input', [
'label' => [
'text' => '::label',
'children' => [
'span' => [
'display' => '::required!', // operador aqui
'text' => '*'
]
]
],
'input' => [
'attributes' => [
'type' => '::type',
'class' => 'form-control',
'::required'
],
]
]);
$easyForm = new \Cajudev\EasyForm();
$easyForm->templates->add($inputTemplate);
$easyForm->create('input', [
'::type' => 'text',
'::label' => 'Nome de Usuário'
]);
Resultado:
Agora inicializando a variável:
$easyForm->create('input', [
'::type' => 'text',
'::label' => 'Nome de Usuário',
'::required' => 'required'
]);
Resultado: