CakePHPで普段使っているpluginをまとめてみた

2010年を振り返る意味で、自分がCakePHPで開発する際に良く使うプラグインをまとめてみました。
誰かのお役に立てれば幸いです。
1.cakeplus
■ よく使うバリデーションをまとめたBehaviorであるadd_validation_rule
モデルでバリデーションする際に本当に使います。
var $validate = array(
'hoge' => array(
"rule1" => array('rule' => array('katakana_only'),
'message' => 'hogeにカタカナ以外が含まれています'
),
),
);
■ 自動でhiddenタグを生成するヘルパーformhidden
確認画面を挟む際にhiddenに入力情報をまとめて出力してくれます。
echo $formhidden->hiddenVars();
このプラグインを知ってから、CakePHPで作ったサイトには全て組み込んでいるぐらい必須のプラグインです。
フォームを作成する際にはもう手放せません。
2.XformHelper
フォーム入力画面と確認画面で共通で使えるヘルパーです。
確認画面を作る際に、確認画面用のviewを作らなくてもよいので大変便利に使わせてもらってます。
例えば、こんなviewをelementに作ったとします。
echo 'タイトル:';
echo $xformjp->input('Post.title');
そうすると、入力画面と確認画面のviewから このelementを読み込むだけで、
・入力画面ではフォームを表示
・確認画面では入力されたテキストを表示
を自動的に切り替えてくれる素敵仕様になっています。
これもまず手放せないプラグインとなっています。
3. cakephp-commentor-plugin
コメントを表示するプラグインです。
投稿はajaxで出来るようになっているので、組み込みも簡単です。
コメントスパム対策プラグインであるAkismetや、連続投稿の防止、IP制限など様々なスパム対策が施されています。
使う時はこんな感じでelementを組み込むだけです。
//投稿済みのコメント一覧を表示します
echo $this->element('comments/index', array(
'plugin' => 'commentor',
'commentParent' => $commentParent,
));
//投稿フォームを表示します
echo $this->element('comments/add', array(
'plugin' => 'commentor',
));
4. debug_kit
言わずと知れた最強デバッガー。
POSTやViewへ渡した変数の出力やSQLの表示など、必要な情報をブラウザで確認できるようになります。
これはコンポーネントにプラグインを指定するだけで使えるようになります。
var $components = array('DebugKit.Toolbar');
5. MeioUpload Behavior
画像のアップロードビヘイビア。
プラグイン使用時に画像のフォーム名を指定して、
WWWROOTの下にモデル名 / カラム名 のフォルダを作成すると、該当箇所に勝手にアップロードしてくれます。
リサイズのサイズ設定も初期値を設定してあげるだけで自動的によしなにしてくれます。
var $actsAs = array(
'Meioupload.MeioUpload' => array(
'image' => array(
'thumbsizes' => array(
//サムネイルのサイズをここで指定します。
'large' => array('width'=>450, 'height'=>450, 'zoomcrop'=>null),
),
),
),
);
MediaPluginという高機能なファイルアップローダーもあるのですが、画像ファイルだけ上げれば良い場合にはこっちを使う事が多いです。
6. qdmail
PHP高機能日本語メール送信ライブラリ。
メール送信の際はもうこれで良いでしょう的な最強メールClass。
コンポーネントととして利用する場合には、初期値をよしなにしてくれるプラグインcakephp-qdmailerは必須です。
以下はQdmailerを使用したサンプル
$this->Qdmailer->to( "送信先メールアドレス" );
$this->Qdmailer->subject("サブジェクト");
$this->Qdmailer->from( "送信者のメールアドレス" );
//メール本文はelementを使用
$this->Qdmailer->cakeText( $this->data, 'element名', 'default');
//送信処理
if (!$result = $this->Qdmailer -> send()) {
//メール送信時にエラーが発生した場合にログを出力
$message = print_r($this->Qdmailer->errorStatment(false),true);
$this->log($message);
$this->log($this->data);
}
7. multibox_validation
チェックボックスをグループとして扱うためのビヘイビア。
チェックボックスのチェック数をバリデートできるようになります。
例えば、1個以上、4個以下のチェックの場合にエラーを発生させるような動作なんかに使います。
var $actsAs = array(
'MultiboxValidation' => array(
'name' => 'house',
'min' => '1',
'max' => '4',
'message'=>'1から4個の範囲でチェックしてください'
),
);
データはシリアライズされて格納されるのでなかなか便利です。
8. MultivalidatableBehavior
Validationの必須ルールを動的に変更します。
データ登録時と編集時でバリデーションが違ったり、同じModelでもページ毎にバリデーションが違う場合なんかに良く使います。
function register() {
$this->User->setValidation('register');
//登録時にのみチェックするバリデーションに変更します。
}
function password() {
$this->User->setValidation('changePassword');
//パスワード変更時にのみチェックするバリデーションに変更します。
}
9. OrderedBehavior
並び順を指定したり変更する事ができます。
idを指定するだけで、一つ上(下)のデータと順番を入れ替える事ができます。
//一つ上に移動する場合 $this->ModelName->moveup($id); //一つ下に移動する場合 $this->ModelName->movedown($id);
※bakeryの記事からバージョンが上がっているようです。
リンク先の一番下のコメントに最新版へのリンクがあります。
10. csv Datasource
データベースが使えない場合や、管理更新はCSVを使うと言う場合に重宝します。
CSVを使ったfind、ページングができるようになっています。
$conditions = array(
"id >" => 10,
"status" => 1
);
$conditions = array(
"or" => array(
"id <=" => 10,
"status" => 1
)
);
最後に
CakePHPは最早枯れたフレームワークになって来ていると思います。
もっと便利になるように、みんなで使い倒しましょう。
他にも便利なプラグインがあれば教えてください!
最新情報をお届けします
