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

时间:2015-02-18 15:14:44

标签: php symfony controller silex

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

有什么想法吗?

1 个答案:

答案 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逻辑)期望从路由到控制器的参数名称完全相同

OR

您应该为$page变量

更改路线以进行参数化