【发布时间】:2016-04-09 05:28:37
【问题描述】:
升级到 Laravel 5.2 后,我遇到了 laravel 验证器的问题。当我想验证控制器中的数据时,以这段代码为例。
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class ContactController extends Controller
{
public function storeContactRequest(Request $request)
{
$this->validate($request, [
'_token' => 'required',
'firstname' => 'required|string'
'lastname' => 'required|string'
'age' => 'required|integer',
'message' => 'required|string'
]);
// Here to store the message.
}
}
但不知何故,当我输入无效数据时,它不会将我重定向回上一页并将一些消息闪现到会话,但它会触发异常并返回 500 错误页面。
这是我得到的例外。 我在文档中读到 ValidationException 是新的而不是 HttpResponseException 但我不知道它是否与此有关。
[2016-01-05 11:49:49] production.ERROR: exception 'Illuminate\Foundation\Validation\ValidationException' with message 'The given data failed to pass validation.' in /home/vagrant/Code/twentyre-webshop/vendor/laravel/framework/src/Illuminate/Foundation/Validation/ValidatesRequests.php:70
当我使用单独的请求类时,它只会重定向回错误消息。在我看来,只有控制器中使用的 validate 方法会受到这种行为的影响。
【问题讨论】:
-
这是设计使然。请求类执行重定向,如果您使用 ValidatesRequests trait 和 validate() 方法手动验证,则需要捕获异常并自己处理。
-
但是当我在控制器中这样使用它时如何捕获异常?
-
将其包装在 try/catch 子句中
-
谢谢我修好了我不知道它没有自动重定向是故意的。
-
@DB93 你是怎么解决的?你在哪里重定向?
标签: php validation laravel laravel-5 php-5.6