2015-02-18 3 views
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 в вашем контроллере. – Cerad

ответ

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 переменная