質問: View::forge('contents/csv'); $this->template->set_global('csvform', $form->build(''), false); $this->template->set_global('form_data', $form_data); } } ``` ### 試したこと `type="file"`の代わりに`type="text"`の項目にした場合は、テキストボックスに入力してsubmitするとバリデーションOKの処理に入れました。
回答: Validationクラスではなく、Uploadクラスのis_validメソッドを使うことで解決しました。 ・FuelPHP Uploadクラスのドキュメント http://fuelphp.jp/docs/1.8/classes/upload/usage.html 具体的には、`add_rule('required')`をフィールドに付与するのをやめて、バリデーションの判定条件を`Upload::is_valid()`がtrueであることにしました(下記コード★の箇所)。 ``` //フォームに項目を追加(type="file"と"submit"のみ) $form->add('csvfile', '', array('type'=>'file', 'placeholder'=>'CSVファイル')); //->add_rule('required'); //(★)削除 $form->add('submit', '', array('type'=>'submit', 'value'=>'アップロード')); //POST送信された場合 if(Input::method() === 'POST') { //$val = $form->validation(); //(★)削除 //バリデーションチェックOKの場合 //if($val->run()) (★)削除 if(Upload::is_valid()) //(★)追加 { var_dump('OK'); //バリデーションチェックNGの場合 } else { var_dump('NG'); } } ``` Validationクラスのような警告は出せませんが、Sessionクラスのset_flashメソッドでエラーメッセージをViewに渡して表示する対応にて代替することにします。