调用未定义的方法 App\Http\Controllers\UserController::successResponse()(500 内部服务器错误)

问题描述 投票:0回答:2

我对这个错误很困惑,因为这是我第一次在后端主题中,我们的讲师没有在他提供的视频中包含 CRUD 操作,所以我决定自己发现,然后我在 POST 上想到了这个错误操作

HTTP - 控制器 - 用户控制器 PHP


<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
Class UserController extends Controller {
  private $request;
public function __construct(Request $request){
  $this->request = $request;
}
public function getUsers(){ 
  $users = User::all();
  return response()->json($users, 200);
}

public function add(Request $request ){
  $rules = [
  'first_name' => 'required|max:20',
  'last_name' => 'required|max:20',
  // 'gender' => 'required|in:Male,Female',
  ];
  $this->validate($request,$rules);
  $user = User::create($request->all());
  return $this->successResponse($user,
 Response::HTTP_CREATED);
  }
} 

模型 - 用户 PHP

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
class User extends Model{
public $timestamps = false;
protected $table = 'students';
// column sa table
protected $fillable = [
'first_name', 'last_name'
];
}

路线 - 网页 PHP


<?php

/** @var \Laravel\Lumen\Routing\Router $router */

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It is a breeze. Simply tell Lumen the URIs it should respond to
| and give it the Closure to call when that URI is requested.
|
*/

$router->get('/', function () use ($router) {
    return $router->app->version();
});

$router->get('/users',['uses' => 'UserController@getUsers']);


$router->post('/postUsers', 'UserController@add'); // create new user record

这一切都很好我无法确定错误发生的位置或者我有什么遗漏

我只想在邮递员中运行 POST 以在列上添加数据,因为我认为 POST 正在更新数据库

所以这是我要添加的数据

{
    "first_name": "Lorem",
    "last_name": "Ipsum"
}
php laravel laravel-5 postman lumen
2个回答
0
投票

在父控制器的 userController 中你有这个方法吗?

successResponse

如果不注册这个方法你会得到异常


0
投票

我假设您正在尝试使用特征来格式化响应。如我错了请纠正我。如果是这样,那么您调用了 trait 函数而没有首先导入该类。然后通过使用关键字导入类。

所以一般流程如下,如果你像我假设的那样使用特征,你可以进行调整。

use App\Traits\TraitName;

class YourController extends Controller {
   use TraitName;

   public function foo(){
     $this->TritName($parms);
   }
}

而且你不需要手动在构造函数中输入提示,因此 laravel 服务容器会自动解析整个应用程序的请求。

© www.soinside.com 2019 - 2024. All rights reserved.