我有一个简单的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()
答案 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 */
}
}
如果您另外实施setRequest
和setResponse
,您将收到请求和回复参考。