ZF:重复使用表单中的元素

时间:2011-10-11 18:25:00

标签: php zend-framework

对于与地址,电话号码等相关的元素。在表单中重用它们的最佳方法是什么?我应该创建某种帮助来做到这一点吗?

2 个答案:

答案 0 :(得分:5)

我不建议帮助者。我只是扩展表单元素类,构建我的元素并以我需要的任何形式添加它。

class Project_Form_Element_PhoneNumber extends Zend_Form_Element
{
    //look at the Zend_Form_Element class, it gives you most of the infrastructure
    //look at how shipped elements are built on top of that class
}

答案 1 :(得分:2)

正如@markus所说,您可以创建扩展Zend_Form_Element的自定义表单元素。

对于您所识别的用途 - 地址,电话号码 - 可能是其他元素的聚合但仍需要被视为单个实体,请查看Matthew Weier O'Phinney的博客文章:

Creating composite elements - phly, boy, phly

他在其中创建一个复合元素,表示由三个选择下拉列表组成的日期。

另一种方法是创建subform来表示其中一个实体。子表单类可以如下所示:

class My_Form_Subform_Address extends Zend_Form_Subform
{
    public function init()
    {
        // add your elements
    }
}

然后将子表单添加到主表单:

$form->addSubform(new My_Form_Subform_Address(), 'address');