Php 重定向回自定义请求类中的错误和输入:Laravel 5

Php 重定向回自定义请求类中的错误和输入:Laravel 5,php,laravel-5,laravel-5.1,Php,Laravel 5,Laravel 5.1,我有一些原始代码,如下所示,在MySQL数据库中执行表单验证和保存过程 原始代码 public function store(Request $request) { $v = \Validator::make($request->all(), [ 'Category' => 'required|unique:tblcategory|max:25|min:5' ]); if ($v->fails()) { return \

我有一些原始代码,如下所示,在MySQL数据库中执行表单验证和保存过程

原始代码

public function store(Request $request)
{
    $v = \Validator::make($request->all(), [
        'Category' => 'required|unique:tblcategory|max:25|min:5'
    ]);

    if ($v->fails()) {
        return \Redirect::back()
                    ->withErrors($v)
                    ->withInput();
    }
    ...
    //code to save the record in database is here....
    ...
}
并修改了上述函数,现在看起来如下所示

public function store(CategoryRequest $request)
{

    ...
    //code to save the record in database is here....
    ...
}
下面是请求类

class CategoryRequest extends Request
{
    protected $redirect = \Redirect::back()->withErrors($v)->withInput();
    public function authorize()
    {
        return false;
    }
    public function rules()
    {
        return [
            'Category' => 'required|unique:tblcategory|max:25|min:5'
        ];
    }
}
错误详细信息

class CategoryRequest extends Request
{
    protected $redirect = \Redirect::back()->withErrors($v)->withInput();
    public function authorize()
    {
        return false;
    }
    public function rules()
    {
        return [
            'Category' => 'required|unique:tblcategory|max:25|min:5'
        ];
    }
}
语法错误,意外的“(”,应为“,”或“;”

此错误出现在下面的行中

protected $redirect = \Redirect::back()->withErrors($v)->withInput();

我遗漏了什么吗?

有多种方法可以告诉Laravel在验证失败时该怎么做。一种方法是覆盖response()方法,并按如下方式设置您自己的响应

class CategoryRequest extends Request
{
    public function response(array $errors){
        return \Redirect::back()->withErrors($errors)->withInput();
    }

    public function authorize()
    {
        return false;
    }

    public function rules()
    {
        return [
            'Category' => 'required|unique:tblcategory|max:25|min:5'
        ];
    }
}

Laravel的默认响应是将您重定向到带有错误和输入值的上一页,因此您可能不需要上述代码。

在Laravel 8中,上述内容已更改,因此
响应
函数对我不起作用,
getRedirectUrl
另一方面起作用。下面是一个代码片段

protected function getRedirectUrl()
{
    $url = $this->redirector->getUrlGenerator();
    return $url->previous();
}

定义属性时不能执行代码。属性必须是静态值,如字符串/数组等。我应该在哪里编写代码以重定向回错误和输入?我相信默认情况下,Laravel会将您重定向回上一页并返回错误。您可以使用响应方法定义错误响应。我有通过一个如何定义自定义响应的示例给出了答案。响应/验证类功能非常强大,值得一试。如上所述,属性不能用动态初始值定义,如果需要动态初始化,则应在构造函数中完成。规则函数只是PHP,因此您可以ake规则执行您希望它们执行的任何操作,只要它返回一个规则数组。