Cor*_*win 4 symfony doctrine-orm odm
我有一个Doctrine mongodb文档,我已经变成了一个表单.该文档有两个emebedOne文档,这些文档也在表单中.主文档正在验证,但嵌入文档不是.我正在使用自定义断言,但我认为这不重要.
文献
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);
}
}
谢谢您的帮助.
科里
好吧,我想出来了,你需要在你要验证的嵌入的记录中设置一个断言有效语句.
/** @MongoDB\EmbedOne(targetDocument="vidAccountSettings")
* @Assert\Valid
*/
private $vid;
| 归档时间: |
|
| 查看次数: |
1176 次 |
| 最近记录: |