:
class ProfileForm extends Form {
private $form_items = array(
new FormItem('name', 'datatype', 'other_parameters'),
new FormItem('another_name', 'datatype', 'other_parameters'),
...
);
public function render() {
...
}
public function handlePostData() {
...
}
}
あなたは(あなたの送信ボタンIDの<form_name>_submit
のようなものを標準フォーマットを使用する場合は、提出の上にこのような何かを行うことができますので、私は
<input type="submit" onclick="assignAction(this.form, 'myItem_delete');"...>
はその後、サーバー側で私がして、アクションを分割することができます(など...「削除」、「編集」「を追加」のような)異なるアクションを提供するために、異なる提出-ボタンを使用することができます"_"を使用し、フォームクラス識別子として1番目の部分を使用します。単純なスイッチやリフレクションなど)、2番目の部分は、ポストバックデータを処理するフォームクラスのメソッドを指定します。一般的なコードは次のようなものです
$handler = explode('_', $_POST['form_action']);
$className = $handler[0]; // not secure, but simple enough for example
if (class_exists($className))
{
$form = new $className();
$method = $handler[1]; // again too simple
if (method_exists($form, $method))
{
$form->$method($_POST, $other_params...);
}
}
確かに、この例はあまりにも単純です。しかし、それは一般的なアイデアは私にとってはうまくいきます。
出典
2009-05-27 17:18:18
Jet
これは私が探していたものです。ここには興味深いアイデアもいくつかあります。 – EvilChookie