felini 0 Denunciar post Postado Fevereiro 3, 2011 Pessoas, Estou criando um formulário de SUBCATEGORIA que irá ser cadastrado dentro de uma CATEGORIA. O formulário que criei, busca no banco de dados todos as categorias e coloca dentro de um select. Vejam como eu criei: public function init() { $this->setAction(''); $this->setMethod('post'); $this->setName('formCadastrarSubCategorias'); $catMapper = new Application_Model_CategoriasMapper(); $todasCategorias = $catMapper->fetchAll(); $catId = array(); foreach ($todasCategorias AS $row){ $catId[$row->id] = $row->nome; } $this->addElement('select','var_categoria_id', array( 'label' => 'Categorias: ', 'multiOptions' => array($catId) )); // Opções disponíveis $this->addElement('text','var_subcategoria', array('size' => 30, 'label' => 'Nome: ', 'required' => true)); $this->addElement("submit","btnEnviar", array("ignore" => true, "label" => "Cadastrar!")); } Acontece que, lá no formulário HTML, ele é representado assim: <select name="var_categoria_id" id="var_categoria_id"> <optgroup label="0"> <option value="2" label="Monitores">Monitores</option> <option value="5" label="Teste">Teste</option> <option value="6" label="Teste again">Teste again</option> </optgroup> </select> Na view, lista também um valor "0". Acho que é por causa do multiOptions. Procurei na documentação do ZEND como criar um select simples, sem este optgroup, mas não encontrei nada. Alguém sabe como fazer isto? Se não fui claro, avisa ae. Flw Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Fevereiro 4, 2011 Eu não gosto de utilizar esta forma de fazer não. Eu prefiro fazer assim: public function init() { $this->setAction ( '' ); $this->setMethod ( self::METHOD_POST ); $this->setName ( 'formCadastrarSubCategorias' ); $catMapper = new Application_Model_CategoriasMapper (); $categoria = new Zend_Form_Element_Select ( 'var_categoria_id' ); $categoria->setLabel ( 'Categorias:' ); // acho que aqui tá faltando um setRequired... foreach ( $catMapper->fetchAll () as $row ) { $categoria->addMultiOption ( $row->id, $row->nome ); } $this->addElement ( $categoria ); $subcategoria = new Zend_Form_Element_Text ( 'var_subcategoria' ); $subcategoria->setLabel ( 'Nome:' )->setRequired ()->setAttrib ( 'size', 30 ); $this->addElement ( $subcategoria ); $this->addElement ( "submit", "btnEnviar", array ("ignore" => true, "label" => "Cadastrar!" ) ); } Carlos Eduardo ---------------------------- EDIT - Olhando de novo o seu código, o problema dele está aqui: 'multiOptions' => array($catId) $catId já é um array. Ao passar desta forma, você está passando um array multidimensional, quando na verdade você deveria passar um array simples. Trocando isto pelo código abaixo deve resolver. 'multiOptions' => $catId Compartilhar este post Link para o post Compartilhar em outros sites
felini 0 Denunciar post Postado Fevereiro 4, 2011 Fala ae Matias!!! Cara, era exatamente isso! Não tinha me ligado. Deixei só 'multiOptions' => $catId E funcionou certinho! Muito obrigado! Compartilhar este post Link para o post Compartilhar em outros sites