php – 如何在symfony2中解析非控制器类中的路径
发布时间:2020-12-13 18:20:28 所属栏目:PHP教程 来源:网络整理
导读:我有一个表单生成器类,它继承自AbstractType,我需要解决这样的路径: $uri = $router-generate('blog_show',array('slug' = 'my-blog-post')); 由于该类不是Controller的子级,因此无法访问路由器.有任何想法吗? 在建设时间将路由器传递给班级怎么样? 您可
我有一个表单生成器类,它继承自AbstractType,我需要解决这样的路径:
$uri = $router->generate('blog_show',array('slug' => 'my-blog-post')); 由于该类不是Controller的子级,因此无法访问路由器.有任何想法吗? 在建设时间将路由器传递给班级怎么样?
您可以通过构造函数将路由器服务传递给表单类型.使用form.type标记将您的表单注册为服务,并将路由器服务注入其中.
<?php namespace VendorBundleAppBundleFormType; use SymfonyComponentFormAbstractType; use SymfonyBundleFrameworkBundleRoutingRouter; class PostType extends AbstractType { /** * @var Router */ private $router; /** * @param Router */ public function __construct(Router $router) { $this->router = $router; } /** * @return string */ public function getName() { return 'post'; } // ... } 将其注册为服务: services: form.type.post: class: VendorBundleAppBundleFormTypePostType arguments: [ @router ] tags: - { name: form.type } 并在你的控制器中使用它像这样: public function addAction(Request $request) { $post = new Post(); $form = $this->createForm('post',$post); // ... } 由于您使用form.type标记将表单类型注册为服务,因此您只需使用其名称而不是新的PostType().您可以在您的类型中以$this->路由器的形式访问路由器服务. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |