将参数传递给控制器​​方法

Pass arguments to controller methods

我正在使用 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");

当我访问 pages/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");

有什么想法吗?

改变这个

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 变量

参数化的路由