#json #laravel #postman
#json #laravel #почтальон
Вопрос:
Я пытаюсь начать с этого laravel API для CRUD. Пока что show и delete работают (я использую postman amp; json script), но почему-то, когда я пытаюсь выполнить post-запрос, я получаю эту ошибку:
ErrorException: Undefined variable: requests in file C:xampphtdocspsdsystemsappHttpControllersCustomerController.php on line 35
Stack trace:
1. ErrorException-amp;>() C:xampphtdocspsdsystemsappHttpControllersCustomerController.php:35
2. IlluminateFoundationBootstrapHandleExceptions-amp;>handleError() C:xampphtdocspsdsystemsappHttpControllersCustomerController.php:35
3. AppHttpControllersCustomerController-amp;>store() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingController.php:54
4. call_user_func_array() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingController.php:54
5. IlluminateRoutingController-amp;>callAction() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingControllerDispatcher.php:45
6. IlluminateRoutingControllerDispatcher-amp;>dispatch() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRoute.php:219
7. IlluminateRoutingRoute-amp;>runController() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRoute.php:176
8. IlluminateRoutingRoute-amp;>run() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRouter.php:680
9. IlluminateRoutingRouter-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:30
10. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingMiddlewareSubstituteBindings.php:41
11. IlluminateRoutingMiddlewareSubstituteBindings-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
12. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
13. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingMiddlewareThrottleRequests.php:58
14. IlluminateRoutingMiddlewareThrottleRequests-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
15. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
16. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:104
17. IlluminatePipelinePipeline-amp;>then() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRouter.php:682
18. IlluminateRoutingRouter-amp;>runRouteWithinStack() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRouter.php:657
19. IlluminateRoutingRouter-amp;>runRoute() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRouter.php:623
20. IlluminateRoutingRouter-amp;>dispatchToRoute() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingRouter.php:612
21. IlluminateRoutingRouter-amp;>dispatch() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpKernel.php:176
22. IlluminateFoundationHttpKernel-amp;>IlluminateFoundationHttp{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:30
23. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorfideloperproxysrcTrustProxies.php:57
24. FideloperProxyTrustProxies-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
25. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
26. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpMiddlewareTransformsRequest.php:21
27. IlluminateFoundationHttpMiddlewareTransformsRequest-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
28. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
29. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpMiddlewareTransformsRequest.php:21
30. IlluminateFoundationHttpMiddlewareTransformsRequest-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
31. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
32. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpMiddlewareValidatePostSize.php:27
33. IlluminateFoundationHttpMiddlewareValidatePostSize-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
34. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
35. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpMiddlewareCheckForMaintenanceMode.php:62
36. IlluminateFoundationHttpMiddlewareCheckForMaintenanceMode-amp;>handle() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:163
37. IlluminatePipelinePipeline-amp;>IlluminatePipeline{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateRoutingPipeline.php:53
38. IlluminateRoutingPipeline-amp;>IlluminateRouting{closure}() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminatePipelinePipeline.php:104
39. IlluminatePipelinePipeline-amp;>then() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpKernel.php:151
40. IlluminateFoundationHttpKernel-amp;>sendRequestThroughRouter() C:xampphtdocspsdsystemsvendorlaravelframeworksrcIlluminateFoundationHttpKernel.php:116
41. IlluminateFoundationHttpKernel-amp;>handle() C:xampphtdocspsdsystemspublicindex.php:55
Я уже изменил свой первичный ключ внутри своей модели, поскольку я создал свой первичный ключ, который обычно является просто «id» на «CustomerID»
API:
<?php
use IlluminateHttpRequest;
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
//List Customers Details
Route::get('customers','CustomerController@index');
//List Single Customer Detail
Route::get('customer/{CustomerID}','CustomerController@show');
//Create new Customer Details
Route::post('customer','CustomerController@store');
//Update Customer Details
Route::put('customer','CustomerController@store');
//Delete Customer Details
Route::delete('customer/{CustomerID}','CustomerController@destroy');
Контроллер:
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppHttpRequests;
use AppCustomer;
use AppHttpResourcesCustomer as CustomerResource;
class CustomerController extends Controller
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
// Get customer details
$customers = Customer::paginate(10);
//Return collection of Customers as a resource
return CustomerResource::collection($customers);
}
/**
* Store a newly created resource in storage.
*
* @param IlluminateHttpRequest $request
* @return IlluminateHttpResponse
*/
public function store(Request $request)
{
$customer = $requests->isMethod('put') ? Customer::findOrFail($request->CustomerID) : new Customer;
$customer->CustomerID = $request->input('CustomerID');
$customer->Customer = $request->input('Customer');
$customer->Address = $request->input('Address');
if($customer->save()) {
return new CustomerResource($customer);
}
}
/**
* Display the specified resource.
*
* @param int $CustomerID
* @return IlluminateHttpResponse
*/
public function show($CustomerID)
{
//Get single customer detail
$customer = Customer::findOrFail($CustomerID);
//Return single customer as a resource
return new CustomerResource($customer);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return IlluminateHttpResponse
*/
public function destroy($CustomerID)
{
//Get single customer detail
$customer = Customer::findOrFail($CustomerID);
if($customer->delete()) {
return new CustomerResource($customer);
}
}
}
Модель:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Customer extends Model
{
protected $primaryKey = 'CustomerID';
}
Я ожидаю, что post-запрос действительно будет функционировать
Ответ №1:
Здесь опечатка
public function store(Request $request)
{
$customer = $requests->isMethod('put') ? Customer::findOrFail($request->CustomerID) : new Customer;
дополнительный s в переменной запроса должен быть
public function store(Request $request)
{
$customer = $request->isMethod('put') ? Customer::findOrFail($request->CustomerID) : new Customer;
Ответ №2:
в вашем коде опечатка:
$customer = $requests->isMethod('put') ? Customer::findOrFail($request->CustomerID) : new Customer; // remove the `s`, it's $request
Это должно быть:
$customer = $request->isMethod('put') ? Customer::findOrFail($request->CustomerID) : new Customer;