Zend Form - adicionando campos em blocos de div

575 views
Skip to first unread message

Willians - Icefusion

unread,
Oct 11, 2012, 10:38:43 AM10/11/12
to zfbr...@googlegroups.com
Bom dia galera...

por acaso com zend form tem como eu colocar campos gerados pelo zend form dentro de divs para eu organizar melhor o layout?

por exemplo, da forma que criei:

 public function getFormCadastro() {
        $form = new Zend_Form;

        $form->setMethod('post');
        $form->setAction('/admin/categorias/cadastrar');

        $id = $form->createElement('text', 'id', array('label' => 'Código(Id):', 'class' => 'input-g'))->setRequired(true);
        $form->addElement($id);

        $nome = $form->createElement('text', 'name', array('label' => 'Nome:', 'class' => 'input-g'))->setRequired(true);
        $form->addElement($nome);

        $url = $form->createElement('text', 'url', array('label' => 'Url: (Endereço da Categoria a-z 0-9)', 'class' => 'input-g'))->setRequired(true);
        $form->addElement($url);

        $loja = $form->createElement('select', 'shop_id', array('label' => 'Loja:', 'class' => 'input-g'))->setRequired(true);
        $form->addElement($loja);
  
        return $form;
}

gerando o seguinte html


<form enctype="application/x-www-form-urlencoded" method="post" action="/admin/categorias/cadastrar"><dl class="zend_form">
<dt id="id-label"><label for="id" class="required">Código(Id):</label></dt>
<dd id="id-element">
<input type="text" name="id" id="id" value="" class="input-g" /></dd>
<dt id="name-label"><label for="name" class="required">Nome:</label></dt>
<dd id="name-element">
<input type="text" name="name" id="name" value="" class="input-g" /></dd>
<dt id="url-label"><label for="url" class="required">Url: (Endereço da Categoria a-z 0-9)</label></dt>
</form>


porem a cada 2 campos se fosse de um tamanho médio gostaria de colocar dentro de um container (div)
se fosse grande colocaria 1 campo dentro do container...

Robson Alexandre

unread,
Oct 13, 2012, 12:43:59 PM10/13/12
to zfbr...@googlegroups.com
Willians,
vc pode usar o setDecorators, p.e.

$this->setMethod('post');
        $this->setAction('/admin/categorias/cadastrar');

        $id = $this->createElement('text', 'id', array(

                            'label' => 'Código(Id):',
                            'class' => 'input-g'))
                        ->setRequired(true)
                        ->setDecorators(array(                           
                            'ViewHelper', 'Errors', 'Description',
                            array(array('inner' => 'HtmlTag'),
                                array('tag' => 'div', 'class' => 'item-div')),
                            'Label',
                            array(array('outter' => 'HtmlTag'),
                                array('tag' => 'div', 'class' => 'item-div'))
                        ));
        $this->addElement($id);

        $nome = $this->createElement('text', 'name', array(

                            'label' => 'Nome:',
                            'class' => 'input-g'))
                        ->setRequired(true)
                        ->setDecorators(array(
                            'ViewHelper', 'Errors', 'Description',
                            array(array('inner' => 'HtmlTag'),
                                array('tag' => 'div', 'class' => 'item-div')),
                            'Label',
                            array(array('outter' => 'HtmlTag'),
                                array('tag' => 'div', 'class' => 'item-div'))
                        ));
        $this->addElement($nome);

        $url = $this->createElement('text', 'url', array(

                            'label' => 'Url: (Endereço da Categoria a-z 0-9)',
                            'class' => 'input-g'))
                        ->setRequired(true)
                        ->setDecorators(array(
                            'ViewHelper', 'Errors', 'Description',
                            array(array('inner' => 'HtmlTag'),
                                array('tag' => 'div', 'class' => 'item-div')),
                            'Label',
                            array(array('outter' => 'HtmlTag'),
                                array('tag' => 'div', 'class' => 'item-div'))
                        ));
        $this->addElement($url);

        $loja = $this->createElement('select', 'shop_id', array(

            'label' => 'Loja:',
            'class' => 'input-g'))
                ->setRequired(true)
                ->setDecorators(array(
                            'ViewHelper', 'Errors', 'Description',
                            array(array('inner' => 'HtmlTag'),
                                array('tag' => 'div', 'class' => 'item-div')),
                            'Label',
                            array(array('outter' => 'HtmlTag'),
                                array('tag' => 'div', 'class' => 'item-div'))
                        ));
        $this->addElement($loja);


gerando o html

<form action="/admin/categorias/cadastrar" method="post" enctype="application/x-www-form-urlencoded"><dl class="zend_form">
<div class="item-div"><label class="required" for="id">Código(Id):</label>
<div class="item-div">
<input type="text" class="input-g" value="" id="id" name="id"></div></div>
<div class="item-div"><label class="required" for="name">Nome:</label>
<div class="item-div">
<input type="text" class="input-g" value="" id="name" name="name"></div></div>
<div class="item-div"><label class="required" for="url">Url: (Endereço da Categoria a-z 0-9)</label>
<div class="item-div">
<input type="text" class="input-g" value="" id="url" name="url"></div></div>
<div class="item-div"><label class="required" for="shop_id">Loja:</label>
<div class="item-div">
<select class="input-g" id="shop_id" name="shop_id">
   
</select></div></div></dl></form>


Não entendi muito bem o que vc quer dizer com a cada dois campos colocar dentro de uma div.
Mas vc pode fazer de diversas formas.

Atenciosamente

Robson Alexandre


--
Essa mensagem faz parte do grupo "zfbrasil" no Google Groups.
Para escrever neste grupo, envie um email para zfbr...@googlegroups.com
Para se desligar do grupo, envie um email para zfbrasil-u...@googlegroups.com
Mais informações, visite o grupo em http://groups.google.com/group/zfbrasil?hl=pt-BR

Willians - Icefusion

unread,
Oct 15, 2012, 10:49:05 AM10/15/12
to zfbr...@googlegroups.com
Bom dia...

digamos que cada div vai ser uma linha do form ficando algo assim:

<div>Id:            [           ]   Nome: [                                                       ]</div> -> cada linha é uma div
<div>Endereço: [                                                                                 ]</div>
<div>Cidade:     [                                                                                 ]</div>

Robson Alexandre

unread,
Oct 15, 2012, 12:30:26 PM10/15/12
to zfbr...@googlegroups.com
Fala Willians,

Estava com essa mesma dúvida sua e resolvi com a resposta deste tópico.
Dá uma olhada e qq coisa fala aqui.

https://groups.google.com/d/topic/zfbrasil/cbmIIg4SJ9c/discussion

Atenciosamente

Robson Alexandre

Willians - Icefusion

unread,
Nov 22, 2012, 1:41:46 PM11/22/12
to zfbr...@googlegroups.com
consegui fazer como eu queria (colocar um label e um input, ambos entre uma div) da seguinte forma:

Reply all
Reply to author
Forward
0 new messages