エンティティを文字列に変換して戻すために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それはあなたが求めていることをします。