Laravel / Lumen formRequest在提交所有有效值时抛出错误

时间:2019-01-30 11:39:01

标签: php laravel lumen

我在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的新手,所以我无法解决此问题。

1 个答案:

答案 0 :(得分:0)

发生这种情况的原因是,validated()在类CommentFormRequest中不存在。

CommentFormRequest扩展了RequestAbstract,这又扩展了Illuminate\Http\Request,但是这些类都不具有validated()的实现。

我知道混淆是由于Laravel有一个$request->validated()方法来输出经过验证的字段,但这是Laravel的Form Request特有的。从其API中可以看到,validated()在那里定义。

关于Lumen的documentation,还有一个重要提示。

  

Lumen不支持表单请求。如果你愿意   要使用表单请求,您应该使用完整的Laravel框架。