php - 如何使用 Symfony2 路由组件将路由与 Controller 绑定(bind)

标签 php symfony routes silex

我想在我的小站点中使用独立的 Symfony2 路由组件。我根据文档和一些示例创建了这个:

$request = Request::createFromGlobals();

$routeTest = new Symfony\Component\Routing\Route('/route-test', array('controller' => 'test'));

$routes = new Symfony\Component\Routing\RouteCollection();
$routes->add('test', $routeTest);

$context = new Symfony\Component\Routing\RequestContext();
$context->fromRequest($request);

$matcher = new Symfony\Component\Routing\Matcher\UrlMatcher($routes, $context);
$matcher->match($request->getPathInfo());

我不明白应该如何调用我已传递给路由构造函数的 Controller 测试。因此,我想要得到类似 Silex Route 匹配的东西:

$app->get('/hello/{name}', function($name) use($app) { 
   return 'Hello '.$app->escape($name); 
});

抱歉我的英语...

最佳答案

$matcher->match() 返回[ 1 ] 匹配路由的属性[ 2 ] (包括一个特殊的 _route 属性,其中包含路由名称 [ 3 ])。

controller 默认值也包含在属性中,因此您可以轻松访问它,然后使用类似 call_user_func 的内容。调用 Controller :

// ...
$attributes = $match->match($request->getPathInfo());

$controllerResult = call_user_func($attributes['controller']);

关于php - 如何使用 Symfony2 路由组件将路由与 Controller 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20815628/

相关文章:

php - 表单成功后重定向 symfony 4

asp.net-mvc - 如何在 ASP.NET MVC 中创建仅在没有进一步路径时才匹配的 MapRoute 条目?

Symfony2 - 在具有不同关系的 Bundle 之间共享实体

laravel - 如何为经过身份验证的用户和未经身份验证的用户提供路由

javascript - Angular - UI 路由器路由 - HTML5 模式

php - Zend_Navigation 加载失败

php - 无效参数编号 : number of bound variables does not match number of tokens'

php - 实时位置跟踪 - 基于 Windows 程序还是浏览器?

javascript等待php完成功能并刷新页面

symfony - Doctrine2/Symfony2-同一表上有多个实体