【发布时间】:2013-09-27 12:10:47
【问题描述】:
这是场景;在网站的管理部分,我有很多 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 以及它如何在一个类中在整个管理部分呈现。因此遵循DRY 原则。它减少了我模板中的所有 foreach 循环。
所以这就引出了问题......
在视图模板中重复自己而不是混淆业务层和表示层是否更好?反之亦然?
我个人的观点(目前)是,将配置文件与类结合使用是一个很好的解决方案。我也确实认为在一个类中存储 HTML 是不好的做法,因此是配置文件。
【问题讨论】: