Php 在Laravel 5中使用演示者

Php 在Laravel 5中使用演示者,php,laravel,laravel-5,presenter,Php,Laravel,Laravel 5,Presenter,我看过Laracasts关于主持人的视频,我想在我的项目中使用他们 我有一个显示用户活动日志的页面。在foreach循环中,我显示“活动”模型。活动使用多态关系,因此根据活动类型,我需要显示不同类型的内容。例如,用户可以发送电子邮件、添加任务、创建内容、删除内容等 根据动作的不同,我应该显示不同的图标,不同的内容本身(有些活动可能包含链接,有些可能包含其他内容) 当我观看和阅读演示者的示例时,我意识到它们都非常简单,并使用诸如ucfirst或日期格式之类的东西。然而,我应该在我的演示者中加入很多

我看过Laracasts关于主持人的视频,我想在我的项目中使用他们

我有一个显示用户活动日志的页面。在foreach循环中,我显示“活动”模型。活动使用多态关系,因此根据活动类型,我需要显示不同类型的内容。例如,用户可以发送电子邮件、添加任务、创建内容、删除内容等

根据动作的不同,我应该显示不同的图标,不同的内容本身(有些活动可能包含链接,有些可能包含其他内容)

当我观看和阅读演示者的示例时,我意识到它们都非常简单,并使用诸如
ucfirst
或日期格式之类的东西。然而,我应该在我的演示者中加入很多HTML逻辑吗?例如,由于我对不同的操作有不同的图标,所以我放置了一个大开关,它返回带有相应图标类的
标记。然后,在显示动作描述时,我也会切换并返回一些html,比如链接,甚至可能是
标记

此外,在演示者中使用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>';
    }
}
公共功能图标()
{
开关($this->entity->type->name){
案例“call”:返回“”;
案例“访问”:返回“”;
案例“电子邮件”:返回“”;
案例“注意”:返回“”;
案例“create_checkin”:返回“”;
默认值:返回“”;
}
}

就我个人而言,我完全不会在演示者中使用HTML。我只会使用它们以更好的方式呈现数据,为视图做好准备。例如将日期转换为人类可读的格式等。不过,我可能会在演示者中返回类名或类似的内容。例如,我可能会返回一个我将在视图中使用的图标类。为了保持视图干净,我通常会将它们拆分为部分/子视图,以包含某些逻辑位,并在适当的情况下包含它们。对于不同类型的实体,我也会倾向于为每个实体创建一个部分。Jonathon,的确。。。我唯一的问题是:如果我包含大约100个视图(例如,如果我得到100个项目),可以吗?这似乎不是问题,但仍然需要确定它是否正常。