【发布时间】:2016-02-08 12:03:15
【问题描述】:
我正在基于 Sf2 组件创建自己的框架,并尝试创建路由器服务。
我需要 generateUrl() 方法的服务
protected function generateUrl($route, $parameters = array(), $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH)
{
return $this->get('router')->generate($route, $parameters, $referenceType);
}
我试试这个
$container = new ContainerBuilder();
$container->setDefinition('router_loader', new Definition('Symfony\Component\Config\Loader\LoaderInterface'));
$container->setDefinition('router', new Definition('Symfony\Component\Routing\Router', array()));
当我在我的 methodAction 中执行时
$this->generateUrl('home');
他还给我:
可捕获的致命错误:参数 1 传递给 Symfony\Component\Routing\Router::__construct() 必须是 Symfony\Component\Config\Loader\LoaderInterface,没有给出 D:\xampp\htdocs\my_fw\vendor\symfony\routing\Router.php 在第 95 行
查看路由器构造函数,我看到了。我需要那个界面
public function __construct(LoaderInterface $loader, $resource, array $options = array(), RequestContext $context = null, LoggerInterface $logger = null)
如何避免服务中的实现?
**New update:** routing.php
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
// Routing
$routes = new RouteCollection();
// Home
$routes->add('home', new Route('/', array(
'_controller' => 'MyCompany\\Controller\\HomeController::indexAction',
)));
【问题讨论】:
-
请记住,Router 类是一个具有非常特殊要求的多合一管理器类型类:symfony.com/doc/current/components/routing/…。如果您不想要或不需要这种复杂性,则直接使用 UrlGenerator 类:symfony.com/doc/current/components/routing/…
标签: symfony