Is it possible to inject a route-paramter (or an route segment) to the controller-constructor?

You find some code to clarify my question.

class TestController{

    protected $_param;

    public function __construct($paramFromRoute)
    {
        $this->param = $paramFromRoute;
    }

    public function testAction()
    {
        return "Hello ".$this->_param;
    }
}

----------------------------------------------------

App::bind('TestController', function($app, $paramFromRoute){
    $controller = new TestController($paramFromRoute);
    return $controller;
});

----------------------------------------------------

// here should be some magic
Route::get('foo/{bar}', 'TestController'); 

推荐答案

无法注入它们,但您可以通过以下方式访问所有它们:

class TestController{

    protected $_param;

    public function __construct()
    {
        $id = Route::current()->getParameter('id');
    }

}

Laravel相关问答推荐

Laravel | 使用select查询

在部署到 AWS 时保持我的环境参数安全

Laravel 集合排序不生效

使用 Amazon S3 的 Storage::get() 返回 false

如何在laravel中将数组转换为字符串?

如何为路由 laravel 5 使用OR中间件

Laravel + SQLite = SQLSTATE[HY000]一般错误:8次try 写入只读数据库

我的composer 不会完全用 Laravel 4 更新它会被artisan卡住

如何在 laravel 中使用 str_replace

合并两个 Eloquent 集合并删除所有重复项.

Laravel 查询构建器 - 如何按别名分组,或进行原始 groupBy

Laravel 表 * 没有名为 * 的列

在 Laravel 中无效后防止重定向到主页

从 sqlite DB 登录 Laravel,得到PDOException 找不到驱动程序

Laravel 从现有模型生成迁移

如何在中间件 Laravel 中获取请求的控制器和操作的名称

如何访问 Carbon 对象类型?

Laravel 存储链接不适用于生产

Laravel php artisan 产生错误

如何在脚本文件中使用 Laravel Blade?