3
Doctrine mongodb 문서를 가지고 있습니다. 문서에는 두 개의 emebedOne 문서가 있으며이 문서도 양식에 있습니다. 주 문서의 유효성을 검사하고 있지만 포함 된 문서는 유효하지 않습니다. 나는 사용자 정의 주장을 사용하고 있지만 나는 그것이 중요하다고 생각하지 않는다.Symfony2 Doctrine ODM embed 클래스 폼 유효성 확인
문서는
class AccountRecord{ /** * @MongoDB\Id */ private $id; /** * @MongoDB\Field(type="BimcoreEmail") * @Assert\Email * @Assert\NotNull * @CustomAssert\BimcoreEmail */ private $email; /** * Access Admin * * @MongoDB\Boolean */ private $access_admin = 0; /** @MongoDB\EmbedOne(targetDocument="vidAccountSettings") */ private $vid; }
는 사용자가이를 주장 임베디드 클래스는 호출되지 않습니다.
/** @MongoDB\EmbeddedDocument */ class vidAccountSettings { /** * Share section path * * * @MongoDB\Field(type="Url") * @CustomAssert\Url */ private $sharePath; }
형태
class AccountEditFormType extends AbstractType { /** * Builds the embedded form representing the user. * * @param FormBuilder $builder * @param array $options */ public function buildForm(FormBuilder $builder, array $options){ $builder ->add('prefix', 'hidden', array('required' => false)) ->add('vid.access', 'checkbox', array('required' => false)) ->add('vid.googleAnalytics', 'text', array('required' => false)) ->add('vid.liveRail', 'text', array('required' => false)) ->add('vid.sharePath', 'url', array('required' => false)) ; } public function getDefaultOptions(array $options) { return array( 'intention' => 'editAccount', 'cascade_validation' => true, ); } public function getName() { return 'bimfs_account_creation'; } }
핸들러 도움을
class AccountEditFormHandler { protected $request; protected $userManager; protected $form; public function __construct(Form $form, Request $request, BimcoreAccountManager $accountManager) { $this->form = $form; $this->request = $request; $this->accountManager = $accountManager; } public function process($account) { // set the data in the form for the current account. $this->form->setData($account); if ('POST' === $this->request->getMethod()) { $this->form->bindRequest($this->request); if ($this->form->isValid()) { $this->onSuccess($account); return true; } else { } } return false; } protected function onSuccess(BimcoreAccountRecord $account) { // update the account data. $this->accountManager->updateAccount($account); } }
감사합니다.