Slim 控制器函数缺少参数 1

Slim controller function missing argument 1

我有一个简单的 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()

我看到你没有使用原始的 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,您将获得请求和响应引用。