これがシナリオです。Web サイトの管理セクション内に、レコードの削除などのアクションが実行されたときに成功/情報/エラー メッセージを表示する必要がある CRUD テーブルがかなりあります。誰もがこれに精通していると確信しています。
これには通常、メッセージがラップされている<div class="alert alert-success">User updated</div>
か、それに類似したものが含まれます。
私が作成している現在の Laravel アプリケーションには、構成ファイルがあります。
<?php
return array(
'info' => array(
'start' => '<div class="callout callout-info"><h3><i class="icon-info-sign-sign"></i> Information</h3>',
'opening' => '<i class="icon-caret-right"></i> ',
'closing' => '<br>',
'end' => '</div>',
),
'success' => array(
'start' => '<div class="callout callout-success"><h3><i class="icon-ok-sign"></i> Success</h3>',
'opening' => '<i class="icon-caret-right"></i> ',
'closing' => '<br>',
'end' => '</div>',
),
'warning' => array(
'start' => '<div class="callout callout-warning"><h3><i class="icon-warning-sign"></i> Warning</h3>',
'opening' => '<i class="icon-caret-right"></i> ',
'closing' => '<br>',
'end' => '</div>',
),
'error' => array(
'start' => '<div class="callout callout-danger"><h3><i class="icon-remove-sign"></i> Warning</h3>',
'opening' => '<i class="icon-caret-right"></i> ',
'closing' => '<br>',
'end' => '</div>',
)
);
フォーマッタ クラスがMessageBag
(無効な電子メールなどの検証エラーなどの配列を格納する) オブジェクトを読み取り可能な HTML にレンダリングするために使用するもの。これは、HTML を Formatter クラス内に正確に保存するわけではありませんが、その中でレンダリングします。
フォーマッタ クラスは、次のように設定オプションを使用して MessageBag オブジェクトを単純にレンダリングします。
$formatter = new Formatter('success', $messageBag);
$html = $formatter->render();
次に、コントローラーからビューに渡されて表示されます。
return View::make('admin.template')->with('message', $html);
このメソッドを使用すると、HTML を更新し、1 つのクラス内から管理セクション全体で HTML をレンダリングする方法を更新できます。したがって、DRY
原則に沿って進みます。foreach
テンプレート全体のすべてのループを減らします。
それで、これは疑問を投げかけます...
ビジネス層とプレゼンテーション層を混同するよりも、ビュー テンプレート内で同じことを繰り返したほうがよいでしょうか? それともその逆?
私の個人的な意見 (現在) は、クラスと組み合わせて構成ファイルを使用することが良い解決策であるということです。また、クラス内に HTML を保存することは悪い習慣だと思います。したがって、構成ファイルです。