我是一个奇怪的问题,我不知道如何解决。 我创建了一个datatransformer,其中除在我的其他项目其他的事情,完美的作品,但是当我开始页面我得到这个错误:DataTransformer得到错误“undefined call method getName”
FatalErrorException: Error: Call to undefined method
Acme\CoreBundle\Transformer\HiddenToIdTransformer::getName() in
/var/www/Acme/vendor/symfony/symfony/src/Symfony/Component/Form/Extension/DependencyInjection/DependencyInjectionExtension.php line 49
下面的代码:
变压器
class HiddenToIdTransformer implements DataTransformerInterface
{
/**
* @var ObjectManager
*/
protected $objectManager;
/**
* @var string
*/
protected $class;
public function __construct(ObjectManager $objectManager)
{
$this->objectManager = $objectManager;
}
public function transform($entity)
{
if (null === $entity) {
return;
}
return $entity->getId();
}
public function reverseTransform($name)
{
if (!$name) {
return null;
}
$entity = $this->objectManager
->getRepository('AcmeCoreBundle:Locality')
->findOneByLocality($name);
if (null === $entity) {
throw new TransformationFailedException();
}
return $entity;
}
}
类型
class EntityHiddenType extends AbstractType
{
/**
* @var ObjectManager
*/
protected $objectManager;
public function __construct(ObjectManager $objectManager)
{
$this->objectManager = $objectManager;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$transformer = new HiddenToIdTransformer($this->objectManager);
$builder->addModelTransformer($transformer);
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'class' => null,
'invalid_message' => 'The entity does not exist.',
));
}
public function getParent()
{
return 'hidden';
}
public function getName()
{
return 'entity_hidden';
}
}
个
服务
<service id="datatransformer.entity_hidden" class="Acme\CoreBundle\Transformer\HiddenToIdTransformer">
<argument type="service" id="doctrine.orm.entity_manager" />
<tag name="form.type" alias="entity_hidden" />
</service>
并以这种方式召回变压器:
->add('locality', 'entity_hidden')
我不明白什么是错的,我再说一遍,我在其他项目中,完全相同的代码工作正常!
也许这是2.3.7发生的错误?
btw。你目前没有在form-type中使用entity-manager =>考虑删除依赖项:)我的答案解决了你的问题。 – nifr