cakephp1.2 Formのタイプがfileの場合のallowEmptyの動作

これは結構前からチケットとかで指摘されているようなんだけど、現在も直っていない感じ。
直す気が無いのかな?

ファイルのアップロード処理とかで、フォームでfileタイプを選ぶと、そいつに対してallowEmptyのvalidateが全く効きません。
というか、そもそもallowEmptyはfileタイプに使うなって話なんかな。
んー。

しょうがないので、validateを効かせる&通らせようとすると、以下のようになる。
// フォーム名がimageとする

/**
 * beforeValidate 
 * 
 * @access public
 * @return void
 */
function beforeValidate() {
    if (
        isset($this->data['Model']['image']) &&
        isset($this->data['Model']['image']['size']) &&
        $this->data['Model']['image']['size'] === 0
    ) {
        $this->data['Model']['image'] = null;
    }
}
これを該当するモデルに書くか、
app_model.phpに
/**
 * beforeValidate 
 * 
 * @access public
 * @return void
 */
function beforeValidate() {
    foreach ($this->data[$this->name] as $field => $value) {
        if (
            isset($this->data[$this->name][$field ]) &&
            isset($this->data[$this->name][$field ]['size']) &&
            $this->data[$this->name][$field ]['size'] === 0
        ) {
            $this->data[$this->name][$field ] = null;
        }
    }
}
でも良いかもしれん。
(※こっちはまだ試していない)

んー、これは対応して欲しい気もするけど、どうなんだろうか?
そんなに難しそうにも思えないけど。

コメント

アーカイブ

2012

  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12

2011

2010

2009

2008

2007

コンタクト

longkey1[at]gmail[dot]com