我已经观看了Laracasts关于演示者的视频,我想在我的项目中使用它们。
我有一个显示用户活动日志的页面。在foreach循环中,我显示"活动"模型。 Activity使用多态关系,因此根据活动类型我需要显示不同类型的内容。例如,用户可以发送电子邮件,添加任务,创建内容,删除某些内容等。
根据操作,我应该显示不同的图标,不同的内容本身(某些活动可能包含链接,有些可能包含其他内容)。
当我观看并阅读演示者的示例时,我意识到所有这些都非常简单并且使用诸如ucfirst
或日期格式之类的东西。但是,我应该在演示者中添加大量HTML逻辑吗?例如,由于我为不同的操作设置了不同的图标,因此我将大开关返回<i>
标签,并带有相应的图标类。然后,当显示我切换的动作的描述并返回一些html,如链接,甚至可能<audio>
标记。
此外,在演示者中使用HTML也不方便,但同时我希望保持视图干净,这样我就可以输出$activity->presenter()->description
而不是很多@if
个运算符。
演示者方法的一个例子:
public function icon()
{
switch ($this->entity->type->name) {
case 'call': return '<i class="fa fa-phone activity-call-icon"></i>';
case 'visit': return '<i class="fa fa-car activity-visit-icon"></i>';
case 'email': return '<i class="fa fa-send activity-email-icon"></i>';
case 'note': return '<i class="fa fa-pencil activity-task-icon"></i>';
case 'create_checkin': return '<i class="flaticon-pin56"></i>';
default: return '<i class="fa fa-dot-circle-o"></i>';
}
}