【发布时间】:2016-08-16 08:10:03
【问题描述】:
我有一个使用资源路由的 Laravel 5.2 应用程序。我有一个如下:
Route::resource('submissions', 'SubmissionsController');
我想为我的索引页面上的排序表单添加一个新的 Post 路由。
Route::post('submissions', [
'as' => 'submissions.index',
'uses' => 'SubmissionsController@index'
]);
我已将 Post 路由放置在我的 routes.php 中的 Resource 路由之上。
但是,一个名为 SubmissionRequest 的验证请求用于提交资源中的表单,正在我的新 Post 路由上执行。这是我的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);
}
因此,当从我的索引页面提交排序表单时,它正在运行 SubmissionRequest 验证,即使我专门调用了 SortRequest 验证。我做错了什么?
【问题讨论】:
-
您与路由名称冲突,
Route::resource已经将路由名称“submissions.index”设置为 GET 资源到控制器的索引。您应该在自定义 POST 路由中设置不同的名称。如果您对分配给哪个资源的名称有任何疑问,请记住您可以随时使用php artisan route:list -
我将路线名称更改为“submissions.sort”,但仍然遇到同样的问题。我了解资源路由正在为 index 添加一个 get 方法,但我需要添加一个额外的 post 方法。我在文档“Route::match()”中看到,但会使用它覆盖资源路由吗?
标签: php laravel laravel-5.2