当被要求“缺少[Route:...”所需参数时要通过什么

问题描述 投票:0回答:3

我试图将:: 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');
    }
  }
laravel
3个回答
0
投票

你有没试过这个?

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

0
投票

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

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

但是你可以在你的路线文件中有这样的东西:

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

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


0
投票

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

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

$actors = Model::where('type','actors')->get();
© www.soinside.com 2019 - 2024. All rights reserved.