2011-10-25 24 views
0

私は0から90までの整数を取る '傾き'というフィールドを持っています。
assert文では、型は整数でなければならないと述べています。この場合type = integerアサーションとchoiceフォームタイプを組み合わせる方法

私は、しかし、選択が起こるようにする方法を見つけることができません選択ウィジェット、0から90
の範囲の値を持つドロップダウンリストとしてフィールドをレンダリングしたいと思います整数として。フォームを送信しようとするたびに、 'このフィールドはInteger型である必要があります'というエラーが表示されます。
仕事
ドロップダウン選択リストの組み合わせとアサート\タイプ(タイプ=「整数」)してみましょう。

はにどのような方法がありますか?

エンティティで財産の定義:

/** 
    * @ORM\Column(name="inclination", type="integer", nullable=true) 
    * @Assert\NotBlank() 
    * @Assert\Min(limit=0) 
    * @Assert\Max(limit=90) 
    * @Assert\Type(type="integer") 
    */ 
    private $inclination; 

形でフィールドが構築されます方法:

$builder->add('inclination', 'choice', array(
      'choices' => $this->getInclinationChoices(), 
      'empty_value' => 'Choose an option', 
      )); 

private function getInclinationChoices() 
    { 
     $choices = array(); 
     for($i=0; $i<= 90; $i++) { 
      $choices[$i] = "$i °"; 
     } 
     return $choices; 
    } 

答えて

1

わからないその適切なsymfonyの2のアプローチの場合エンティティのsetInclination()メソッドで値をPHPの整数型にすることはできますか?

例:

public function setInclination($inclination) 
{ 
    $this->inclination = (int) $inclination; 
} 

私はローカルであなたの問題を再作成し、この修正プログラムは、私のために働きました。

+0

アドバイスいただきありがとうございます。私がリファクタリングに慣れると、私はそれを試してみるつもりです。 今のところ私は答えとして設定しています。それはあなたのためにローカルで働いていたからです。 – Dieter

+0

それは私のために働いて、それは私に望ましい結果をもたらしました。しかし、私はまだこれを行うためにsymfonyにやさしい方法があるかもしれないと感じています(おそらくフォーム検証グループ)。私はまだそれを見つけていない。 symfonyのより多くの経験をお持ちの方には、私たちと共有するための代替ソリューションがあります。 – Iain

関連する問題