我刚刚接受了一个教程,其中我在web.php中调用控制器函数所需的唯一代码是:
Route::resource('/articles', 'ArticleController');
这适用于我在创建项目时已经存在的所有功能(编辑,更新,销毁......) 现在我需要制作第二个更新功能(upvote)。但是当在控制器中创建一个新函数并路由到它时,我收到以下错误:
未定义路线[articles.upvote]。 (查看:D:\ school \ web-backend \ Oplossingen \ hackernews \ resources \ views \ articles \ index.blade.php)
如何将“a”标签转到控制器的upvote功能? 我的代码:
public function upvote(Request $request, $id)
{ /* ArticleController.php */
$article = Article::find($id);
$article->points += 1;
$article->save();
Session::flash('succes', 'Upvote was a succes');
return redirect()->route('articles.index');
}
td> <!-- index.blade.php !-->
<a href="{{ route('articles.upvote', ['articles'=>$storedArticle->id]) }}" class="btn btn-default">upvote</a>
</td>
<td>downvote</td>
<td>
<a href="{{ route('articles.edit', ['articles'=>$storedArticle->id]) }}" class="btn btn-default">edit</a>
</td>
Route::get('/', function () { /*route\web.php */
return view('welcome');
});
Route :: resource('/ articles','ArticleController');
答案 0 :(得分:3)
如果要使用articles.upvote
语法,则需要命名路线。
您的web.php文件应如下所示:
// Use 'GET' or 'POST' depending on how you have your view setup
Route::get('/articles/{article}/upvote', 'ArticleController@upvote')->name('articles.upvote');
Route::resource('/articles', 'ArticleController');
有关路由的更多信息,请访问: https://laravel.com/docs/5.3/routing#named-routes
答案 1 :(得分:0)
您需要在路线中添加upvote功能。 因此您必须在
之类的web.php中创建新路由Route::post('articles/{Article}/{article_id}/upvote','ArticleController@upvote')->name('upvote');