1

如何在 Symfony2 中创建 FormType 以将实体转换为字符串并返回?

我已经完成了这里所说的一切,但是有一个错误:

Expected argument of type "string", "<Vendor>\<Bundle>\Entity\User" given

如何创建将文本字段转换为用户对象的表单?

4

2 回答 2

3

假设User有一个username字段,我会进行如下转换。注意那transform是为了User变换stringreverseTransform而是相反的。

将转换器添加到您的表单字段:

$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
}
于 2012-07-10T13:39:25.030 回答
0

您可以在此处提取此表单类型并使用它。https://github.com/symfony/symfony/pull/1951它可以满足您的要求。

于 2012-07-10T13:34:27.870 回答