私はこれを何時間も機能させようとしてきましたが、数え切れないほどのグーグルは何の役にも立ちませんでした。
フォームfileinput内の変数を検証する方法があるかどうか疑問に思いました。したがって、フォーム「upload」のように、upload[name]が空でないことを確認したいと思います。Cakephpのモデル検証でこれを行うことはできますか?
私はこれを何時間も機能させようとしてきましたが、数え切れないほどのグーグルは何の役にも立ちませんでした。
フォームfileinput内の変数を検証する方法があるかどうか疑問に思いました。したがって、フォーム「upload」のように、upload[name]が空でないことを確認したいと思います。Cakephpのモデル検証でこれを行うことはできますか?
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;
}
?>
@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
$check
array
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