超薄控制器功能缺少参数1

时间:2016-01-19 08:48:41

标签: slim

我有一个简单的Slim应用程序应该呈现一个html页面。 这是我的index.php

require __DIR__ . '/../vendor/autoload.php';
$app = new \RKA\Slim(
    [
        'mode' => 'development',
    ]
);
// Optionally register a controller with the container
$app->container->singleton('App\Home', function ($container) {
    return new \App\Controller\Home();
});
// Set up routes
$app->get('/','App\Home:index');

这是我的控制器Home.php 命名空间App \ Controller;

class Home
{
    protected $request;
    protected $response;
    public function index($app)
    {
        $this->app = $app;
        $this->app->render('../test.html');
    }

我得到Message: Missing argument 1 for App\Controller\Home::index()

1 个答案:

答案 0 :(得分:1)

我看到你没有使用原始的Slim,但使用RKA Slim Controller project进行了Slim扩展。

据我了解代码,您的index不会将应用程序作为参数传递。该方法将仅获取路由定义的URL参数(在本例中为none)。

如果您需要引用该应用程序,请实现名为setApp的方法,该方法将自动调用(在分派路径时)。

class Home
{
    protected $request;
    protected $response;
    protected $app;

    public function setApp($app)
    {
        $this->app = $app;
    }

    public function index() {
        /* logic for the route
           app is available as $this->app */
    }
}

如果您另外实施setRequestsetResponse,您将收到请求和回复参考。