を拡張しているため、ユーザー エンティティBaseUser
にプロパティがありません。$name
検証を追加するにはどうすればよいですか? $username
このエンティティにプロパティを追加することはできますか? ユーザークラスにネイティブに提供されている特定の機能や検証などを台無しにしたり、オーバーライドしたりしますか?
私はこの質問に答えました:FOSUserBundle - Validation for username, password or email fields。
しかし、私は一連の注釈検証を使用しているため、それはうまくいきません。
フォローアップの質問fosUSerBundle
-XMLファイルで、取得したユーザー名を使用するためのチェッカーがネイティブにあることをユーザーを検証するために見ています。その機能が得られません。既存のユーザーと同じ名前のユーザーを追加しようとすると、SQL エラー メッセージが表示されます。これは、XML 検証ファイルをすべてオーバーライドする注釈を使用しているためでしょうか?
<?php
namespace BizTV\UserBundle\Entity;
use BizTV\UserBundle\Validator\Constraints as BizTVAssert;
use Symfony\Component\Security\Core\User\AdvancedUserInterface;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use BizTV\BackendBundle\Entity\company as company;
class User extends BaseUser implements AdvancedUserInterface
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
//TODO: Add regex on $name for a-z, A-Z, 0-9 and _ (underscore)
//TODO: Add constraint on $name * @BizTVAssert\NameExists (and finish coding this constraint)
/**
* @var object BizTV\BackendBundle\Entity\company
*
* @ORM\ManyToOne(targetEntity="BizTV\BackendBundle\Entity\company")
* @ORM\JoinColumn(name="company", referencedColumnName="id", nullable=false)
*/
protected $company;
/**
* @var object BizTV\UserBundle\Entity\UserGroup
* @ORM\ManyToOne(targetEntity="BizTV\UserBundle\Entity\UserGroup")
* @ORM\JoinColumn(name="userGroup", referencedColumnName="id", nullable=true)
*/
protected $userGroup;
だから私はここ(フォームで検証グループを使用するsymfony2)を見て、フォームを構築するときにコントローラーにこれを追加してその解決策を試しました。何も起こりません (まだ INSERT INTO SQL エラーに直接ジャンプします)
$entity = new User();
$request = $this->getRequest();
$form = $this->createForm(new newUserType($tempCompany), $entity, array('validation_groups'=>'registration'));
$form->bind($request);
また、この検証グループ「登録グループ」(一意のユーザーと電子メールの検証を「無料」で提供することになっています)をフォームクラスで次のように設定しようとしました:
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => array('registration'),
));
}
それでも何も起こりません。保存時にSQLエラーにまっすぐ。