フォームタイプ:
class BranchFormType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('name');
}
public function getName() {
return 'branch';
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'My\MainBundle\Entity\Branch',
));
}
}
エンティティ定義:
<field name="name" column="name" type="string" length="255"/>
nullable=true はなく、フィールドにはレンダリング時に必須属性があります。
Validation.yml:
My\MainBundle\Entity\Branch:
properties:
name:
- NotBlank: ~
symfony はこのファイルを自動的に見つけますか、それともどこかに含める必要がありますか? ドキュメントには、フォームが検証サービスを自動的に使用することが記載されています。
コントローラ:
$branch = new Branch();
$form = $this->createForm(new BranchFormType(), $branch);
if ($request->isMethod('POST')) {
$form->bindRequest($request);
if ($form->isValid()) {
$em->persist($branch);
$em->flush();
return $this->redirect($this->generateUrl('view_branch'));
}
}
return $this->render('MyMainBundle:Branch:create.html.twig', array(
'form' => $form->createView()
));
送信すると、次のエラーが表示されます。
SQLSTATE[23000]: 整合性制約違反: 1048 列 'name' を null にすることはできません
そのため、名前が空であるという事実にもかかわらず、isValid は true を返し、空の値を持つエンティティを永続化し続けます。名前が空の場合、isValid はどのように true を返すことができますか? ORM 定義は nullable=false と言っていますか?`アイデアはありますか? 追加のバリデーターは定義されていません。私はsf2.1を使用しています