这是场景;在网站的管理部分中,我有很多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类中,但它确实在其中进行渲染。
formatter类仅使用配置选项来呈现MessageBag对象,因此:
$formatter = new Formatter('success', $messageBag);
$html = $formatter->render();
然后将其从控制器传递到视图并显示。
return View::make('admin.template')->with('message', $html);
此方法使我可以从一个类中更新HTML及其在整个admin部分中的呈现方式。因此顺应了DRY
原理。它减少了foreach
模板中的所有循环。
所以这引出了一个问题...
在视图模板中重复自己而不是将业务和演示层混合在一起会更好吗?或相反亦然?
我个人的看法(当前)是将配置文件与类一起使用是一个很好的解决方案。我也认为将HTML存储在类中是不好的做法,因此是配置文件。
这确实是一个判断电话。
大多数时候,我更喜欢将HTML排除在类和配置文件之外。相反,我将尽可能多的HTML放在模板中。不同视图共享的模板可以存储在共享位置,并由模板引擎在正确的上下文中进行解析。
顺便说一句,在编写小型应用程序和扩展时,我对此概念有很多例外。尽管我认为两者都很重要,但我认为我很重视务实的思考,而不是保持一致。
真正的问题是,分离所有不同的数据类型将花费多少时间,这样做的报酬是否足够大,足以证明您将花费多少时间和精力?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句