首页 > 解决方案 > 在 usersController 中调用 Laravel 资源时给了我不同的路径和错误

问题描述

我在 laravel 一周大,正在开发我的第一个 api。在我决定介绍之前,一切都很顺利resources。当我调用该UserResource方法时,我得到一个我无法理解的错误。我已经google了,但还没有找到答案。

这是我在邮递员上运行时遇到的错误 Symfony\Component\Debug\Exception\FatalThrowableError: Call to undefined function App\Http\Controllers\Api\UserResource()

资源文件在app/Http/Resources/

签出返回的路径

但我添加的是

Laravel 代码:

app/Http/Controllers/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/Resources/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,
        ];
    }
}

标签: laravelresources

解决方案


您忘记了new尝试实例化 UserResource 类的操作员。如果没有 new 运算符,PHP 将寻找UserResource在当前命名空间中调用的函数,因此您会收到该错误。


推荐阅读