2011-01-05 9 views
0

私はCSVファイルをアップロードするためのフォームを持っています。これは、区切り文字とCSVファイルを要求します:検証でZend_Form入力を使用

public function init() 
    { 
     $this->setName('UploadCsvForm'); 

     $delimiter = new Zend_Form_Element_Text('delimiter'); 
     $delimiter->setLabel('Delimiter') 
        ->setValue(',') 
        ->setAttrib('size', 2); 

     $csv = new Zend_Form_Element_File('csvFile'); 
     $csv->setLabel(
      'Pick a CSV file to upload') 
      ->setRequired(true) 
      ->addValidator('Count', false, 1) 
      ->addValidator('Extension', false, 'csv') 
      ->addValidator('Size', false, 102400) 
      ->setDestination('/tmp'); 

     $submit = new Zend_Form_Element_Submit('submit'); 
     $submit->setLabel('Upload bestand'); 

     $this->addElements(array($delimiter, $csv, $submit)); 
    } 

私はがZend_Validate_Abstractを拡張するカスタムCSV検証ファイルを、持っています。それは動作しますが、私は入力されたフォームCSVファイルをそれで検証することができます。 このようなものを追加できますが、$区切り文字はまだ設定されていないため動作しません。

->addValidator(new Custom_Validate_Csv(array('name', 'postcode'), $delimiterString), false) 

おかげさまで

答えて

2

Zend_Formがその要素に対してisValid()を呼び出すと、それは全てフォームの値を含む第二のパラメータ$contextを渡します。

public function isValid($value, $context) 
{ 
    $delimiter = $context['delimiter']; 

    // continue with your validation using the delimeter 
    // ... 
} 

だから、あなたのカスタムバリデータでは、isValid()方法は次のようになります。

関連する問題