Olá pessoal!
Nesse tutorial vou ensinar a como usar checkbox dinamicamente, ou seja, múltiplos checkbox. Isso é muito útil quando tempos uma lista que permite múltiplas marcações (ou escolhas) vindas do banco de dados.
No seu arquivo do Formulário (FORM) que chamaremos de Etiquetas (EtiquetasForm.php), para criarmos o campo de checkbox utilizaremos o Elemento MultiCheckbox e daremos a ele o nome de “etiquetas”. Veja no exemplo abaixo:
setUseHiddenElement ( true );
...
?>
No seu controller, que chamaremos também de Etiquetas (EtiquetasController.php), em sua action, faça algo como isso:
getEtiquetasTable ();
$etiquetas = $etiquetas->fetchAll ();
$checkEtiqueta = array ();
/* Atribue para a array $checkEtiqueta o índice do ID, e o value o * Nome da etiqueta. Assim, teremos a label do checkbox com o nome
* da etiqueta e o valor do checkbox como o id
*/
foreach ( $etiquetas as $etiqueta ) {
$checkEtiqueta [$etiqueta->id] = " " . $etiqueta->nome;
}
//Crio o objeto do formulário
$etiquetaForm = new EtiquetaForm ();
//Seto os valores para o checkbox de acordo com os valores do bd
$etiquetaForm-> ( "etiquetas" )->setValueOptions ( $checkEtiqueta );
//Envio para a view o formulário já populado
return array (
"formulario" => $etiquetaForm,
);
}
?>
Agora, na view que chamaremos de etiquetas.phtml, farei a exibição dos checkbox das etiquetas após criar o formulário.
form()->openTag($formulario);
//Criado no arquivo FORM mas não mostrado no tutorial
echo $this->formelement($formulario->get('idProduto'))
$etiquetas = $formulario->get ( 'etiquetas' );
//Crio a Helper do Checkbox para poder separar por linha
$multiCheckBoxViewHelper = new \Zend\Form\View\Helper\FormMultiCheckbox ();
//Faz a separação dos checkbox por linha
$multiCheckBoxViewHelper->setSeparator ( '
' );
echo $multiCheckBoxViewHelper->render ( $etiquetas );
//Criado no arquivo FORM mas não mostrado no tutorial
echo $this->formelement($formulario->get('submit'));
echo $this->form()->closeTag($formulario);
?>
Pronto! Agora suas etiquetas nos checkbox devem estar sendo exibidas como na imagem abaixo:
Fontes que me auxiliaram neste tutorial
Goto Answr.com. Disponível em: http://gotoanswer.com/?q=ZF2+Form%5CElement%5CMultiCheckbox%3A+how+to+get+each+item+on+a+new+line%3F. Acesso em 30/03/2015.
Documentação Oficial do Zend Framework 2. Disponível em: http://framework.zend.com/manual/current/en/modules/zend.form.elements.html#zend-form-element-multicheckbox. Acesso em 30/03/2015.
Como editar esse produto e suas etiquetas?