尝试对资源进行POST调用时遇到此问题。我为这个错误努力了几个小时。有人能帮帮我吗?
api.php
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::post('login', 'UserController@login')->name('login');
Route::post('register', 'UserController@register')->name('register');
Route::group(['middleware' => 'auth:api'], function(){
Route::post('details', 'UserController@details');
Route::apiResource('schedule', 'ScheduleController');
});
ScheduleController
<?php
namespace App\Http\Controllers;
use App\Schedules;
use App\Http\Resources\Schedule;
use Illuminate\Http\Request;
class ScheduleController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(){
return Schedule::collection(Schedules::all());
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(){
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Schedule $request)
{
$schedule = new Schedules();
if (isset($request['title'])) {
$schedule->title = $request['title'];
};
if (isset($request['start'])) {
$schedule->start = $request['start'];
};
if (isset($request['end'])) {
$schedule->end = $request['end'];
};
if ($schedule->save()) {
return response()->json(new Schedule($schedule), 200);
} else {
return response()->json('Error can\'t save schedule', 500);
};
}
/**
* Display the specified resource.
*
* @param \App\Schedule $schedule
* @return \Illuminate\Http\Response
*/
public function show(Schedule $id)
{
return response()->json(new Schedule(Schedules::find($id)), 200);
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Schedule $schedule
* @return \Illuminate\Http\Response
*/
public function edit(Schedule $schedule)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Schedule $schedule
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Schedule $schedule)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\Schedule $schedule
* @return \Illuminate\Http\Response
*/
public function destroy(Schedule $id)
{
if (Schedules::find($id)->delete()) {
return response()->json('Success on delete carpet', 200);
} else {
return response()->json('Error can\'t delete carpet', 500);
}
}
public function creazaProgramare(Schedule $request)
{
$schedule = new Schedules();
if (isset($request['title'])) {
$schedule->title = $request['title'];
};
if (isset($request['start'])) {
$schedule->start = $request['start'];
};
if (isset($request['end'])) {
$schedule->end = $request['end'];
};
if ($schedule->save()) {
return response()->json(new Schedule($schedule), 200);
} else {
return response()->json('Error can\'t save schedule', 500);
};
}
}
ScheduleResource
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class Schedule extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'title' => $this->title,
'start' => $this->start,
'end' => $this->end
];
}
}
时间表模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Schedules extends Model
{
//
}
我尝试在其他人上运行“ composer install”。看来问题出在JsonResource第55行(构造函数),但我不知道如何解决。我会很感激你的帮助
我发现您正在将api资源类传递给response()-> json(...)。我还发现,在控制器存储方法中,您传递了Schedule(它是一种api资源而不是请求对象)。
if ($schedule->save()) {
//check below since its a resource, that should be enough
return new Schedule($schedule);
} else {
return response()->json('Error can\'t save schedule', 500);
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句