我无法找到像Yii那样使用silex动态路由的方法。
例如,config.php中的Yii有以下路由定义:'<controller:'w+>/<id:'d+>'=>'<controller>/view',
'<controller:'w+>/<action:'w+>/<id:'d+>'=>'<controller>/<action>',
'<controller:'w+>/<action:'w+>'=>'<controller>/<action>',
所以它根据url路径动态调用控制器。那么如何在Silex中实现呢?我正在尝试这样做,但它不起作用:
$app->match('/{controller}/{action}', function($controller,$action) {
$controller = ucwords($controller);
$name = "Def'Controller'{$controller}Controller::{$action}Action";
return new $name;
})->method('GET');
看起来您的$name
变量有问题,因为您正在使用单个反斜杠,这是转义字符。另外,避免使用{%variable}
语法。最好使用(.)点操作符将字符串的元素连接起来,因为这样更不容易出错,而且代码也更容易阅读。
试题:
$name = "Def''Controller''".$controller."Controller::".$action."Action";