2016-04-22 81 views
1

我有一个使用资源路由的Laravel 5.2应用程序。我有一个如下:Laravel将资源路由添加到路由

Route::resource('submissions', 'SubmissionsController'); 

我想一个新的邮政路由添加到它为我的索引页排序形式。

Route::post('submissions', [ 
    'as' => 'submissions.index', 
    'uses' => '[email protected]' 
]); 

我已将邮政路线放在我的资源路径上方,位于我的routes.php中。

但是,在我的新Post路径上正在执行一个名为SubmissionRequest的验证请求,该验证请求用于提交资源中的表单。这是我的SubmissionsController方法。

public function index(SortRequest $req) 
{ 
    $submission = new Submission; 
    $submission = $submission->join('mcd_forms', 'mcd_forms.submission_id', '=', 'submissions.id')->where('user_id', Auth::user()->id); 

    $data['sort_types'] = [ 
     'name' => 'Name', 
     'form_type' => 'Type' 
    ]; 

    $data['direction'] = (!empty($req['asc']) ? 'asc' : 'desc'); 
    $data['dataVal'] = (!empty($req['sort_type']) ? $req['sort_type'] : 'submissions.id'); 

    $submission->whereNull('submissions.deleted_at')->orderBy(
     $data['dataVal'], 
     $data['direction'] 
    ); 

    $data['submissions'] = $submission->get(); 

    return view('submissions.index')->with($data); 
} 

所以,从我的索引页提交整理表时,它正在运行,即使我特别致电SortRequest验证SubmissionRequest验证。我究竟做错了什么?

+0

您是矛盾的路线的名称,路线':: resource'的航线名称“submissions.index”与占用资源已经设置为控制器的索引。您应该在自定义POST路线中设置不同的名称。如果您对分配给哪个资源的名称有任何疑问,请记住您始终可以执行'php artisan route:list' –

+0

我将路由名称更改为“submissions.sort”,并且仍然遇到同一问题。我知道资源路由是为索引添加一个get方法,但我需要添加一个额外的post方法。 我在文档“Route :: match()”中看到,但会使用这覆盖资源路由? – AJStacy

回答

2

我解决了它。

因为我Post路线与我Get路线相互冲突的submissions.index我下面添加Resource路线如下:

Route::match(['get', 'post'], 'submissions', [ 
    'as' => 'submissions.index', 
    'uses' => '[email protected]' 
]); 

这样的路线,接受通过重载自动生成两个GetPost请求一。

的文档是在这里:https://laravel.com/docs/master/routing#basic-routing

+1

这不需要*下面的资源路线覆盖,而不是上面? – Samsquanch

+0

是的,我迷惑了自己并编辑了回复。我刚回到原来的位置。 – AJStacy