【发布时间】:2016-01-11 17:04:31
【问题描述】:
我正在使用 Symfony 表单 (v3.0),而没有使用 Symfony 框架的其余部分。使用 Doctrine v2.5。
我已经创建了一个表单,这里是表单类型类:
class CreateMyEntityForm extends BaseFormType {
public function buildForm(FormBuilderInterface $builder, array $options){
$builder->add('myEntity', EntityType::class);
}
}
加载页面时,出现以下错误。
参数 1 传递给 Symfony\Bridge\Doctrine\Form\Type\DoctrineType::__construct() 必须是 Doctrine\Common\Persistence\ManagerRegistry 的一个实例,无 给定,在 /var/www/dev3/Vendor/symfony/form/FormRegistry.php 中调用 第 85 行
我相信这里需要进行一些配置,但我不知道如何创建一个实现 ManagerRegistryInterface 的类 - 如果这样做是正确的。
任何指针?
编辑 - 这是我设置 Doctrine 的代码
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Tools\Setup;
class Bootstrap {
//...some other methods, including getCredentials() which returns DB credentials for Doctrine
public function getEntityManager($env){
$isDevMode = $env == 'dev';
$paths = [ROOT_DIR . '/src'];
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode, null, null, false);
$dbParams = $this->getCredentials($env);
$em = EntityManager::create($dbParams, $config);
return $em;
}
}
【问题讨论】:
-
您是否记得将
use Symfony\Bridge\Doctrine\Form\Type\EntityType;放在表单顶部? -
@JasonRoman 存在 use 语句。
-
@malcolm 我确实看到了这个问题,但解决方案使用了 Silex\Application 类。我没有使用 Silex,我想了解我的班级应该做什么:)
-
@malcolm 我看过那个例子,但它没有使用 Doctrine(所以显然没有使用 EntityType 字段)
标签: php symfony doctrine-orm symfony-forms