Я смотрел видео Laracasts о докладчиках и хочу использовать их в своем проекте.
У меня есть страница, где я отображаю журнал активности пользователя. В цикле foreach я отображаю модель «активность». Активность использует полиморфные отношения, поэтому в зависимости от типа активности мне нужно отображать различные виды контента. Например, пользователь может отправлять электронную почту, добавлять задачи, создавать что-либо, удалять что-либо и т. Д.
В зависимости от действия я должен отображать разные значки, сам по себе разный контент (некоторые действия могут содержать ссылки, другие могут содержать что-то другое).
Когда я смотрел и читал примеры выступающих, я понимаю, что все они довольно просты и используют такие вещи, как 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>';
}
}
Задача ещё не решена.
Других решений пока нет …