這裏是場景;在網站的管理部分中,我有很多CRUD表,當執行某個操作(如刪除記錄)時,需要顯示成功/信息/錯誤消息。我相信每個人都熟悉這一點。在類中呈現HTML?
這通常涉及包裝在<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以及如何在一個類中從整個管理部分呈現HTML。因此遵循DRY
原則。它減少了我的模板中的所有foreach
循環。
因此,這引出了一個問題...
是更好地視圖模板內重複自己,而不是混淆了業務和表示層?或相反亦然?
我個人認爲(目前)是與配合使用配置文件是一個很好的解決方案。我也認爲將HTML存儲在類中是不好的習慣,因此也是配置文件。