我正在 Laravel 5.4 中测试 API。我现在正在通过 API 存储记录。我在如何使用 Request::input() 或 Input::get() 验证 POST 数据方面遇到了一些问题。
类(class) Controller .php
<?php
namespace App\Http\Controllers;
use App\Http\Requests;
use App\Lesson;
use App\Acme\Transformers\LessonTransformer;
//use Illuminate\Http\Request;
use Illuminate\Support\Facades\Input;
use App\Http\Controllers\Controller;
class LessonsController extends ApiController
{
/**
* @var Acme\Transformers\LessonTransformer
*/
protected $lessonTransformer;
function __construct(LessonTransformer $lessonTransformer)
{
$this->lessonTransformer = $lessonTransformer;
// $this->middleware('sentry.auth')->only('post'); // basic level of protection for creating a lession
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
* If we are using basic authentication, we should be using SSL
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store()
{
if( ! Input::get('title') || ! Input::get('body')){
return $this->setStatusCode(422)->respondWithError('Parameters failed validation for a lesson.');
}
Lesson::create($request->all());
return $this->respondCreated('Lesson successfully created.');
}
/**
* Display the specified resource.
*
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$lesson = Lesson::find($id);
if( ! $lesson) {
return $this->respondNotFound('Lesson does not exist');
}
return $this->respond([
'data' => $this->lessonTransformer->transform($lesson)
]);
}
}
当我使用 POST 请求通过 POSTMAN 测试上面的代码时。我收到提示“{"error":"Parameters failed validation for a lesson.","status_code":422}" . 我在尝试添加数据或未添加数据时收到错误消息。
您知道如何更正我的 store() 代码吗?感谢您的帮助。
最佳答案
要在 Laravel 中验证表单数据,只需使用“Laravel Form Requests”。这允许您使用 Laravel 的一些预定义验证规则来验证请求中的表单数据,如果需要,您还可以创建自定义 Laravel 验证逻辑。
根据 Laravel 文档:
Form requests are custom request classes that contain validation logic.
它将简化您的验证逻辑,使您的代码整洁并让您处理复杂的验证。
关于javascript - 如何在 Laravel 5.4 中验证 POST 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43384300/