2011-02-03 2 views
0

동적 폼 생성에 대한 디자인 아이디어를 찾고 있습니다. 검증에 구축 할 양식 PHPAnnotation 양식 요소와 검증 배열로 정의하는 예에서다이내믹 폼 제작/메타 프로그래밍/PHP

class Group extends IDKModel { 

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

:

는 내가 현재 가지고하는 것은 예를 들어 몇 가지 속성/변수 모델의 무리입니다 그것 안에 규칙. 이제 내가 가지고있는 문제는 조건문을 구현하는 방법을 모른다는 것입니다.

예를 들어, 사용자가 admin 인 경우 $ 권한을 표시하는 방법. 시간대가 12:00 GMT를 넘는 경우 $ 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") 

사람은 간단한 아이디어가?

+0

에서 발견에만 기초뿐만 아니라 튜토리얼을 포함 유효성 검사 논리와 형태의 프리젠 테이션 로직을 혼합하지 않으려 고. 이것은 간단한 질문은 아니지만 해결책이 있습니다. 그것의 다만 확실히 크고 나는 어디에 그것을 배치하는 모른다. – Petah

+0

프리젠 테이션 로직을 검증 로직과 분리해야하는 이유는 무엇입니까? 내가 고려중인 것은 PHPAnnotations의 세 가지 다른 유형을 가지고 있습니다 : @Form, @Validation, @Filter @Form은 폼 요소로 정의하고 @Validation은 유효성 검사를위한 모든 규칙을 가지고 @Filter는 프리젠 테이션 논리를 처리합니다. – Peeter

+0

그게 내가 배운 디자인 패턴에서하는 일이 아니기 때문이야. 나는 주석을 모두 사용하지 말아야한다고 생각한다. – Petah

답변

0

난 당신이 젠드 프레임 워크에서 Zend_Form 구성 요소를 살펴 보시기 바랍니다 : Zend Framework Reference:Zend_Form

Zend_Form은 매우 강력하고 사용자 정의 할 수 있지만, 좋은 OOP 설계에 의해 제공의 모든 기능을 볼 수있는 비트가 너무 복잡 할 수 있습니다.

ZF를 사용하지 않아도 좋은 아이디어를 찾을 수 있습니다.

BTW : 설명서, 하나의 웹

관련 문제