1

エンティティを文字列に変換して戻すためにSymfony2でFormTypeを作成するにはどうすればよいですか?

私はここで言っていることをすべて行いましたが、エラーがあります:

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

テキストフィールドがユーザーオブジェクトに変換されるフォームを作成するにはどうすればよいですか?

4

2 に答える 2

3

Userフィールドがあると仮定するとusername、次のような変換を行います。は変身、一方はその逆であることに注意してください。transformUserstringreverseTransform

トランスフォーマーをフォーム フィールドに追加します。

$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 に答える