Laravel 5.2路由模型绑定

时间:2016-02-22 22:25:15

标签: php laravel laravel-5 laravel-routing laravel-5.2

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'
});

谢谢!

2 个答案:

答案 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
}