我有一个已经变成表格的 Doctrine mongodb 文档。该文档有两个 emebedOne 文档,它们也在表单中。正在验证主文档,但未验证嵌入文档。我正在使用自定义断言,但我认为这并不重要。
文档
类帐户记录{
/**
* @MongoDB\ID
*/
私人 $id;
/**
* @MongoDB\Field(type="BimcoreEmail")
* @Assert\电子邮件
* @Assert\NotNull
* @CustomAssert\BimcoreEmail
*/
私人$电子邮件;
/**
* 访问管理员
*
* @MongoDB\布尔
*/
私人 $access_admin = 0;
/** @MongoDB\EmbedOne(targetDocument="vidAccountSettings") */
私人 $vid;
}
嵌入类的自定义断言永远不会被调用。
/** @MongoDB\EmbeddedDocument */
类 vidAccountSettings {
/**
* 分享部分路径
*
*
* @MongoDB\Field(type="Url")
* @CustomAssert\Url
*/
私人 $sharePath;
}
形式
类 AccountEditFormType 扩展 AbstractType
{
/**
* 构建代表用户的嵌入表单。
*
* @param FormBuilder $builder
* @param 数组 $options
*/
公共函数 buildForm(FormBuilder $builder, array $options){
$建造者
->添加('前缀','隐藏',数组('必需' => false))
->add('vid.access', 'checkbox', array('required' => false))
->add('vid.googleAnalytics', 'text', 数组('required' => false))
->add('vid.liveRail', 'text', 数组('required' => false))
->add('vid.sharePath', 'url', 数组('required' => false))
;
}
公共函数 getDefaultOptions(数组 $options)
{
返回数组(
'意图' => 'editAccount',
'cascade_validation' => 真,
);
}
公共函数 getName()
{
返回“bimfs_account_creation”;
}
}
处理程序
类 AccountEditFormHandler
{
受保护的$请求;
受保护的 $userManager;
受保护的$form;
公共函数 __construct(Form $form, Request $request, BimcoreAccountManager $accountManager)
{
$this->form = $form;
$this->request = $request;
$this->accountManager = $accountManager;
}
公共功能流程($account)
{
// 为当前账户设置表单中的数据。
$this->form->setData($account);
if ('POST' === $this->request->getMethod()) {
$this->form->bindRequest($this->request);
if ($this->form->isValid()) {
$this->onSuccess($account);
返回真;
} 别的 {
}
}
返回假;
}
受保护的功能 onSuccess(BimcoreAccountRecord $account)
{
// 更新账户数据。
$this->accountManager->updateAccount($account);
}
}
谢谢您的帮助。
科里