在Laravel 4中进行表单验证后自动重定向

时间:2013-11-29 19:26:19

标签: php laravel laravel-4

我有以下代码:

        if(Request::ajax())
        {                    
            $response_values = array(
                'validation_failed' => 1,
                'errors' => $validator->errors->toArray()
            );
            return Response::json($response_values);
        }
        else
        {
            return Redirect::route("resource.create")
                ->withInput()
                ->withErrors($validator->errors);
        }

我在代码中有很多这方面的内容,并希望找到一种自动化方法。

我尝试在BaseController中创建一个方法,但它没有正确重定向,我也尝试了一个后过滤器,但我无法在过滤后将参数传递给它,因为我需要传递错误和路由。

我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:3)

这不适合你吗?

class BaseController extends \Controller {

    public function processAndRedirectError($validator)
    {
        if(Request::ajax())
        {                    
            $response_values = array(
                'validation_failed' => 1,
                'errors' => $validator->errors->toArray()
            );
            return Response::json($response_values);
        }
        else
        {
            return Redirect::route("resource.create")
                ->withInput()
                ->withErrors($validator->errors);
        }
    }

}

class MyController extends BaseController {

    public function store()
    {
        $validator = Validator::make(...);

        return $this->processAndRedirectError($validator);
    }

}