Передать аргументы в методы контроллера

0

Я использую 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");

Есть идеи?

  • 2
    Не знаком с Silex, но попробуйте изменить $ page на $ num в вашем контроллере.
Теги:
controller
silex

1 ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню