如何在Symfony2中创建FormType以将实体转换为字符串并返回?
我已完成here中的所有内容,但有错误:
Expected argument of type "string", "<Vendor>\<Bundle>\Entity\User" given
如何创建将文本字段转换为用户对象的表单?
答案 0 :(得分:3)
假设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
}
答案 1 :(得分:0)
您可以在此处提取此表单类型并使用它。 https://github.com/symfony/symfony/pull/1951它可以满足您的要求。