2016-02-21 72 views
2

我正在尝试使用单个匹配的控制器来显示和验证表单。我不确定这是否真的可行,因为我没有成功。通过验证导致Laravel路由中的重定向循环?

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

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

我的路线

Route::match(['get', 'post'], '/tracking', [ 
    'as' => 'tracking', 
    'uses' => '[email protected]' 
]); 

我的控制器

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

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

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

对于形状,你应该使用Laravel集体:

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

然后,你将有只有一个简单的路线 - Route::resource,你会节省大量的时间和神经。而且,在这种情况下,你不会发现不可检测的错误。