0

我有一个控制器创建这样一个Zend_Form的:插入自定义HTML到Zend_Form的

 $form = new Zend_Form; 
     $form->setAction('/ad/add')->setMethod('post')->setAttrib('id', 'add_form'); 
     $form->addElement('text', 'name', array(
      'label' => 'Name', 
      'description' => 'Ex.: Samsung Galaxy Tab 10.1', 
      'validators' => array(
       'alnum', 
       'notEmpty', 
       array('stringLength', array('min' => 3, 'max' => 150)) 
      ), 
      'required' => true 
     )); 
     $form->addElement('textarea', 'description', array(
      'label' => 'Description', 
      'description' => 'Make sure you give an accurate description of your item.', 
      'validators' => array(
       'alnum', 
       'notEmpty', 
       array('stringLength', array('min' => 10, 'max' => 255)) 
      ), 
      'required' => true 
     )); 
     $form->addElement('submit', 'Submit'); 

当我输出从视图,它工作得很好,正在呈现与DL和DD魔术只是因为它应该。

我现在想要的是添加一个ajax图片上传功能到这个表单。每个图片都会被ajax上传,显示在一个div中,然后我的表单中的一个隐藏字段将被填入上传文件的ID。我怎样才能实现这一点,同时有图像上传位内INSIDE表单的标记?

+2

的[添加一些HTML到Zend的形式]可能的复制(http://stackoverflow.com/questions/2566432/add-some-html-to -zend-forms) – Mogsdad

回答

2

使用视图脚本修饰器。我假设你必须通过iframe上传图片。你可以把它放在你的视图脚本装饰器的phtml文件中。

在你的表单类里面。

$dec = new Zend_Form_Decorator_ViewScript(); 
$dec->setViewScript('Form.phtml'); 

$this->setDecorators(array($dec,'form')); 

内Form.phtml渲染元素做

<?php echo $this->element->username ;?> 
<?php echo $this->element->image ; ?> 

,并添加您的iframe,因为它是。

为了更多地了解查看脚本装饰

http://framework.zend.com/manual/en/zend.form.standardDecorators.html#zend.form.standardDecorators.viewScript

+0

实际上,我将使用其中的一个jQuery插件上传图像。我需要的是显示上传图片的容器,以及上传插件用于拾取和使用的输入字段。我希望这是在我的表格中。 – Zorrocaesar

+0

@Zorrocaesar把它放在你的表单中间,就像我上面提到的那样简单地使用viewscipt装饰器。 –

+0

比它接缝我不明白你的答案。 Form.phtml应该包含什么?主窗体,还是新的装饰器标记?看看我的示例代码?我应该如何将你的答案与我的代码结合起来? – Zorrocaesar