シェアする

  • このエントリーをはてなブックマークに追加

[CakePHP]Article-Pluginを作ってみる1(プラグインをbakeする)

happyquality/CakePHP-Article-Plugin ? GitHub

プラグインをbakeから作成する方法です。

2013-02-02追記
Articleプラグインにはコントローラやビューはありません。

プラグインのベースファイルをbakeする

プラグインの作成を手作業でやろうとすると、ディレクトリや基本ファイルを作成するのが手間ですが、ここはbakeでサクッとやってしまいましょう。

Articleという名前のプラグインをbakeするにはlib/Cake/Console/cakeにパスを通したコンソールで

cake bake plugin Article

でOKです。

Welcome to CakePHP v2.2.4 Console
---------------------------------------------------------------
App : app
Path: /var/www/html/project/app/
---------------------------------------------------------------
1. /var/www/html/project/app/Plugin/
2. /var/www/html/project/plugins/
Choose a plugin path from the paths above.  

すると上記のようにプラグインを作成する場所を聞かれるので、1または2をタイプしてEnterで場所を指定します。

---------------------------------------------------------------
Plugin Name: Article
Plugin Directory: /var/www/html/project/app/Plugin/Article
---------------------------------------------------------------
Look okay? (y/n/q) 

最後に「これでいいか?」と聞かれるのでyをタイプしてEnterで確定します。

プラグインのモデルやコントローラ、ビューをbakeする

プラグインの中でモデルやコントローラ、ビューもbakeで作成することができます。

プラグインのモデルをbakeする

データベースにarticlesというテーブルがあるとして、このテーブルのモデルを作成するには

cake bake model Article.Article

または、

cake bake model -p Article

でbakeすることができます。

前者の方法だと、データベースやバリデーション、アソシエーションを指定することはできませんが、後者の方法ではこれらを指定してbake(インタラクティブなbake)できるので、後者を使ったほうがよいでしょう。

プラグインのコントローラをbakeする

コントローラやビューのbakeでも2通りのbakeの仕方がありますが、インタラクティブなbakeを行うことにします。

cake bake controller -p Article

このとき私の環境では

Fatal Error Error: Class 'AppController' not found in [/var/www/html/whiskey/app/Plugin/Article/Controller/ArticleAppController.php, line 3]

のようなエラーが表示されました。

AppControllerクラスが見つからないというエラーなのですが、モデルのbakeでは起こらなかったので、環境依存の問題なのかもしれません。

このエラーを防ぐには、プラグインのbakeで作成された/Plugin/Article/Controller/ArticleAppController.phpの行頭に以下の1文を追加するとエラーが出なくなります。

App::uses('AppController', 'Controller');

プラグインのビューをbakeする

ビューもコントローラやモデルと同じようにbakeできます。のでコマンドは省略しますね。

あとがき

たしかCakePHPの1系の頃はプラグインのbakeが対応していなかったので、プラグインを作成するのに随分苦労して断念したこともあったような・・・。*[1]

でもbakeなら簡単にプラグインのベースが作れて便利ですね。

私の場合はWEBシステムを作ることが多いので、お問い合わせやFAQをプラグインにして使いまわしています。

あと、個人的にはアフィリエイトのAPIを扱う機能やWikipediaから文章を取得する機能などをプラグインにして、BuzztTel.comとか座右の銘語録などのサイトで使ったりしています。

プラグインにしておくと、再利用できるのはもちろんですが複数のサイトで利用している機能を、まとめてメンテナンスできるのも利点です。

他にも、大きくなりすぎたプロジェクトを機能ごとにプラグインに切り分けることで、ファイルの見通しを良くするというような使い方もできます。

ちょっと昔の資料になりますがSLYWALKERさんのプラグイン3段活用というスライドがとても参考になりますので必見です。

  1. ディレクトリやファイル名、クラス名が間違っていたのかうまく動かなかった []

シェアする

  • このエントリーをはてなブックマークに追加

フォローする