2011-07-19 12 views
0

私はしばらくの間、回答をブラウズしてきましたが、私はここで質問をしました。私はいくつかのSFフォームを使用していますが、何らかの理由でこれをやりたくないのです。私は過去に間違いなく間違いなく見落としてしまったことについて、私は幸運を祈っています。ここでSymfony 1.4フォームバインディングの問題

はスキーマです:

public function configure() 
{ 

    //widgets 
    $this->setWidgets(array(
    'study_area' => new sfWidgetFormSelect(array('label' => 'Select Study Area', 'choices' => self::study_areas())), 
    'degree_level' => new sfWidgetFormSelect(array('label' => 'Select Degree Level', 'choices' => self::degree_levels())), 
    'campusonline' => new sfWidgetFormSelectRadio(array('choices' => self::campus_online(), 'class' => 'radiolabel')), 
    'zip' => new sfWidgetFormInputText(array('label' => 'Zip code:')), 
)); 

    //validators 
    $this->setValidators(array(
    'study_area' => new sfValidatorString(array('required' => true)), 
    'degree_level' => new sfValidatorString(array('required' => true)), 
    'campusonline' => new sfValidatorString(array('required' => true)), 
    'zip'   => new sfValidatorString(array('required' => 'Please enter a valid zip.')), 
)); 

    //formatting, default values, name format, etc 
    $this->getWidgetSchema()->getFormFormatter()->setRowFormat('%label%%error%%field%%help%%hidden_fields%'); 
    $this->setDefaults(array('study_area' => '', 'degree_level' => '', 'campusonline' => 1)); 
    $this->getWidgetSchema()->setLabel('campusonline', false); 
    $this->errorSchema = new sfValidatorErrorSchema($this->validatorSchema); 
    $this->validatorSchema['zip'] = new sfValidatorZip(array('required' => true)); 

} 

そして、ここではアクションです:

$this->form = new SearchWidgetForm(); 

if ($request->isMethod('post')) 
{ 
    $this->form->bind($request->getParameter('searchwidget')); 

    if ($this->form->isValid()) 
    { 
    $this->redirect('@search_widget'); 
    } 
    else 
    { 
    print 'nope'; 
    $this->form->debug(); 
    var_dump($request->getParameter('searchwidget')); 
    die; 
    } 
} 

そして、ここではそのelseから得られるものです:

nope 
study_area: Required. 

degree_level: Required. 

campusonline: Required. 

zip: Required. 

_csrf_token: Required. 

null 

私もことを確認していますvar_dump($this->form->isBound());は「真」を生成します。したがって...フォームはバインドされていますが、配列はnullになります。

アイデア?

ご協力いただきありがとうございます。とても感謝しております。

答えて

1

私はここで推測していますが(少しでもsf1.xを使用していない)、おそらくフォーム名の形式を設定する必要がありますか?あなたの最初のコードスニペットの最後のコメントでそれを言及していますが、実際の行は表示されません。

$this->widgetSchema->setNameFormat('searchwidget[%s]'); 
+0

あなたには何かがあります。私は名前フォーマットを追加しましたが、現在はバインドされていますが、名前フォーマットが問題を引き起こしているので、私の検索機能では動作しません。奇妙なことは、ちょうど3日前に作った書式に名前の書式は必要ないということです。私は違いが何であるのだろうか?とりあえずありがとう!私は今、正しい方向に少なくとも... –

+0

こんにちは。問題はありません。別の推測をする:)その行がなければ、 '$ request-> getParameter( 'search-widget');'にバインドすると思います。これを確認する最も簡単な方法は、フォームのHTMLソースを見て、タグ名が 'または' "など。 –

関連する問題