2017-11-22 29 views
1

私はこの簡単な質問の答えを探していましたが、実際の解決策が見つかりません。フィールドは2つしかありません。主な目的は、それぞれのフィールドで検証エラーを表示することです。Symfony 3 - フォーム検証エラーフィールドが表示されない

私のエンティティクラス:

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 


/** 
* @ORM\Entity 
* @ORM\Table(name="sample") 
*/ 
class Sample 
{ 
    /** 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    * @ORM\Column(type="integer") 
    */ 
    private $id; 

    /** 
    * @Assert\NotBlank() 
    * @ORM\Column(type="string") 
    */ 
    private $first_name; 

    /** 
    * @ORM\Column(type="string") 
    */ 
    private $last_name; 

    /** 
    * @Assert\NotBlank() 
    * @return mixed 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * @return mixed 
    */ 
    public function getFirstName() 
    { 
     return $this->first_name; 
    } 

    /** 
    * @param mixed $first_name 
    */ 
    public function setFirstName($first_name) 
    { 
     $this->first_name = $first_name; 
    } 

    /** 
    * @return mixed 
    */ 
    public function getLastName() 
    { 
     return $this->last_name; 
    } 

    /** 
    * @param mixed $last_name 
    */ 
    public function setLastName($last_name) 
    { 
     $this->last_name = $last_name; 
    } 


} 

マイフォームクラス:

class Sampleform extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('firstName') 
       ->add('lastName'); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(['data_class' => Sample::class]); 
    } 

    public function getBlockPrefix() 
    { 
     return 'app_bundle_sampleform'; 
    } 
} 

私のコントローラ機能:

public function indexAction(Request $request) 
    { 
     $form = $this->createForm(Sampleform::class); 

     $form->handleRequest($request); 

     if ($form->isSubmitted() && $form->isValid()) { 
      return new Response("Same"); 
     } 

     return $this->render('default/index.html.twig', ['form' => $form->createView()]); 
    } 

私は、コードをしようとするので、小枝ビューでIを失っていますその下にはエラーが表示されますが、デバッグツールバーがエラーを検出したにもかかわらず、他の小枝ビューはエラーメッセージを表示しませんr。

マイ小枝見る(3ラインがレンダリング形成):

{% block body %} 
    {{ form_start(form) }} 
     {{ form_widget(form) }} 
     <button class="btn btn-info" >Save</button> 
    {{ form_end(form) }} 
{% endblock %} 

マイ小枝ビュー(個々のフィールド):

{% extends 'base.html.twig' %} 

{% block stylesheets %} 
    <link rel="stylesheet" href="{{ asset('bootstrap/css/bootstrap.css') }}"> 
{% endblock %} 

{% block body %} 
    {{ form_start(form) }} 

     {{ form_label(form.lastName) }} 
     {{ form_errors(form.lastName) }} 
     {{ form_widget(form.lastName) }} 

     {{ form_label(form.lastName) }} 
     {{ form_errors(form.lastName) }} 
     {{ form_widget(form.lastName) }} 

     <button class="btn btn-info" >Save</button> 
    {{ form_end(form) }} 
{% endblock %} 

ブートストラップバージョンが4つのBETA 2つの 小枝フォームのテーマがすでに設定されている

+0

2番目のテンプレートでは、form.lastNameのテンプレートタグが2回あり、form.firstNameのエラーは出力されません。そのため、form.firstNameも決して送信されません。 – martinczerwi

+0

私はまだ同じだと思います。最初のフィールドのlastNameをfirstNameに置き換えるのを忘れてしまった。とにかく私が家に帰ったときにあなたが提案したものを試してみるでしょう。 –

+0

ちょうど@martinczerwiの更新、私はそれを試みたが、それは動作していません。 –

答えて

0

現在作業中です。問題は私のブートストラップCSSです

0

https://symfony.com/doc/current/validation.html#constraints-in-form-classes

私が見る限り、特定のサービスからバリデーションを呼び出すか、フォームクラスに制約を追加する必要があります。例:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('firstName', TextType::class, [ 
     'required' => true, 
     'constraints' => [new NotBlank()], 
    ]) 
      ->add('lastName'); 
} 
関連する問題