2

Zend_Form:: コントローラーではなくビューでフォームを作成する必要があるのはいつですか?

オプション 1 - コントローラーで作成され、ビューに渡されるフォーム (通常使用)

コントローラ:

$form=new MyForm();
$this->view->form=$form;

見る:

echo $this->form;

オプション 2 - ビューで直接作成されたフォーム (ビューのサブパーツを形成するため、私にはよく見えます)

見る:

$form=new MyForm();
echo $this->form;

ありがとう

4

4 に答える 4

5

要するに:新しいビュー

最終的には:

  • 複雑なタスク用のビューヘルパーを作成し(そしてビューでヘルパーを呼び出します$this->getForm())、
  • または使用するModel::getForm()
  • またはservice::getForm()クロスアクションフォームが必要な場合。

詳細な説明:

理想的なケースでは、ロジックをプレゼンテーション(MVC)から分離するために、ビューにはHTMLのみが含まれているためです。

TDDを使用する場合は、変数の衣服にすぎないビュースクリプトではなく、ロジックのテストを記述します。

フォームの表示は、フォーム自体だけでなく、送信されたかどうかのチェック、検証エラーのチェック、フラッシュメッセンジャー変数の設定なども行います。

これらは、スクリプトを表示するために配置するには複雑すぎるタスクです。

ロジックとプレゼンテーションを分離するための良い演習として、 PHPTALテンプレート言語を確認することをお勧めします。これは、ZFで使用されるテンプレート言語としてのネイティブPHPの優れた代替手段です。

于 2010-07-14T17:41:10.830 に答える
2

たとえば、「メーリング リストに登録」フォームのように、フォームがレイア​​ウトのサイドバーに表示される場合、ビューがそれを独自に作成/レンダリングできるようにするのが合理的と思われますが、おそらくビューnew My_Form()スクリプトで呼び出しを行うのではなく、ヘルパーを表示します。すべてのコントローラーに強制的に対処させるのはなぜですか?

Padraic Bradyが ZF のオンライン本である Surviving the Deep Endで述べているように、 「コントローラーはデータ警察ではありません」。

于 2010-07-15T18:08:14.297 に答える
1

Zend_Form はプレゼンテーション エンティティではなく、ビジネス ロジック エンティティであるため、最初のバリアントのみが正しいと思います。したがって、ビューでインスタンス化しようとするのは間違っています。単純に何らかのフォームを表示したい場合は、HTML で直接マークアップするだけです。これは、少なくともコーダーにとってはるかに簡単になります。

于 2010-07-14T16:34:51.393 に答える
0

チームメイトのことを考えてみてください。あなたのデザイナー (またはグラフィカルインテグレーター) もプログラマーですか? そのアプローチは、再利用性とタスクの分離を破壊します。

于 2010-07-21T16:00:47.383 に答える