動的フォームの作成に関する設計上のアイデアを探しています。動的フォームの作成/メタプログラミング/ PHP
私が現在持っていることは例えばいくつかのプロパティ/変数を持つモデルの束です:
class Group extends IDKModel {
/**
* @Form
*/
public $title;
/**
* @Form(validation="{my validation rules here}")
*/
public $permissions;
}
その例でフォームPHPAnnotationは、フォーム要素としてそれを定義し、検証配列が検証に組み込まれていますそれのルール。今私が抱えている問題は、条件文を実装する方法がわかりません。
たとえば、ユーザーが管理者である場合にのみ$権限を表示する方法。時間帯が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")
誰もが簡単にアイデアを持っていますか?
に見つけた唯一の基礎だけでなく、チュートリアルを網羅検証ロジックとフォームのプレゼンテーションロジックを混在しないようにしてください。これは簡単な質問ではありませんが、解決策があります。そのちょうどかなり大きいと私はそれをどこに投稿するか分からない。 – Petah
なぜプレゼンテーションロジックと検証ロジックとを分離する必要がありますか?私が検討しているのは、@Form、@Validation、@Filterの3つの異なるタイプのPHPアノテーションです。@Formはフォーム要素として定義します。@Validationはそれを検証するためのすべてのルールを持ち、@Filterはプレゼンテーションロジックを処理します。 – Peeter
それはあなたがデザインパターンでやったことではないので、私は学びました。注釈を一括して使うべきではないと思います。 – Petah