Your browser (Internet Explorer 6) is out of date. It has known security flaws and may not display all features of this and other websites. Learn how to update your browser.
X
Post

Zend_File_Transferのファイル必須チェックについて

前の記事に続いてZend Frameworkネタです。
My_Form_Fileでバリデーションを実行する際の必須チェックについての話です。


My_Form_FileでisValidによりバリデーションを実行する際、
Zend Framework側で設定したバリデーションを実行する前に
ファイルアップロード自体に問題がないかエラーチェックを行います。

PHP: エラーメッセージの説明 – Manual

この中でUPLOAD_ERR_NO_FILEは
ファイルのアップロードがされていない時のエラーコードであり、
ファイルアップロードが必須でないケースの場合には
このエラーコードが検出されても通過させる必要があります。

しかし、Zend Frameworkではこのエラーコードもチェックし、エラーを返します。
このケースのみ除外するようなオプション指定などもできない模様。

つまり、空欄を許可する運用想定だったとしても、
ファイルがアップロードされていないとエラーになるようになっています。


これに対する対応方法として、
ファイルがアップロードされていなければisValidを実行しないというものがあります。
しかし、ファイルが必須なケースの場合には実行する必要があり、
それをクラス外のisValid呼び出し有無で制御するのも分かりにくくなります。

という事で、自分が考えた対応方法は次のようなものです。


・ファイルが存在するかチェックするバリデータを作成する
(Zend Frameworkには標準ではついていない)
・ファイル存在チェックが設定されており、
 かつUPLOAD_ERR_NO_FILEである時はisvalidを呼び出さない。
 それ以外の場合にはisValidを呼び出す。
・これらの判定制御はMy_Form_File内で行い、
 クラス外からは存在チェックのバリデータを追加するのみでよい。


こちらも次回更新までに対応します。

TrackBack URL :

Leave a comment  

name

email

website

Submit comment