由验证引起的Laravel路由中的重定向循环?

时间:2016-02-21 14:32:22

标签: php validation laravel laravel-5 routing

我正在尝试使用单个匹配的控制器来显示和验证表单。我不确定这是否真的可行,因为我没有成功。

由于某种原因,它甚至不会显示初始视图 - 它只是进入302重定向循环然后超时。

有人能说明为什么会这样做,以及我如何解决它?我不想创建更多的路由和方法,因此match而不是单独的getpost,有两个独立的控制器方法。

我的路线

Route::match(['get', 'post'], '/tracking', [
    'as' => 'tracking',
    'uses' => 'Tracking@index'
]);

我的控制器

use App\Http\Requests\TrackingRequest;

class Tracking extends Controller {
    public function index(TrackingRequest $request) {
        return view('tracking.index');
    }
}

我的确认

class TrackingRequest extends Request
{
    public function authorize() {
        return true;
    }
    public function messages()
    {
        return [
            'reference.required' => 'Please enter a reference number.',
            'reference.numeric' => 'Please enter a valid reference number.',
            'reference.digits' => 'Please enter a valid reference number.',
            'reference.exists' => 'We don\'t have that reference number on our records.',
        ];
    }    
    public function rules() {
        return [
            'reference' => 'required|numeric|digits:10'
        ];
    }
}

我的观点

<h3>Welcome, {{ $job->name }} ({{ $job->reference }})</h3>
<table border="1" style="width:100%">
    @foreach ($updates as $update)
    <tr><td>
        <h3>{{ $update->title }}</h3>
        <p>{{ $update->content }}</p>
        <p><small><em>{{ $update->created_at }}</em></small></p>
    </td></tr>
    @endforeach
</table>

1 个答案:

答案 0 :(得分:0)

不要重新发明轮子。您应该使用RESTful控制器,其具有create方法来生成表单,并使用store方法来持久保存数据。此外,它还包含editupdatedelete方法,您可以将其用于编辑目的。

https://laravel.com/docs/5.1/controllers#restful-resource-controllers

对于表格,您应该使用Laravel Collective:

https://laravelcollective.com/docs/5.1/html

然后你将只有一条简单的路线 - Route::resource,你将节省很多时间和精力。此外,在这种情况下,你不会遇到无法解决的错误。