Коллекция ресурсов Laravel, как правильно форматировать данные для блейдаPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Коллекция ресурсов Laravel, как правильно форматировать данные для блейда

Сообщение Anonymous »

У меня есть модель, скажем, модель задачи. У него есть заголовок, описание и status_id.
Я хочу создать модель ресурса для форматирования статуса, поэтому интерфейс (просто простой клинок) может его использовать.
Итак, я создал коллекцию ресурсов, например:

Код: Выделить всё

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)]);
}
Итак, я могу получить доступ к $task в своем блейде, но проблема в том, что статус и идентификатор внутри статуса доступны. Как будто их не существует. Даже если я сделаю что-то вроде этого:

Код: Выделить всё

            'title' => $this->title,
'random' => $this->title,
затем $task->title возвращает заголовок, но $task->random ничего не покажет.
Я не хочу вызывать ->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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»