当被要求"缺少[Route:..."

时间:2018-02-28 10:43:19

标签: laravel

我正在尝试将:: post函数应用于具有where过滤器的路由。它没有where过滤器。缺少什么?

这有效:

Route::post('/actors/Chelsea_Handler', [
    'uses' => 'StarsController@infoupdate',
    'as' => 'infoupdate',
]);

这不起作用,但为什么?

Route::post('/{type}/Chelsea_Handler', [
    'uses' => 'StarsController@infoupdate',
    'as' => 'infoupdate',
])->where(['type' => 'actors']);

然后控制器中的函数更新一些数据库表。

public function infoupdate(Request $request, $type){

    if(Auth::guest()){
        return redirect('login');
    }
    elseif(Auth::user()->id == 1){

        DB::table('stars')->where('id', $request->id)->update(['info' => 'test']);

        return back();

    }else{
        return redirect('login');
    }
  }

3 个答案:

答案 0 :(得分:0)

你有没试过这个?

Route::post('/{type}/Chelsea_Handler', [
    'uses' => 'StarsController@infoupdate',
    'as' => 'infoupdate',
])->where('type', 'actors');

答案 1 :(得分:0)

你可能有另一条类似的路线。 应用正试图找到/{type}路线。

Route::post('/{type}/Chelsea_Handler', [
    'uses' => 'StarsController@infoupdate',
    'as' => 'infoupdate',
])->where(['type' => 'actors']);

但是你可以在你的路线文件中找到类似的东西:

Route::post('/{anythingElse}/something', ['uses' => 'SomeController@foo']);

我不建议第一个段有大括号,app会使用这个模式的第一个路径。

答案 2 :(得分:0)

路径中的位置应该是网址中的约束,而不是查询,例如where(['id' => '[0-9]+', 'name' => '[a-z]+']);

如果您需要查询,可以在控制器中使用它,如下所示

$actors = Model::where('type','actors')->get();