在Laravel 5中使用演示者

时间:2015-04-13 04:02:05

标签: php laravel laravel-5 presenter

我已经观看了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>';
    }
}

0 个答案:

没有答案