2012-02-03 5 views
0

symfony2で独自のフォームタイプを作成していますが、buildView関数で自分のdefaultOptionsにアクセスできません。symfony2カスタムフォームタイプ - own defaultOptions

public function getDefaultOptions(array $options) 
{   
    return array(
     'identifier' => isset($options['identifier']) ? $options['identifier'] : '#star', 
     'currentRating' => isset($options['currentRating']) ? $options['currentRating'] : 0, 
    ); 
} 

/** 
* {@inheritdoc} 
*/ 
public function buildView(FormView $view, FormInterface $form) 
{     
    $view->set('currentRating', $form->getAttribute('currentRating')); 
    $view->set('idientifier', $form->getAttribute('identifier')); 
} 

エラー:私はこれが不可能な何かを読んでいない

Notice: Undefined index: currentRating in ... 

ここでは、コードです。 ありがとうございます。

答えて

3

タイプbuildFormのメソッドでは、buildViewのメソッドで使用する属性を明示的に設定する必要があります。これを行う方法は次のとおりです。

public function buildForm(FormBuilder $builder, array $options) 
{ 
    // Code here 

    $builder->setAttribute('currentRating', $options['currentRating']); 
    $builder->setAttribute('identifier', $options['identifier']); 
} 

public function buildView(FormView $view, FormInterface $form) 
{ 
    $view->set('currentRating', $form->getAttribute('currentRating')); 
    $view->set('identifier', $form->getAttribute('identifier')); 
} 

これはすべきことです。 これが役立つことを願っています。必要とされるbuildViewと呼ばれる配列$オプションに

第三引数が追加されました(https://github.com/symfony/symfony/blob/master/UPGRADE-2.1.md):

よろしく、
マット

0

マットの答え@素晴らしいですが、symfonyの2.1 +を使用して人のためだけの予告したがって、これを追加してください。だから、

あなたがこれを行う2.1 + symfonyのを使用している場合:

public function buildForm(FormBuilder $builder, array $options) 
{ 
    // Code here 

    $builder->setAttribute('currentRating', $options['currentRating']); 
    $builder->setAttribute('identifier', $options['identifier']); 
} 

public function buildView(FormView $view, FormInterface $form, array $options) 
{ 
    $view->set('currentRating', $form->getAttribute('currentRating')); 
    $view->set('identifier', $form->getAttribute('identifier')); 
} 
関連する問題