CakePHP2の画像アップロードプラグイン「UploadPack」を試してみた

CakePHP2の画像アップロードプラグイン「UploadPack」を試してみた

こんにちは! CakePHP2の画像プラグインを色々試しているので今回は「UploadPack」というのを試してみました。 いってみましょう!!

CakePHP2とUploadPackをインストール、有効化

インストールからしましょう。 Composerでインストールしたいのですが「UploadPack」はCompserに対応していないため、git submodule などでインストールするといいかもしれません。

composer.json

{
    "name": "uploadpack-example",
    "repositories": [
    {
        "type": "pear",
        "url": "http://pear.cakephp.org"
    }
    ],
    "require": {
        "pear-cakephp/cakephp": "2.4.*",
        "cakephp/debug_kit": "2.2.*"
    }
}

とりあえずCakePHPが動くように設定していきましょう。 以前まとめたのでこちらをご覧下さい。

CakePHP2をComposerでインストールしてプロジェクトを立ち上げるまで

プロジェクトが立ち上がったらgit submoduleでインストールしましょう。

$ git submodule add https://github.com/szajbus/uploadpack.git Plugin/UploadPack

最後にbootstrap.phpにプラグインを読み込むように書き込みましょう。

Config/bootstrap.php

CakePlugin::load('UploadPack');

これで有効化出来ました。

UploadPackの設定

実際にコードを書いていきます。

UploadPackでは_file_nameというものがついているフィールドに画像情報を保存するのでテーブル内に_file_nameがついたフィールドを用意しましょう。

CREATE table users (
    id int(10) unsigned NOT NULL auto_increment,
    login varchar(20) NOT NULL,
    avatar_file_name varchar(255)
);

Userモデルに対してコードを書いていきます。

Model/User.php

 [
            'avatar' => [
                'styles' => [
            'thumb' => '80x80'
        ]
            ]
        ]
    ];
}

アップロード処理をControllerに書いていきます。といってもデータを普通に保存するような形で構いません。

Controller/UsersController.php

request->is('post'){
            $this->User->create($this->request->data);
            if($this->User->save()){
                $this->Session->setFlash('image upload!');
            }
        }
    }
}

あとはViewです。「UploadPack」にはhelperがついているのでそこから呼び出しましょう。(Controllerでhelperを読み込んでます。6行目)

View/Users/index.ctp

Upload->uploadImage($user, 'User.avatar', array('style' => 'thumb')) ?>

これで動きますー! 80×80の画像が生成されたと思います。

最後に

データベースのフィールドに制約があるものの、ヘルパーもついていてとても簡単に画像アップロードが実装出来るのでおすすめのプラグインです。 composerに対応してくれるともっと嬉しいなーってプルリク送れってことですねすみません!

安藤 祐介 岸田 健一郎 新原 雅司 市川 快 渡辺 一宏 鈴木 則夫
技術評論社
売り上げランキング: 30,585