无法在控制器方法

时间:2018-01-06 02:59:34

标签: php slim

我正在通过Slim构建API,并使用基于类的控制器方法。查看router docs(在“允许Slim实例化控制器”下),似乎DI应该将ContainerInterface插入到类构造函数中,然后我应该能够访问{{1}在class方法中访问容器。

我创建了一个基类:

$this->container

然后尝试了这个:

class BaseController
{

    protected $container;

    public function __construct(\Interop\Container\ContainerInterface $container) {
        $this->container = $container;
    }

}

我的路线:

class PMsController extends BaseController
{

    public function index(Request $request, Response $response, $args)
    {
        var_dump($this); exit;
    }

}

但我收到错误:$app->group('/pms', function () { $this->get('', '\App\Controllers\PMsController::index'); })->add(authMiddlware()); 。当它是一个类方法时,我不知道它是如何实现的。如果我应该使用另一种访问容器的方法,我不肯定?

1 个答案:

答案 0 :(得分:1)

尝试将路线更改为

OperationQueue

请注意单$app->group('/pms', function () { $this->get('', '\App\Controllers\PMsController:index'); })->add(authMiddlware()); 而不是使用双:。如果您没有在其中执行任何其他功能,也不需要BaseController。 Slim 3默认为您注入::