2014-09-02 66 views
0

我在我的zend窗体中有一个公共函数,称为select,其中它的consisit和element选择添加addmultioptions,每个addmultioption都有一个特定的窗体,它在选择后出现,有些窗体虽然由datepickers组成,但我有一个问题选择与datepickers这些选择字段。我记住我正在使用Jquery,并且在我的application.ini文件中包含了Zendx长度,并试图扩展ZendX_JQuery_Form类。Zend Form DatePicker

我有一些与datepickers使用相同的方法为每个表单,但不知道这是怎么回事。下面是我的代码。

继承人我的代码下面的例子。

<?php 

class Form_Excel extends ZendX_JQuery_Form //Tried Both methods normally use the one below 
class Form_Excel extends Zend_Form 
{ 
    public function init() 
    { 
} 


    public function excel() 
    { 
     $type = new Zend_Form_Element_Select('type'); 
     $type->setLabel('Select a Type:') 
      ->addMultiOption('1', ' Report1') 
      ->addMultiOption('2', ' Report2') 
      ->addMultiOption('3', ' Report3') 
      ->addMultiOption('4', ' Report4') 
      ->addMultiOption('5', ' Export5') 
      ->addMultiOption('6', ' Report6') 
      ->addMultiOption('7', ' Report7') 
      ->addmultiOption('8', ' Report8'); 

     $type->addDecorator(array('row' => 'HtmlTag'), array('tag' => 'div','class' => 'col-md-12 field-box','style' => 'padding-left:0;padding-top:10px;margin-bottom: -35px;clear: both;')) 
      ->addDecorators(array(array('HtmlTag',array('tag' => 'dd', 'class' => 'ui-custom search-width span5')))); 

     $this->addElement($type); 
    } 

    public function 1() 
    { 
     $hidden = new Zend_Form_Element_Hidden('hidden'); 
     $hidden->setValue('status'); 
     $this->addElement($hidden); 

     $status = new Zend_Form_Element_Select('status'); 
     $status->setLabel('Current Status: ') 
        ->addMultiOption('', '--Select One--') 
        ->addMultiOption(1, 'First') 
        ->addMultiOption(2, 'Second') 
        ->addMultiOption(3, 'Contacted') 

       ->addDecorator(array('row' => 'HtmlTag'), array('tag' => 'div','class' => 'col-md-12 field-box','style' => 'padding-left:0;padding-top:10px;clear: both;')); 

     $status->setAttribs(array('class' => 'col-md-12 form-control')); 

     $this->addElement($status); 

     //Assessed Before/After 
     $before = new ZendX_JQuery_Form_Element_DatePicker('before'); 
     $before  ->setLabel('Date Before: ') 
        ->addFilter('StripTags'); 
     $before  ->setJQueryParams(array(
        'dateFormat'=>'yy-mm-dd', 
        'changeMonth'=> true, 
        'changeYear'=> true 
        )) 
        ->addDecorator(array('row' => 'HtmlTag'), array('tag' => 'div','class' => 'col-md-4 field-box the-font print-container','style' => 'padding-left:0;padding-top:10px;')); 


     $before->setAttribs(array('class' => 'col-md-4 form-control the-font text-field')); 

     $this->addElement($before);   

     $after = new ZendX_JQuery_Form_Element_DatePicker('after'); 
     $after ->setLabel('Date After: ') 
        ->addFilter('StripTags'); 
     $after ->setJQueryParams(array(
        'defaultDate' => date('d-m-y'), 
        'changeMonth'=> true, 
        'changeYear'=> true 
        )) 
        ->addDecorator(array('row' => 'HtmlTag'), array('tag' => 'div','class' => 'col-md-4 field-box the-font print-container','style' => 'padding-left:0;padding-top:10px;')); 


     $after->setAttribs(array('class' => 'col-md-4 form-control the-font text-field')); 

     $this->addElement($after); 


     $submit = new Zend_Form_Element_Submit('submit'); 
     $submit ->setLabel('Submit') 
       ->setAttrib('class', 'btn-flat primary') 
       ->addDecorator(array('row' => 'HtmlTag'), array('tag' => 'div','style' => 'width: 88%; padding-left:0;clear: both;')); 
     $this->addElement($submit); 
    } 
} 

回答

0

当使用:

$this->view->form = new Form_Excel(); 

即通常仅执行窗体的init()方法。

要执行另一个方法,我们仍然会实例化这个类,然后调用一个方法。

例如。

$this->view->form->excel(); 

然后在视图:

<?= $this->form ?> 

将返回select元件。

+0

你说的是这个$ form = new Form_Excel(); $ form-> excel();其中我已经在控制器和<?phpecho $ this-> form;?>中,在我的视图窗体中,但是我不能在datepicker字段上选择,我不能选择该字段并选择一个日期 – 2014-09-02 12:15:32

+1

是的,因为您没有为日期选择器扩展'ZendX_Jquery_Form',这是必需的,而且如果它由'ajax'装载,它仍然无法工作,您将需要使用'。 datepicker()'jquery方法:http://jqueryui.com/datepicker/ – surfer190 2014-09-02 12:17:35

+0

如何来一些我没有实现ZendX_Jquery_Form的形式,但他们仍然工作?我试过,但即时通讯尝试再次只是为了检查我是否没有遗漏任何东西 – 2014-09-02 12:23:54