如何在表单生成器 symfony 中添加获取容器?
How Can I add get container in form builder symfony?
如何在表单生成器 symfony 中添加获取容器?
我想在表单生成器中使用 $get->container...
一个问题是将容器作为参数从控制器传递给您的 FormType 文件:
$form_type = new MyFormType($this->container);
并在您的 FormType 文件中添加构造方法:
protected $container;
public function __construct($container)
{
$this->container = $container;
}
然后您可以通过以下方式访问容器:'$this->container';
希望对您有所帮助;)
将整个容器注入表单类型是一种不好的做法。请考虑仅向您的表单类型注入必需的依赖项。您可以简单地 define your form type as a service 并注入所需的依赖项。
src/AppBundle/Form/TaskType.php
use Doctrine\ORM\EntityManagerInterface;
// ...
class TaskType extends AbstractType
{
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
// ...
}
src/AppBundle/Resources/config/services.yml
services:
AppBundle\Form\TaskType:
arguments: ['@doctrine.orm.entity_manager']
tags: [form.type]
要注入存储库 class 有两种方法。第二种方法更干净。
注入 EntityManager class 并从 EM 获取存储库 class:
$this->em->getRepository(User::class)
使用 EM 工厂将存储库 class 注册为服务并将其注入您的表单类型:
services:
AppBundle\Repository\UserRepository:
factory: ['@doctrine.orm.entity_manager', getRepository]
arguments: ['AppBundle\Entity\User']
如何在表单生成器 symfony 中添加获取容器?
我想在表单生成器中使用 $get->container...
一个问题是将容器作为参数从控制器传递给您的 FormType 文件:
$form_type = new MyFormType($this->container);
并在您的 FormType 文件中添加构造方法:
protected $container;
public function __construct($container)
{
$this->container = $container;
}
然后您可以通过以下方式访问容器:'$this->container';
希望对您有所帮助;)
将整个容器注入表单类型是一种不好的做法。请考虑仅向您的表单类型注入必需的依赖项。您可以简单地 define your form type as a service 并注入所需的依赖项。
src/AppBundle/Form/TaskType.php
use Doctrine\ORM\EntityManagerInterface;
// ...
class TaskType extends AbstractType
{
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
// ...
}
src/AppBundle/Resources/config/services.yml
services:
AppBundle\Form\TaskType:
arguments: ['@doctrine.orm.entity_manager']
tags: [form.type]
要注入存储库 class 有两种方法。第二种方法更干净。
注入 EntityManager class 并从 EM 获取存储库 class:
$this->em->getRepository(User::class)
使用 EM 工厂将存储库 class 注册为服务并将其注入您的表单类型:
services:
AppBundle\Repository\UserRepository:
factory: ['@doctrine.orm.entity_manager', getRepository]
arguments: ['AppBundle\Entity\User']