メモ:CakePHP / UploadPackのトラブルシューティング

私的なメモです。 CakePHPの画像アップロード&リサイズ用プラグイン「UploadPack」について。 プラグインの導入に関しては、ググれば詳しく書いてる人が居るのでそちらを参考にしてください。

 

Helperのエラーが出る場合

ビューのフォームで、フィールド名の設定が間違ってないか確認。 DBのフィールド名を「image_file_name」にしている場合は、「_file_name」を外して「image」と設定しなければいけません。 たとえば、Userモデルのimage_file_nameに設定したい場合の設定は下記になります。

<?php eecho $this->Form->input('User.image', array('label' => 'メイン画像', 'type' => 'file')); ?>

 

Strict (2048):エラーが出る場合

ビューのフォームで、「type」の設定が抜けてないか確認。

<?php echo $this->Form->create('Image', array('type' => 'file')); ?>

 

画像がアップロードされない場合

アップロード先のディレクトリがあるかどうか、そのディレクトリのアクセス権限は777になっているか確認。

デフォルト画像の設定方法が分からない / サムネイルのデフォルト画像も設定したい

公式のドキュメントは少し分かりづらいですが、画像保存先設定と同じくUploadPackの書き方でパスを設定します。 たとえば、「/upload/モデル名/」に、「default_original.jpg」「default_thumb.jpg」…などとサイズが異なるスタイルごとのデフォルト画像を設置して表示させたい場合は、下記のように設定します。

var $actsAs = array(
 'UploadPack.Upload' => array(
  'avatar' => array(
   'default_url' => ':webroot/upload/:model/default_:style.jpg'
  )
 )
);

 

ヘルパーで画像を表示できない

最近のバージョンでは、ヘルパーで画像表示に使う関数名が変更になっています。

<?php echo $this->upload->image($image['Image'], 'Image.img', array('style' => 'small')) ?>

変更後

<?php echo $this->uploadImage->image($image['Image'], 'Image.img', array('style' => 'small')) ?>

 

オリジナル画像へのリンク付きサムネイル画像を表示させたい

uploadLink()を使っても良いですが、面倒なので僕はヘルパーに関数を追加しました。uploadImageと同じ書き方で、関数名をuploadImageLinkに変えるだけです。 まず、UploadHelper.phpを開いて関数を追加します。

public function uploadImageLink($data, $path, $options = array(), $htmlOptions = array()){
 $options += array('urlize' => false);
 return '<a href="'.$this->uploadUrl($data, $path, array('style' => 'original')).'" target="_blank">'.$this->output($this->Html->image($this->uploadUrl($data, $path, $options), $htmlOptions)).'</a>';
}

ビューに下記の様に書けば、オリジナル画像へのリンク付きサムネイル画像が作成されます。

<?php echo $this->upload->uploadImageLink($image['Image'], 'Image.img', array('style' => 'thumb')) ?>