Я использую 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");
Есть идеи?
Изменить это
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