nij*_*sen 16 php validation yaml symfony
我是Symfony 2 Web框架的新手,我正在努力完成一项非常基本的验证任务.我有一个Post有成员的实体模型,slug我用它来构建帖子的链接.在Post.orm.yml我定义unique: true并希望将此约束包括为验证器.
我创建了一个文件validation.yml:
# src/OwnBundles/BlogpostBundle/Resources/config/validation.yml
OwnBundles\BlogpostBundle\Entity\Post:
properties:
slug:
- NotBlank: ~
constraints:
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: slug
Run Code Online (Sandbox Code Playgroud)
我的控制器中的创建功能非常简单:
public function addAction(Request $request)
{
$post = new Post();
$form = $this->createForm(new PostType(), $post);
if($request->getMethod() == 'POST')
{
$form->bind($request);
if($form->isValid())
{
$em = $this->getDoctrine()->getManager();
$em->persist($post);
$em->flush();
return $this->redirect(
$this->generateUrl('own_bundles_blogpost_homepage')
);
}
}
return $this->render(
'OwnBundlesBlogpostBundle:Default:add.html.twig',
array(
'title' => 'Add new blogpost',
'form' => $form->createView(),
)
);
}
Run Code Online (Sandbox Code Playgroud)
基本页面流程工作正常,我可以添加帖子并查看它们,但如果我复制帖子标题来测试我的验证,它会引发异常:SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'duplicate-slug' for key 'UNIQ_FAB8C3B3989D9B62'.我一直在扫描文档很长一段时间,但我无法找出为什么我的$form->isValid()回报true.
Alt*_*PHP 35
你在app/config/config.yml中启用了验证吗?
...
framework:
...
validation: { enabled: true }
...
...
Run Code Online (Sandbox Code Playgroud)
如果您还想使用注释定义验证,则必须同时启用验证和注释验证:
...
framework:
...
validation: { enabled: true, enable_annotations: true }
...
...
Run Code Online (Sandbox Code Playgroud)
然后别忘了清除app/cache目录.
| 归档时间: |
|
| 查看次数: |
9330 次 |
| 最近记录: |