Your SlideShare is downloading. ×
0
slywalker フォームメールを生成する プラグイン
アジェンダ <ul><li>自己紹介
DB を使わない Model
フォームメール生成のアプリケーション
アプリケーションをプラグイン化
まとめ </li></ul>
自己紹介 <ul><li>原田 康生
大阪のこっそり PHPer
経歴 水・土・光・風 各属性の職業を経験 プログラム進化ガラパゴス状態のまま開業
所属 株式会社スライウォーカー
ブログ 忍び歩く男  - SLYWALKER http://d.hatena.ne.jp/slywalker/
Wassr, Twitter, Hatenea ID slywalker  </li></ul>
DB を使わない Model <ul><li>DB に保存するわけではないが、 CakePHP の Validation を利用したい!
FormHelper を利用したい! </li></ul>
基本的な設定 <?php class  Sample  extends  AppModel  { public   $name  = 'Sample'; public   $useTable  = false;   ↑   テーブルは使わないな...
そこで、 $_schema  の登場 00045  class   Model   extends   Overloadable   { 00095   /** 00096   * Table metadata 00097   * 00098 ...
例えば、こんな Table なら CREATE TABLE `users` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255)  NOT NULL, `password` va...
$_schema はこんな配列になる var_dump($this->User->_schema); array 'id' =>  array 'type' => string 'integer' (length=7) 'null' => bo...
要するに・・・ <ul><li>DB から Table 情報を読み込んで
Model::$_schema  に記録する
じゃ〜
Table がないなら自分で設定してしまえば OK! </li></ul>
フォームメール生成の App <ul><li>どうせ Model::$_schema を自前で
設定するなら、動的に設定できるように
Model::$validate も同様に
FormHelper 大活躍
オプションを配列で渡せるので便利! </li></ul>
Upcoming SlideShare
Loading in...5
×

CakePHP Kansai 2008-12-12

2,310

Published on

Published in: Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,310
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "CakePHP Kansai 2008-12-12"

  1. 1. slywalker フォームメールを生成する プラグイン
  2. 2. アジェンダ <ul><li>自己紹介
  3. 3. DB を使わない Model
  4. 4. フォームメール生成のアプリケーション
  5. 5. アプリケーションをプラグイン化
  6. 6. まとめ </li></ul>
  7. 7. 自己紹介 <ul><li>原田 康生
  8. 8. 大阪のこっそり PHPer
  9. 9. 経歴 水・土・光・風 各属性の職業を経験 プログラム進化ガラパゴス状態のまま開業
  10. 10. 所属 株式会社スライウォーカー
  11. 11. ブログ 忍び歩く男 - SLYWALKER http://d.hatena.ne.jp/slywalker/
  12. 12. Wassr, Twitter, Hatenea ID slywalker </li></ul>
  13. 13. DB を使わない Model <ul><li>DB に保存するわけではないが、 CakePHP の Validation を利用したい!
  14. 14. FormHelper を利用したい! </li></ul>
  15. 15. 基本的な設定 <?php class Sample extends AppModel { public $name = 'Sample'; public $useTable = false; ↑ テーブルは使わないないよ〜 でも、これだけでは Validation や FormHelper を 使いこなせない !!
  16. 16. そこで、 $_schema の登場 00045 class Model extends Overloadable { 00095 /** 00096 * Table metadata 00097 * 00098 * @var array 00099 * @access protected 00100 */ 00101 var $_schema = null; http://api.cakephp.org/ より
  17. 17. 例えば、こんな Table なら CREATE TABLE `users` ( `id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `active` tinyint(1) NOT NULL, `creaeted` datetime NOT NULL, PRIMARY KEY (`id`) )
  18. 18. $_schema はこんな配列になる var_dump($this->User->_schema); array 'id' => array 'type' => string 'integer' (length=7) 'null' => boolean false 'default' => null 'length' => int 11 'key' => string 'primary' (length=7) 'name' => array 'type' => string 'string' (length=6) 'null' => boolean false 'default' => null 'length' => int 255 'password' => array 'type' => string 'string' (length=6) 'null' => boolean false 'default' => null 'length' => int 255 'active' => array 'type' => string 'boolean' (length=7) 'null' => boolean false 'default' => null 'length' => int 1 'creaeted' => array 'type' => string 'datetime' (length=8) 'null' => boolean false 'default' => null 'length' => null
  19. 19. 要するに・・・ <ul><li>DB から Table 情報を読み込んで
  20. 20. Model::$_schema に記録する
  21. 21. じゃ〜
  22. 22. Table がないなら自分で設定してしまえば OK! </li></ul>
  23. 23. フォームメール生成の App <ul><li>どうせ Model::$_schema を自前で
  24. 24. 設定するなら、動的に設定できるように
  25. 25. Model::$validate も同様に
  26. 26. FormHelper 大活躍
  27. 27. オプションを配列で渡せるので便利! </li></ul>
  28. 28. ハマリポイント!! function edit($id = null) { ・・・ if ($this->data) { // validates の前に set で Model にデータを渡しておく $this->FormMailView-> set ($this->data); if ($this->FormMailView-> validates ()) { if ($this->_send( $formMailForm['FormMailForm']['email'], $formMailForm['FormMailForm']['title'] )) { $this->Session->setFlash(' 送信しました '); $this->render('send'); return; } else { ・・・
  29. 29. ハマリポイント!! function _send($sendTo, $title) { ・・・ // Model::$data をとってくると // FormHelper から渡る配列が // 文字列になっている $data = $this-> FormMailView->data ; ・・・
  30. 30. <ul>GoogleCode にて絶賛公開中 http://code.google.com/p/form-mail-cakephp-plugin/ </ul>
  31. 31. で、このままでは終わりません! プラグイン化 ここから本編
  32. 32. プラグインって使ってますか?
  33. 33. すっ、すごく便利です! <ul><li>むしろ、今まではプラグイン機能の伏線だったのじゃないのか?
  34. 34. CakePHP カンファレンス東京の Garrett の講演でも、今後プラグインに重点がおかれると言っていた。(はず・・・) </li></ul>
  35. 35. 例えば、大規模なものになると… app/ controllers/ as_controller.php bs_controller.php … zs_controller.php models/ a.php b.php … z.php views/ as/ bs/ … zs/
  36. 36. 機能ごとに整理できる! app/ plugins/ ad/ controllers/ ad_as_controller.php ad_bs_controller.php ad_cs_controller.php models/ ad_a.php ad_b.php ad_c.php views/ ad_as/ ad_bs/ ad_cs/ eh/ …
  37. 37. その他にも盛りだくさんの特典 <ul><li>機能ごとに部品化されるので、 他の App でもディレクトリコピーで使える
  38. 38. 機能をまたぐような処理を ついつい書いてしまって Controller が複雑になるのが防げる
  39. 39. もし、機能をまたぐような処理をやるとしても app/controllers/ に書いたらよい
  40. 40. 大規模開発も怖くない! </li></ul>
  41. 41. 詳細は WEB で・・・ <ul><li>Cookbook http://book.cakephp.org/ja/ マニュアル »CakePHP による開発 » プラグイン </li></ul>
  42. 42. 変更点 (DB) Plugin 名 : FromMail <ul><li>Plugin 名 </li><ul><li>form_mail </li></ul><li>テーブル名 </li><ul><li>froms -> form_mail_ forms </li></ul><li>外部キー (忘れがち!) </li><ul><li>form_id -> form_mail_ form_id </li></ul></ul>
  43. 43. 変更点 (Model) Plugin 名 : FromMail <ul><li>ファイル名 </li><ul><li>from.php -> form_mail_ form.php </li></ul><li>モデル名 </li><ul><li>class Form extends AppModel {
  44. 44.
  45. 45. class FromMail Form extends FromMail AppModel { </li></ul><li>アソシエーション ( CookBook のとおりだと、エラーになった) </li><ul><li>public $hasMany = array(’Element’);
  46. 46.
  47. 47. public $hasMany = array( </li><ul><li>'FormMail Element' => array( </li><ul><li>'className' => 'FormMail.FormMail Element', </li></ul><li>) </li></ul><li>); </li></ul></ul>
  48. 48. 変更点 (Controller) Plugin 名 : FromMail <ul><li>ファイル名 </li><ul><li>forms_controller.php
  49. 49.
  50. 50. form_mail_ forms_controller.php </li></ul><li>コントローラ名 </li><ul><li>class FormsController extends AppController {
  51. 51.
  52. 52. class FormMail FormsController extends FormMail AppController { </li></ul><li>コンポーネント、ヘルパー、モデル </li><ul><li>public $components = array('Hoge'); app/controllers/componets/ 以下を呼び出す
  53. 53.
  54. 54. public $components = array(' FormMail. Hoge');
  55. 55. plugins/form_mail/controllers/componets/ 以下を呼び出す </li></ul></ul>
  56. 56. これを忘れないように <ul><li>app_controller.php
  57. 57.
  58. 58. form_mail_ app_controller.php
  59. 59. class AppController extends Controller {
  60. 60.
  61. 61. class FormMail AppController extends App Controller { </li></ul>
  62. 62. これを忘れないように <ul><li>app_model.php
  63. 63.
  64. 64. form_mail_ app_model.php
  65. 65. class AppModel extends Model {
  66. 66.
  67. 67. class FormMail AppModel extends App Model { </li></ul>
  68. 68. まとめ <ul><li>プラグイン機能は十分実用段階にあると思うので、どんどん活用していこう!
  69. 69. 部品化して、再利用を簡単にして、 どんどん楽していこう!
  70. 70. たくさんのモデル・コントローラも
  71. 71. どんとこいっ!
  72. 72. openpear のような、 CakePHP のプラグインを集めたサイトもいいかも! </li></ul>
  73. 73. <ul>みんな! オラに便利なプラグインを わけてくれ! </ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×