Php 如何在symfony2中解析非控制器类中的路径

Php 如何在symfony2中解析非控制器类中的路径,php,symfony,twig,Php,Symfony,Twig,我有一个表单生成器类,它继承自AbstractType,我需要解析如下路径: $uri = $router->generate('blog_show', array('slug' => 'my-blog-post')); public function addAction(Request $request) { $post = new Post(); $form = $this->createForm('post', $post); // ... }

我有一个表单生成器类,它继承自
AbstractType
,我需要解析如下路径:

$uri = $router->generate('blog_show', array('slug' => 'my-blog-post'));
public function addAction(Request $request)
{
    $post = new Post();
    $form = $this->createForm('post', $post);

    // ...
}
由于该类不是
Controller
的子类,因此我无法访问路由器。有什么想法吗


在构建时将路由器传递给类怎么样?

您可以将此类定义为服务,并将路由器服务注入其中


更多信息:。

您可以通过构造函数将
路由器
服务传递给您的表单类型。使用
表单将您的表单注册为服务。键入
标记并将
路由器
服务注入其中


如果要在某个控制器中使用form builder类,则可以更简单、更灵活地使用form builder:

public function someAction() {
    //...

    $task = new Task();
    $form = $this->createForm(new TaskType(), $task, array(
        'action' => $this->generateUrl('target_route'),
        'method' => 'GET',
    ));
}
不需要在表单类型类中设置URL。 请在此处阅读更多信息:

能否为参数:[@router]
指定php模板版本代码?请参阅中的php选项卡。
public function someAction() {
    //...

    $task = new Task();
    $form = $this->createForm(new TaskType(), $task, array(
        'action' => $this->generateUrl('target_route'),
        'method' => 'GET',
    ));
}