0

私はこれを何時間も機能させようとしてきましたが、数え切れないほどのグーグルは何の役にも立ちませんでした。

フォームfileinput内の変数を検証する方法があるかどうか疑問に思いました。したがって、フォーム「upload」のように、upload[name]が空でないことを確認したいと思います。Cakephpのモデル検証でこれを行うことはできますか?

4

2 に答える 2

5

Cakephpにはfileinputフィールドを検証する方法はありません。

以下の例のようなカスタム検証ルールによってそれを行うことができます

ビューファイル用

<?php
    echo $this->Form->file('image');
    echo $this->Form->error('image');
?>

モデルファイルの場合

<?php
    public $validate = array(
        'image' => array(
            'rule' => array('chkImageExtension'),
            'message' => 'Please Upload Valid Image.'
        )
    );



    public function chkImageExtension($data) {
       $return = true; 

       if($data['image']['name'] != ''){
            $fileData   = pathinfo($data['image']['name']);
            $ext        = $fileData['extension'];
            $allowExtension = array('gif', 'jpeg', 'png', 'jpg');

            if(in_array($ext, $allowExtension)) {
                $return = true; 
            } else {
                $return = false;
            }   
        } else {
            $return = false; 
        }   

        return $return;
    }   
?>
于 2012-11-23T07:00:38.923 に答える
0

@SunmanSinghの答えはもう真実ではありません。

static Validation::extension(mixed $check, array $extensions = array('gif', 'jpeg', 'png', 'jpg'))

.jpgこのルールは、またはのような有効なファイル拡張子をチェックします.png。フォームでそれらを渡すことにより、複数の拡張子を許可しますarray

public $validate = array(
  'image' => array(
    'rule' => array(
          'extension',
           array('gif', 'jpeg', 'png', 'jpg')
      ),
      'message' => 'Please supply a valid image.'
  )
);

static Validation::fileSize($check, $operator = null, $size = null)

このルールを使用すると、ファイルサイズを確認できます。使用$operatorする比較のタイプを決定するために使用できます。でサポートされているすべての演算子は、comparison()ここでもサポートされています。このメソッドは、がであり、そのキーが含まれている場合、キー$_FILESから読み取ることにより、 から配列値を自動的に処理します。tmp_name$checkarray

public $validate = array(
  'image' => array(
      'rule' => array('fileSize', '<=', '1MB'),
      'message' => 'Image must be less than 1MB'
  )
);

参考のために以下のリンクを参照してください。とはいえ、セキュリティを強化するために独自の関数を作成することをお勧めしますが、それらは確かに時間を節約できます

http://book.cakephp.org/2.0/en/models/data-validation.html#Validation::extension

于 2016-09-28T15:57:30.503 に答える