2

私は自分のCMSを作成しています。私はMVCフレームワークの助けを借りてこれを行っています。CMSは一連の標準要素を使用して構築する必要があると思います。同様に、すべてのフォーム要素が存在するボタン、テキストフィールド、divコンテナなど。

たとえば、基本的なページを作成したい場合は、ビューで次のようなことを行います。

$cmsForm->beginTab('tab name');
$cmsForm->textfield('name', 'default value');
$cmsForm->textfield('email', '');
$cmsForm->textarea('info', '');
$cmsForm->submit('Save');
$cmsForm->endTab();

問題は、これらのメソッドをどこに配置すればよいかわからないことです。私は明らかにこれらのメソッドをコントローラー内に置くことはできません。しかし、おそらくモデルは良い場所ですか?一方、モデルレイヤーは、HTMLを返すためではなく、永続レイヤーからデータを保存/取得するために使用されます...

この種のことのためにMVCアーキテクチャの良い場所は何でしょうか?

4

3 に答える 3

1

このタイプのコードは、ビューレイヤーに属します。ビューレイヤーはテンプレートのみにできるというルールはありません。

于 2012-05-20T16:25:24.023 に答える
1

あなたがしなければならないことを言う規則はありません。

私があなたなら、自分のクラスを作成してフレームワークに実装します。必要になった場合に後でリファクタリングする方が簡単だからです。また、フレームワークのロジックを誤って変更することもありません(すべてが発生する可能性があります)。

于 2012-05-20T16:28:18.483 に答える
1

一方、モデルレイヤーは、HTMLを返すためではなく、永続レイヤーからデータを保存/取得するために使用されます

実際、モデル層はビジネスロジック用です。


これは明らかにプレゼンテーションロジックに関連するコードであるため、ビューに含める必要があります。このような奇妙なジェネレータスクリプトの代わりに、ビューが処理するテンプレートを作成する方がよいと思います。

また、あなたのAPIはひどいです。SOLIDの原則について聞いたことがありませんか。

次のようなものを使用する方がはるかに優れている場合(ただし、それでも誤った方向に進んでいる、IMHO):

$foo = new HTML\Form();

$name = new HTML\Input('name');
$name->setValue('default value');
$name->setRules(array('required'));
$foo->addField( $name );

$email = new HTML\Input('email');
$email->setRules(array('required', 'email'));
$foo->addField( $email )

// other fields added

$template = new Template('/path/to/template.something');
$template->bind('form', $foo);
$output = $template->render();
于 2012-05-20T19:59:03.187 に答える