动态表单构建/元编程/ PHP

时间:2011-02-03 08:48:20

标签: php design-patterns metaprogramming

我正在寻找有关创建动态表单的设计理念。

我目前拥有的是一堆具有一些属性/变量的模型,例如:

 class Group extends IDKModel {

    /**
     * @Form
     */
    public $title;
    /**
        * @Form(validation="{my validation rules here}")
    */
    public $permissions;
}

在该示例中,Form PHPAnnotation将其定义为表单元素,验证数组将在其中内置验证规则。现在我遇到的问题是我不知道如何实现条件。

例如,如果用户是管理员,如何显示$权限。如果时间超过格林威治标准时间12:00,如何显示$ title。基本上任何一种条件。

取自irc.quakenet.org上的#php:

[10:50] <ramirez> i would not try to stick all of the meta-info under one attribute
[10:50] <ramirez> it'd be much cleaner to do something like
[10:50] <ramirez> @FormElement
[10:51] <ramirez> @Validator(params)
[10:51] <ramirez> etc
[10:52] <ramirez> anyways, I would probably do something like.. @Filter(name="Group",value="admin,editor")
[10:53] <ramirez> then for each filter you want to implement, you'll create a class like "Model_Filter_Group", which would be used for eg. the above filter
[10:53] <ramirez> that class in this case would simply explode the groups by comma and see if user is in any of those groups
[10:54] <ramirez> you can use that for any kind of filtering, eg: @Filter(name="PastTime", value="12:00")

任何人都有一个更简单的想法?

1 个答案:

答案 0 :(得分:0)

我建议你看看Zend Framework中的Zend_Form组件: Zend Framework Reference:Zend_Form

Zend_Form非常强大且可高度自定义,但有点太复杂,无法通过良好的OOP设计看到它的所有功能。

即使ZF对你没用,你也可以在那里找到好主意。

btw:手册仅涵盖基础知识以及网络上的教程