gpt4 book ai didi

php - 从 Symfony2 中的服务调用 createForm() 和 generateUrl()

转载 作者:可可西里 更新时间:2023-11-01 13:05:15 27 4
gpt4 key购买 nike

我想从我的自定义服务访问 Controller 方法。我创建了 MyManager 类,我需要在其中调用 createForm()generateUrl() 函数。在 Controller 中我可以使用:$this->createForm(...)$this->generateUrl(...),但是服务呢?有可能的?我真的需要这些方法!我应该使用什么参数?

最佳答案

如果您查看 Symfony\Bundle\FrameworkBundle\Controller\Controller 类中的这两个方法,您将看到服务名称以及如何使用它们。

public function generateUrl($route, $parameters = array(), $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH)
{
return $this->container->get('router')->generate($route, $parameters, $referenceType);
}

public function createForm($type, $data = null, array $options = array())
{
return $this->container->get('form.factory')->create($type, $data, $options);
}

基本上,您的类需要服务 routerform.factory 来实现功能。我不建议将 Controller 传递给您的类(class)。 Controller 是主要由框架本身使用的特殊类。如果您打算将您的类用作服务,只需创建它即可。

services:
my_manager:
class: Something\MyManager
arguments: [@router, @form.factory]

为服务创建一个带有两个参数的构造函数,并在您的类中实现所需的方法。

class MyManager
{
private $router;
private $formFactory;

public function __construct($router, $formFactory)
{
$this->router = $router;
$this->formFactory = $formFactory;
}

// example method - same as in controller
public function createForm($type, $data = null, array $options = array())
{
return $this->formFactory->create($type, $data, $options);
}

// the rest of you class ...
}

关于php - 从 Symfony2 中的服务调用 createForm() 和 generateUrl(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29398076/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com