Laravel有关于路径模型绑定的文档,可以找到here。但是没有关于这种情况的例子:
Route::get('search/', 'ArticleController@search');
如何将模型隐式绑定到路径中?我知道我可以直接在控制器的方法上做这样的事情。
public function search(Model $model) {
// some code here
}
但我只是好奇如何在路线上做这件事。
我正在采用这种方法
Route::get('search/{article}', function(ArticlesModel $articlesModel) {
// this should be calling 'ArticleController@search'
});
谢谢!
答案 0 :(得分:3)
因为您的变量名为$model
,所以Laravel会查找写为{model}
的网址的通配符段:
在routes.php中:
Route::get('search/{article}', 'ArticleController@search');
在控制器中:
function search(Article $article) {
//$article is the Article with the id from {article}, ie. articles/2 is article 2
}
编辑......你建议的方式并没有多大意义。这只是一个额外的步骤,只需使用"ArticleController@search"
即可完全跳过。我认为这段代码可以运行,虽然我不推荐它:
Route::get('search/{article}', function(Article $article)
{
$controller = App::make(ArticleController::class);
return App::call([$controller, 'search'], compact('article'));
}
答案 1 :(得分:0)
routes.php文件
Route::get('search/{article}', 'ArticleController@search');
ArticleController.php
public function search(Model $article) {
// some code here
}