Ресурсы Laravel при вызове в usersController дают мне другой путь и ошибку - PullRequest
0 голосов
/ 05 апреля 2019

Мне неделю назад в Laravel, и я работаю над своим первым API. Все работало хорошо, пока я не решил ввести resources. Когда я вызываю метод UserResource, я получаю ошибку, которую не могу понять. Я погуглил, но пока не нашел ответа.

Это ошибка, с которой я сталкиваюсь при работе с почтальоном. Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined function App\Http\Controllers\Api\UserResource()

Файл ресурсов находится в app/Http/Resources/

Оформить возвращенный путь

  • App\Http\Controllers\Api\UserResource

но я добавляю

  • App\Http\Resources\UserResource;

Код Laravel:

приложение / Http / Контроллеры / Api / usersController.php

use App\User;
use App\Http\Resources\UserResource;

class UsersController extends Controller
{
    public function login(Request $request)
    {
        $this->validate($request, [
             'email' => 'required',
            'password' => 'required',
        ]);

        $email = $request->email;
        $password = $request->password;

        $user = User::where('email', $email)->where('password', $password)->first();
        if($user) {
            $success['token'] =  $user->createToken('myapp')-> accessToken;
            $success['user'] = UserResource($user);
                return response()->json(['success' => $success], 200);
            }
        return response()->json(['error' => 'UnAuthorised'], 401);

    }
}

приложение / Http / Ресурсы / UserResource.php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
       return [
            'id' => $this->id,
            'first_name' => $this->first_name,
            'other_names' => $this->other_names,
            'email' => $this->email,
            'phone_number' => $this->phone_number,
            'created_at' => $this->created_at,
            'updated_at' => $this->updated_at,
        ];
    }
}

1 Ответ

1 голос
/ 05 апреля 2019

Вы забыли оператор new, пытаясь создать экземпляр класса UserResource.Без оператора new PHP будет искать функцию с именем UserResource в текущем пространстве имен, поэтому вы получите эту ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...