我在formRequest
应用程序中将this库用于Lumen
功能。我已经按照文档中的说明进行了安装和配置,但是库中似乎有些地方可能缺少或存在问题。以下是我的示例代码
验证类别:
<?php
namespace App\Http\Requests;
use Pearl\RequestValidate\RequestAbstract;
use Illuminate\Validation\Rule;
use Illuminate\Http\Response;
class CommentFormRequest extends RequestAbstract
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required'
'title' => 'required|max:255',
'body' => 'required',
];
}
/**
* Get custom messages for validator errors.
*
* @return array
*/
public function messages()
{
return [
//
];
}
}
控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\CommentFormRequest;
class CommentController extends Controller
{
public function add(CommentFormRequest $request)
{
$request->validated();
return response()->json(['Success']);
}
}
当我从邮递员提交无效数据时,会抛出有效错误,但是当我提交有效数据而没有丢失任何表单字段时,则会显示以下错误。
(1/1) BadMethodCallException
Method App\Http\Requests\CommentFormRequest::validated does not exist.
以上错误完全使我感到困惑,因为如果找不到validated
方法,那么对于无效数据如何抛出错误?我曾尝试调试该问题,但由于我是Lumen
的新手,所以我无法解决此问题。
答案 0 :(得分:0)
发生这种情况的原因是,validated()
在类CommentFormRequest
中不存在。
CommentFormRequest
扩展了RequestAbstract
,这又扩展了Illuminate\Http\Request
,但是这些类都不具有validated()
的实现。
我知道混淆是由于Laravel有一个$request->validated()
方法来输出经过验证的字段,但这是Laravel的Form Request特有的。从其API中可以看到,validated()
在那里定义。
关于Lumen的documentation,还有一个重要提示。
Lumen不支持表单请求。如果你愿意 要使用表单请求,您应该使用完整的Laravel框架。