Я хочу создать модель ресурса для форматирования статуса, поэтому интерфейс (просто простой клинок) может его использовать.
Итак, я создал коллекцию ресурсов, например:
Код: Выделить всё
class TaskResource extends JsonResource
{
public function toArray(Request $request): object
{
return (object) [
'id' => $this->id,
'title' => $this->title,
'description' => $this->description,
'status' => (object) [
'id' => $this->status_id,
'display' => TaskStatus::tryFrom($this->status_id)?->text(),
],
];
}
}
Код: Выделить всё
public function show(Task $task)
{
return view('tasks.show', ['task' => new TaskResource($task)]);
}
Код: Выделить всё
'title' => $this->title,
'random' => $this->title,
Я не хочу вызывать ->toArray(request()) везде, каждый раз на новом ресурсе, также у меня нет причин передавать запрос каждый раз (хотя я могу' не обновляйте его, чтобы он не требовался из-за встроенного интерфейса).
Я также не хочу использовать магию laravel, например «getStatusDisplayAttribute» и тому подобное, потому что магия laravel это, безусловно, полезно, но его трудно поддерживать в больших масштабах.
Обходной путь, который я нашел в качестве возможного решения, — этоsolve, которое работает как с TaskResource:: Collection и (new TaskResource()).
Код: Выделить всё
return view('tasks.show', ['task' => (new TaskResource($task))->resolve()]);
Я хочу быть уверен, что не принимаю много неверных решений во время обучения.< /п>
Подробнее здесь: https://stackoverflow.com/questions/785 ... -for-blade