deadloop
@deadloop
Активно осваиваю PHP

Кастомизировать и оптимизировать ответ (Response)?

Вмем привет. У меня есть API CRUD контроллер, который после успешного выполнения возвращает результат.

Пример метода, удаления

public function destroy(Request $request)
{
    $idle = Idle::find($request->get('id'));
    if ($idle !== null) {
        [$status = "OK", $message = "Запись с таким id удалена"];
        $idle->delete();
    } else {
        [$status = "Error", $message = "Запись с таким id не обнаружена"];
    } 
    return response()->json([
        "status" => $status,
        "message" => $message,
        "data" => $idle,
    ]);
}


В каждом методе у меня возварщается один и тот же массив. Я хочу изменить код на вот такой вариант. Но я не могу пока сообразить с чего начать, подскажите каким способом это можно сделать.

public function destroy(Request $request, Response $response)
{
$idle = Idle::find($request->get('id'));
$response->data['idle'] = $idle;
if ($idle !== null) {
    $response->status = 'OK';
    $response->message = "Запись с таким id удалена";
    $idle->delete();
} else {
    $response->message = "Запись с таким id не обнаружена";
} 
return $response;
}


Я смотрел вариант с созданем Ресурса или Хранилище(Repositories). Но там не то что мне надо.
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
deadloop
@deadloop Автор вопроса
Активно осваиваю PHP
Спасибо всем за ответы, чуть покапался и реализовал через Хранилище(Repositories).

public function destroy(Request $request)
    {
        $idle = Idle::find($request->get('id'));
        if ($idle !== null) {
            $idle->delete();
            return $this->responseRepository->Response($idle, true, 'Запись с таким id удалена');
        }
        return $this->responseRepository->Response('Запись с таким id не обнаружена');
    }


ResponseRepository.php

public static function Response($message = "Ошибка", $data = null, $status = false)
    {
        return response()->json([
            'status' => $status,
            'message' => $message,
            'data' => $data,
        ]);
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@lavren
1) Название Response c большой буквы?
2) Response статическое ?! Оо
3) Зачем оно нужно в репозитории?
4) Изучить Dependency Injection в Laravel
5) Изучить REST и роутинг
6) Изучить валидацию в Laravel

Почитай документацию с начала и до конца (она не большая), так ты будешь понимать что там есть и куда можно смотреть.
После пунктов выше код будет выглядеть примерно так

public function destroy(Request $request, Idle $idle)
{
    // Оставил ее тут но ее надо бы вынести отдельно
    $request->validate([
        'some' => 'required',
    ]);

    return response()->json([
        'success' => $idle->delete(),
    ]);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы