在我的ChallengesController中,我有以下路线:
public function show($id) {
$challenge = Challenge::find($id);
if (!$challenge) {
return back()->with('error', 'Challenge does not exist');
}
$projects = $challenge->projects;
return view('challenges.show')->with(['challenge' => $challenge, 'projects' => $projects]);
}
public function create() {
if (auth()->user()->role === 'user') {
return back()->with('error', 'You are unauthorized to do that');
}
return view('challenges.create');
}
在我的web.php路由中,我有以下路由:
Route::get('/challenges/{id}', 'ChallengesController@show');
Route::get('/challenges/create', 'ChallengesController@create');
每当我想转到/challenges/create
时,它都会认为我必须转到/challenges/{id}
,并认为{id}
是“创建”的。但是在我刚才指定的其他控制器中
Route::resource('projects', 'ProjectsController');
当我执行php artisan route:list
时,它具有相同的路由结构,但是它正在工作,而我的自定义/challenge
路由却无效。
是否有一种方法可以覆盖/challenges/create
,或者我做错了什么。我正在使用Laravel 5.7.20版本。
答案 0 :(得分:4)
或更简单的是,更改声明的顺序:
if(e.KeyCode==Keys.Enter){
if(textBox1.Text = "some string"){
//your code here...
}
}
答案 1 :(得分:2)
从Laravel documentation
您可以使用where约束路线参数的格式 路由实例上的方法。 where方法接受名称 参数和定义该参数应如何使用的正则表达式 受到约束:
Route::get('challenges/{id}', function ($id) {
//
})->where('id', '[0-9]+');
现在仅接受数值作为参数id
。