如何在 Symfony2 中创建 FormType 以将实体转换为字符串并返回?
我已经完成了这里所说的一切,但是有一个错误:
Expected argument of type "string", "<Vendor>\<Bundle>\Entity\User" given
如何创建将文本字段转换为用户对象的表单?
如何在 Symfony2 中创建 FormType 以将实体转换为字符串并返回?
我已经完成了这里所说的一切,但是有一个错误:
Expected argument of type "string", "<Vendor>\<Bundle>\Entity\User" given
如何创建将文本字段转换为用户对象的表单?
假设User
有一个username
字段,我会进行如下转换。请注意那transform
是为了User
变换string
,reverseTransform
而是相反的。
将转换器添加到您的表单字段:
$builder
->add('user', 'text')
->addViewTransformer($transformer)
相关代码(例如您引用的示例):
/**
* Transforms an User to a string.
*
* @param User|null $user
* @return string
*/
public function transform($user)
{
return $user ? $user->getUsername() : '';
}
/**
* Transforms a string to an User.
*
* @param string $username
* @return User|null
*/
public function reverseTransform($username)
{
if(empty($username)) return null;
$user = $this->om
->getRepository('AcmeHelloBundle:User')
->findOneBy(array('username' => $username))
;
return $user; // Can be null
}
您可以在此处提取此表单类型并使用它。https://github.com/symfony/symfony/pull/1951它可以满足您的要求。