2011-09-13 119 views
3

我正试图按照Matthew O'Phinney的这个教程,但没有得到任何地方。复合元素不起作用

http://weierophinney.net/matthew/archives/217-Creating-composite-elements.html

所有我想要做的就是创建一个包含一个复选框和输入文本的复合元素。

new Zend_Form_Element_Checkbox(); 
new Zend_Form_Element_Text() 

我的代码太复杂了,很多评论进出,但没有任何工作。我相信比这更容易,但我似乎走错了路。

+0

你需要具体谈谈您的实际问题是什么 – asgeo1

+0

为什么你需要一个复合元素,但?为什么你不能在你的表单中同时拥有两个独立的元素?至于Mathews的方法 - 你肯定需要一个装饰器 - 我想不出你还能如何渲染它。在Mathew的例子中,他创建了一个装饰器,为每个子元素组件调用视图助手 - 这样他就可以将这些元素恰好放置在周围的标记中,正好在他需要的地方。通常,复合元素会有其他“周围”标记,您需要在实际的子元素本身旁边进行渲染。 – asgeo1

+0

啊,马修是Zend Framework。如果有人知道ZF,那就是他。 – markus

回答

3

就我个人而言,我认为自己创建一个复合元素是一项很多工作。我需要一个文本框和一个选择菜单来协同工作,并通过ajax将用户标识符交给该用户拥有的实体,元素,装饰器和验证器的php代码约为200行代码,然后是40行查看使用viewHelper呈现组合元素的脚本。

我跟着这个教程,以及非常有帮助,但没有涵盖我需要的一切,所以我不得不做很多搜索。我决定去使用复合元素,因为功能很关键,并在很多地方使用,但如果它只是一种形式,我会将其实现为2个独立元素并编写简单的表单处理代码来关联这些元素。

5

这里是一篇博文,向您展示如何创建一个表单元素(一个Zend_Form_Element的实例),该表单元素包含2个或更多的输入元素。

http://akrabat.com/zend-framework/a-zend-framwork-compount-form-element-for-dates/

您还可以使用子窗体组以上的元素更多。
链接:http://framework.zend.com/manual/en/zend.form.forms.html#zend.form.forms.subforms

$subform = new Zend_Form_SubForm(); 
    $subform->addElement('checkbox', 'status', array(
     'decorators' => array(
      'ViewHelper', 
     ) 
    )); 
    $subform->addElement('text', 'test', array(
     'label'  => 'Text', 
     'decorators' => array(
      'ViewHelper', 
      'Label' 
     ) 
    )); 
    $this->addSubForm($subform, 'subformname');