发新话题
打印

zend_form的排版

zend_form的排版

用zend_form 添加表单元素解析出来的页面不好看,

代码如下:

class UserController extends Zend_Controller_Action{
public function getForm(){
$form=new Zend_Form();
            $form -> setAction('/user/login')
            ->setMethod('post')
            ->setAttrib('id','login');
                        
            $userName=$form->createElement('text','userName');
            $userName->addValidators(array(array('NotEmpty', true), 'alnum', array('regex', false, array('/^[a-z]+/')), array('stringLength',false,array(6))))
            ->setRequired(true)
            ->addFilters(array('StringToLower'))
            ->setLabel('鐢ㄦ埛鍚嶏細')
            ->setValue('ccc')
            ->setAttrib('size','40')
            //->setAttrib('class','user')
            ->setAttrib('style','font-family:瀹嬩綋; color:#cccccc;')
            ->addDecorators(array(
                    //array('ViewHelper', array('helper' => 'formText')),
                    array('Errors'),
                    array('HtmlTag', array('tag' => 'dd')),
                    //array('DtDdWrapper')
                    //array('Fieldset',array('Legend' => 'aaa')),
                    array('Label', array('tag' => 'dt')),
                ));
                                         
            $password=$form->createElement('password','password');
            $password->addValidators(array(array('stringLength',false,array(6))))
            ->setRequired(true)
            ->setLabel('瀵嗙爜锛?');
                    
            $sex=$form->createElement('radio','sex');
            $sex->setLabel('鎬у埆锛?')
            ->setMultiOptions(array('1'=>'鐢?', '0'=> '濂?'))
            ->setAttrib('checked','checked')
            ->setSeparator(' ');
                 
            
            $love=$form->createElement('multiCheckbox','love');
            $love->setLabel('鍏磋叮锛?')
            ->setMultiOptions(array('1'=>'鏃呮父', '2'=>'鎷虫湳'))
            ->setSeparator(" ");
            
            $submit=$form->createElement('submit','submit');
            $submit->setLabel('Login')
            ->setAttrib('size','60');
            
            $form->addElements(array($userName, $password, $sex, $love, $submit));
            return $form;
        }
         
        public function indexAction(){
            $this->view->form = $this->getForm();
            $this->render('formPage');
        }

最后在form-page.php中解析出来的form中label 和输入框不在同一行,问:能让它们在同一行显示吗?:

[ 本帖最后由 freebear 于 2008-4-16 11:42 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

用CSS来设置dt/dd: float: left;如果是针对各表表单,给它指定一个class
        $this->setDecorators(array(
            'FormElements',
            array('HtmlTag', array('tag' => 'dl', 'class' => 'user_form')),
            array('Description', array('placement' => 'prepend')),
            'Form'
        ));
然后你可以在css里面这样写:
dl.user_form dd,dl.user_form dt {float:left;margin:0;padding:0;}
dl.user_form {margin:0;padding:0;}

TOP

多谢回复.
这段时间忙其它的事了,回头试一下.
之前做到这里的时候突然想到,用html中input 可以完成的,为什么还要用zend_form 在服务器生成一次,再response给请求端.并且html可以很好设置?

TOP

发新话题