2010-06-10 73 views
0

我想利用ZendX_JQuery dialogContainer视图助手,为了产生一个模式窗口,用户可以输入指定的信息(例如发送消息)。我试图以这种方式使用dialogContainer视图助手。ZendX_JQuery dialogContainer使用

首先,将ZendX库包含在应用程序库文件夹中。

其次,包括在bootstrap.php中内initViewHelper方法以下行文件

“$视图 - > addHelperPath( 'ZendX/JQuery的/视图/助手/', 'ZendX_JQuery_View_Helper');”

第三,添加以下条件在layout.phtml使JS的

"<?php if($this->jQuery()->isEnabled()){ 
       $this->jQuery()->setLocalPath($this->baseUrl() 
       .'/js/jquery/js/jquery-1.4.2.min.js')     
       ->setUiLocalPath($this->baseUrl() 
       .'/js/jquery/js/jquery-ui-1.8.custom.min.js')     
       ->addStylesheet($this->baseUrl() 
       .'/js/jquery/css/ui-lightness/jquery-ui-1.8.custom.css'); 
       echo $this->jQuery(); 
     } 
    ?>" 

第四,创建延伸ZendX_JQuery_Form

我Application_Form_JQueryForm
"<?php 
    class Application_Form_JQueryForm extends ZendX_JQuery_Form 
     { 
     private $form; 

     public function init() 
     { 
     $this->form = $this->setAction(Zend_Controller_Front::getInstance()->getBaseUrl() . '/index/index') 
         ->setMethod('post'); 


    $this->form->setDecorators(array(
     'FormElements', 
     'Form', 
     array ('DialogContainer', array(
      'id' => 'tabContainer', 
      'style' => 'width: 600px;', 
      'title' => 'Send a private message to Kalle', 
      'JQueryParams' => array(
       'tabPosition' => 'top',      
      ), 
     )), 
    )); 

    $topic = new Zend_Form_Element_Text('topic'); 
    $topic->setValue('topic') 
      ->setRequired(true) 
      ->setValidators(array('validators' => array(
       'validator' => 'StringLength', 
       'options' => array(1,15) 
     ))) 
      ->setDecorators(array(
       'ViewHelper', 
       'Description', 
       'Errors', 
       array('HtmlTag', array('tag' => 'dl')))); 

    $textarea = new Zend_Form_Element_Textarea('textarea'); 
    $textarea->setValue('post a comment') 
      ->setAttribs(array(
       'rows' => 4, 
       'cols' => 20 
      )) 
      ->setRequired(true) 
      ->setValidators(array('validators' => array(
       'validator' => 'StringLength', 
       'options' => array(1,15) 
      ))) 
      ->setDecorators(array(
       'ViewHelper', 
       'Description', 
       'Errors', 
       array('HtmlTag', array('tag' => 'dl')))); 

    $submit = new Zend_Form_Element_Submit('submit'); 
    $submit->setLabel('Send your comment') 
      ->setDecorators(array(
       'ViewHelper', 
       'Description', 
       'Errors', 
       array('Description', array('escape' => false, 'tag' => 'span')), 
       array('HtmlTag', array('tag' => 'dl')))) 
      ->setDescription('or <a href="/index/index/send/false">Cancel</a>'); 


    $this->form->addElements(array($topic, $textarea, $submit));  
} 

}” 这种形式然后在控制器实例化行动方法,并在视图中调用。

所以对于我的问题,无论我是什么尝试为了例如设置dialogContainer的宽度或任何其他参数(color,css,height等等),这是在表单的JQueryForm的setDecorator部分中,我似乎无法获得在视图中调用时任中所产生的模态任何变化,在适当的方向任何帮助将不胜感激

在此先感谢,卡尔·约翰逊

回答

0

一个迟到的回答是肯定的 - 但很多意见 - 所以想通我会回答。你想为模态设置的参数应该从JQueryParams数组中设置。因此 - 例如:

$this->form->setDecorators(array(
    'FormElements', 
    'Form', 
    array ('DialogContainer', array(
      'id'   => 'tabContainer', 
      'style'  => 'width: 600px;', 
      'title'  => 'Send a private message to Kalle', 
      'JQueryParams' => array(
       'tabPosition' => 'top', 
       'width'  => '600', 
       'height'  => '450' 
     ), 
    )), 
)); 

您可以在jQuery UI站点上找到这些参数选项。

LK

+1

'jQueryParams'的'j'应该是小写。 – shoaiblatif 2012-07-10 07:12:40