我正在使用silex而我正在尝试使用控制器作为服务。这个概念很好但我无法弄清楚如何将参数传递给控制器方法。这就是我的意思
IndexController.php
class IndexController
{
public function pagesAction($page)
{
return $page;
}
}
// app.php
$app['index.controller'] = $app->share(function() use ($app) {
return new Controllers\IndexController();
});
$app->get('/pages/{num}', "index.controller:pagesAction");
当我访问页面/ 3时,我得到了
Controller "SD\Controllers\IndexController::pagesAction()" requires that you provide a value for the "$page" argument (because there is no default value or because there is a non optional argument after this one).
我也试过
$app->get('/pages/{num}', "index.controller:pagesAction:num");
有什么想法吗?
答案 0 :(得分:3)
更改此
class IndexController
{
public function pagesAction($page) //what is $page? Is not into route
{
return $page;
}
}
到
class IndexController
{
public function pagesAction($num)
{
return $page;
}
}
这是因为silex(当然也是Symfony2逻辑)期望从路由到控制器的参数名称完全相同
您应该为$page
变量