1

Web アプリケーションで使用しているモデルのUploaderプラグインを使用しようとしています。ここに示すように、名前を付けた構成で使用しました。BehaviorUserfilename

<?php
class Avatar extends AppModel {
    public $name = 'Avatar';
    public $actsAs = array (
        'Uploader.Attachment' => array (
            'filename' => array (
                'name'        => 'setNameAsImgId',
                'saveAsFilename' => true,
                'uploadDir'    => '/files/avatars/160/',
                'dbColumn'    => 'filename',
                'defaultPath'    => 'default.png',
                'maxNameLength'    => 20,
                'overwrite'    => true,
                'stopSave'    => true,
                'allowEmpty'    => false,
                'transforms'    => array (
                    array('method' => 'resize', 'width' => 160, 'height' => 160, 'dbColumn' => 'filename', 'append' => false, 'overwrite' => true)
                )
            )
        )
    );
// and so on...
?>

この構成では、ファイルをフォルダーに保存します。このフォルダーには、コントローラー/files/avatars/160を介してこの方法でサイズが 160 ピクセルのすべての画像が保存されます。Users

<?php
class UsersController extends AppController {

public function add () {
    if ($this->User->Avatar->save($this->request->data)) {
        // do some code...
    }
}

ビューaddに次のコードを挿入して、ファイルをアップロードします。

echo $this->Form->input('Avatar.filename', array('type' => 'file', 'label'=>'Upload the avatar '));

上の例のように名前を付けた構成を 1 つだけ保存すると、これはうまく機能しますfilename。私の問題は、同じ画像の異なるサイズとトリミングを保存する必要があることです。そのため、次のようなサイズのリストを保存したいと思います。

/files/avatars/160/filename.jpg
/files/avatars/48/filename.jpg

Avatarこれを行うために、モデルに別の構成を追加することを考えました

<?php
class Avatar extends AppModel {
    public $name = 'Avatar';
    public $actsAs = array (
        'Uploader.Attachment' => array (
            'filename' => array (
                'name'        => 'setNameAsImgId',
                'saveAsFilename' => true,
                'uploadDir'    => '/files/avatars/160/',
                'dbColumn'    => 'filename',
                'defaultPath'    => 'default.png',
                'maxNameLength'    => 20,
                'overwrite'    => true,
                'stopSave'    => true,
                'allowEmpty'    => false,
                'transforms'    => array (
                    array('method' => 'resize', 'width' => 160, 'height' => 160, 'dbColumn' => 'filename', 'append' => false, 'overwrite' => true)
                )
            ),
            'small' => array (
                'name'        => 'setNameAsImgId',
                'saveAsFilename' => true,
                'uploadDir'    => '/files/avatars/48/',
                'dbColumn'    => 'filename',
                'defaultPath'    => 'default.png',
                'maxNameLength'    => 20,
                'overwrite'    => true,
                'stopSave'    => true,
                'allowEmpty'    => false,
                'transforms'    => array (
                    array('method' => 'resize', 'width' => 48, 'height' => 48, 'dbColumn' => 'filename', 'append' => false, 'overwrite' => true)
                )
            )
        )
    );
// and so on...
?>

UsersControllerで同じ画像の複数のクロップを保存するには、 をどのように設定すればよいAvatarですか? addビューを変更して機能させる必要がありますか?フォームで複数の入力ファイルを使用しません。

4

1 に答える 1