SlideShare a Scribd company logo
Customize 
bake 
CakePHP 2. 5.* 
mode-A Ltd. 
Kazuyuki AOKI
自己紹介 
有限会社 モード・エー 代表取締役社長 
PHP歴 12年 
CakePHP歴 7年 
旅行関連のシステム受託開発
開発事例 
スカイツアーズ様 
ツーリズムエキスポジャパン様 
など
Plugin & view blocks 
bakeする際にプラグインやビューブロックを 
反映したカスタマイズ・テンプレートを作成 
して楽をしたい。
準備 1: composer.json 
"require": { 
"cakephp/cakephp": "2.5.*", 
"cakedc/utils": "1.4.*", 
"cakedc/search": "2.5.*", 
"twitter/bootstrap": "3.3.*", 
"slywalker/boost_̲cake": "1.0.*", 
}
準備 2: テンプレート 
コピー元: 
Vendor/cakephp/cakephp/lib/Cake/Console/Templates/default 
コピー先: 
app/Console/Template/◯◯◯ 
コピーされるフォルダ 
actions classes views
準備3:ビューブロック 
設定場所:app/View/index.ctpなど 
(専⽤用フォルダを⽤用意しても良良いかも。) 
※デザインのテンプレートになる。
編集 1: model テンプレート 
対象ファイル: 
app/Console/Template/◯◯◯/classes/model.ctp 
サーチプラグイン対応: 
$actsAs = array_̲merge($actsAs,array('Search.Searchable'));//サーチプラグインのビヘイバー 
if (!empty($actsAs)): 
最終⾏行行直前に追加 
//サーチプラグイン対応 
$modelObj = ClassRegistry::init($name); 
if ($modelObj) { 
$schema = $modelObj-‐‑‒>schema(true); 
$fields = array_̲keys($schema); 
} else { 
$fields = $schema = $associations = array(); 
} 
echo "public $filterArgs = array(n"; 
foreach ($fields as $value) { 
if ($value=='id') { 
echo "'$value' => array('type' => 'value'),n"; 
} else { 
echo "'$value' => array('type' => 'like'),n"; 
} 
} 
echo "'keyword' => array('type' => 'like', 'field' => array('field1', 'field1')),n"; 
echo ");nn";
編集 2: view テンプレート 
対象ファイル: 
app/Console/Template/◯◯◯/views/index.ctp 
など 
※ビューブロックを拡張指定する。 
<?php 
$this-‐‑‒>extend(ʻ‘/index'); 
※ビューブロックに渡すデータを設定する。
編集 3: controller テンプレート 
対象ファイル: 
app/Console/Template/◯◯◯/classes/controller.ctp 
※サーチプラグイン対応 
□冒頭に追記 
$components = array_̲merge($components,array(ʻ‘Search.Prgʼ’)); 
□components展開後に記述 
echo " public $presetVars = true;";
編集 4: actions テンプレート 
対象ファイル: 
app/Console/Template/◯◯◯/actions/controller_̲actions.ctp 
※サーチプラグイン対応 
□function index 内に追加 
$this-‐‑‒>Prg-‐‑‒>commonProcess(); 
$this-‐‑‒>paginate = array( 
'conditions' => $this-‐‑‒><?php echo $currentModelName ?>-‐‑‒>parseCriteria($this-‐‑‒>passedArgs), 
'order'=>'<?php echo $currentModelName ?>.id ASC' 
);
実例例 
ビューブロックのindex.ctp 
テンプレートのindex.ctp 
テンプレートを指定したbake 
./Console/cake bake -‐‑‒t modea 
焼きあがった index.ctp 
焼きあがった model
ありがとうございました。

More Related Content

What's hot

behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方
Ryo Tomidokoro
 
Cakephp tokyo5
Cakephp tokyo5Cakephp tokyo5
Cakephp tokyo5ichikaway
 
Chefで作る開発環境
Chefで作る開発環境Chefで作る開発環境
Chefで作る開発環境
regret raym
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみた
Takeo Noda
 
FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード
kenjis
 
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみたAlfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
Tasuku Otani
 
Spring bootでweb バリデート編
Spring bootでweb バリデート編Spring bootでweb バリデート編
Spring bootでweb バリデート編
なべ
 
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
Kousuke Ebihara
 
Cake php + php unitによる実践的ユニットテスト
Cake php + php unitによる実践的ユニットテストCake php + php unitによる実践的ユニットテスト
Cake php + php unitによる実践的ユニットテスト慶信 若松
 
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしようAlfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Tomomi Kawabe
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUp
Kenichi Mukai
 
Ruby on Rails Tutorial
Ruby on Rails TutorialRuby on Rails Tutorial
Ruby on Rails Tutorial
Ken Iiboshi
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
Play!30分クッキング
Play!30分クッキングPlay!30分クッキング
Play!30分クッキング
Shinichi Kozake
 
PHP7検証@IDCFクラウド
PHP7検証@IDCFクラウドPHP7検証@IDCFクラウド
PHP7検証@IDCFクラウド
Kouhei Ohi
 
Webサーバ勉強会#1_prefork_8-15
Webサーバ勉強会#1_prefork_8-15Webサーバ勉強会#1_prefork_8-15
Webサーバ勉強会#1_prefork_8-15
mashan94
 
Cake Phpで簡単問い合わせフォームの作り方
Cake Phpで簡単問い合わせフォームの作り方Cake Phpで簡単問い合わせフォームの作り方
Cake Phpで簡単問い合わせフォームの作り方
柴田 篤志
 
React入門-JSONを取得して表示する
React入門-JSONを取得して表示するReact入門-JSONを取得して表示する
React入門-JSONを取得して表示する
regret raym
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニックmiso- soup3
 

What's hot (20)

behatエクステンションの作り方
behatエクステンションの作り方behatエクステンションの作り方
behatエクステンションの作り方
 
Cakephp tokyo5
Cakephp tokyo5Cakephp tokyo5
Cakephp tokyo5
 
Chefで作る開発環境
Chefで作る開発環境Chefで作る開発環境
Chefで作る開発環境
 
Gaej Explorer
Gaej ExplorerGaej Explorer
Gaej Explorer
 
Laravel5を使って開発してみた
Laravel5を使って開発してみたLaravel5を使って開発してみた
Laravel5を使って開発してみた
 
FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード FuelPHPでのファイルアップロード
FuelPHPでのファイルアップロード
 
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみたAlfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
Alfresco勉強会#33 alfresco 5.1でコンテンツ自動削除を実装してみた
 
Spring bootでweb バリデート編
Spring bootでweb バリデート編Spring bootでweb バリデート編
Spring bootでweb バリデート編
 
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
XML と PHP のイケナイ関係 (セキュリティ的な意味で) -Introduction of XXE attack and XML Bomb with...
 
Cake php + php unitによる実践的ユニットテスト
Cake php + php unitによる実践的ユニットテストCake php + php unitによる実践的ユニットテスト
Cake php + php unitによる実践的ユニットテスト
 
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしようAlfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
Alfresco勉強会#30 alfrescoとshareのJavaScriptをデバッグしよう
 
第21回Creators MeetUp
第21回Creators MeetUp第21回Creators MeetUp
第21回Creators MeetUp
 
Ruby on Rails Tutorial
Ruby on Rails TutorialRuby on Rails Tutorial
Ruby on Rails Tutorial
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
Play!30分クッキング
Play!30分クッキングPlay!30分クッキング
Play!30分クッキング
 
PHP7検証@IDCFクラウド
PHP7検証@IDCFクラウドPHP7検証@IDCFクラウド
PHP7検証@IDCFクラウド
 
Webサーバ勉強会#1_prefork_8-15
Webサーバ勉強会#1_prefork_8-15Webサーバ勉強会#1_prefork_8-15
Webサーバ勉強会#1_prefork_8-15
 
Cake Phpで簡単問い合わせフォームの作り方
Cake Phpで簡単問い合わせフォームの作り方Cake Phpで簡単問い合わせフォームの作り方
Cake Phpで簡単問い合わせフォームの作り方
 
React入門-JSONを取得して表示する
React入門-JSONを取得して表示するReact入門-JSONを取得して表示する
React入門-JSONを取得して表示する
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
 

Viewers also liked

Advanced Querying with CakePHP 3
Advanced Querying with CakePHP 3Advanced Querying with CakePHP 3
Advanced Querying with CakePHP 3
José Lorenzo Rodríguez Urdaneta
 
CakePHP mistakes made
CakePHP mistakes madeCakePHP mistakes made
CakePHP mistakes made
markstory
 
Recursive in CakePHP
Recursive in CakePHPRecursive in CakePHP
Recursive in CakePHP
Ketan Patel
 
Top 50 Interview Questions and Answers in CakePHP
Top 50 Interview Questions and Answers in CakePHPTop 50 Interview Questions and Answers in CakePHP
Top 50 Interview Questions and Answers in CakePHP
Ketan Patel
 
Road to CakePHP 3.0
Road to CakePHP 3.0Road to CakePHP 3.0
Road to CakePHP 3.0
markstory
 
CakePHP - Admin Acl Controlled
CakePHP - Admin Acl ControlledCakePHP - Admin Acl Controlled
CakePHP - Admin Acl Controlled
Luís Fred
 
PHPUnit with CakePHP and Yii
PHPUnit with CakePHP and YiiPHPUnit with CakePHP and Yii
PHPUnit with CakePHP and Yii
madhavi Ghadge
 
CakePHP Community Keynote 2014
CakePHP Community Keynote 2014CakePHP Community Keynote 2014
CakePHP Community Keynote 2014
James Watts
 
9 Awesome cake php tutorials and resources
9 Awesome cake php tutorials and resources9 Awesome cake php tutorials and resources
9 Awesome cake php tutorials and resources
iScripts
 
Full-Stack CakePHP Deployment
Full-Stack CakePHP DeploymentFull-Stack CakePHP Deployment
Full-Stack CakePHP Deployment
Jose Diaz-Gonzalez
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
omicx
 
Criando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHPCriando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHP
2km interativa!
 
Cakephp 3
Cakephp 3 Cakephp 3
Cakephp 3
Amilkar Shegrid
 
RESTful Web Development with CakePHP
RESTful Web Development with CakePHPRESTful Web Development with CakePHP
RESTful Web Development with CakePHP
Andru Weir
 
CakePHP
CakePHPCakePHP
PPT - A slice of cake php
PPT - A slice of cake phpPPT - A slice of cake php
PPT - A slice of cake php
Konstant Infosolutions Pvt. Ltd.
 
Cakephp
CakephpCakephp
CakePHP and AJAX
CakePHP and AJAXCakePHP and AJAX
CakePHP and AJAX
Mark Scherer
 

Viewers also liked (20)

Agile database access with CakePHP 3
Agile database access with CakePHP 3Agile database access with CakePHP 3
Agile database access with CakePHP 3
 
Advanced Querying with CakePHP 3
Advanced Querying with CakePHP 3Advanced Querying with CakePHP 3
Advanced Querying with CakePHP 3
 
CakePHP mistakes made
CakePHP mistakes madeCakePHP mistakes made
CakePHP mistakes made
 
Recursive in CakePHP
Recursive in CakePHPRecursive in CakePHP
Recursive in CakePHP
 
Top 50 Interview Questions and Answers in CakePHP
Top 50 Interview Questions and Answers in CakePHPTop 50 Interview Questions and Answers in CakePHP
Top 50 Interview Questions and Answers in CakePHP
 
Road to CakePHP 3.0
Road to CakePHP 3.0Road to CakePHP 3.0
Road to CakePHP 3.0
 
CakePHP - Admin Acl Controlled
CakePHP - Admin Acl ControlledCakePHP - Admin Acl Controlled
CakePHP - Admin Acl Controlled
 
PHPUnit with CakePHP and Yii
PHPUnit with CakePHP and YiiPHPUnit with CakePHP and Yii
PHPUnit with CakePHP and Yii
 
CakePHP Community Keynote 2014
CakePHP Community Keynote 2014CakePHP Community Keynote 2014
CakePHP Community Keynote 2014
 
REST API with CakePHP
REST API with CakePHPREST API with CakePHP
REST API with CakePHP
 
9 Awesome cake php tutorials and resources
9 Awesome cake php tutorials and resources9 Awesome cake php tutorials and resources
9 Awesome cake php tutorials and resources
 
Full-Stack CakePHP Deployment
Full-Stack CakePHP DeploymentFull-Stack CakePHP Deployment
Full-Stack CakePHP Deployment
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
 
Criando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHPCriando e consumindo Web Services (REST) com o CakePHP
Criando e consumindo Web Services (REST) com o CakePHP
 
Cakephp 3
Cakephp 3 Cakephp 3
Cakephp 3
 
RESTful Web Development with CakePHP
RESTful Web Development with CakePHPRESTful Web Development with CakePHP
RESTful Web Development with CakePHP
 
CakePHP
CakePHPCakePHP
CakePHP
 
PPT - A slice of cake php
PPT - A slice of cake phpPPT - A slice of cake php
PPT - A slice of cake php
 
Cakephp
CakephpCakephp
Cakephp
 
CakePHP and AJAX
CakePHP and AJAXCakePHP and AJAX
CakePHP and AJAX
 

Similar to Customize CakePHP bake

Cake Php ページ送り機能
Cake Php ページ送り機能Cake Php ページ送り機能
Cake Php ページ送り機能
柴田 篤志
 
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSDrupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Tomoki Hasegawa
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築Hideharu MATSUFUJI
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
DevTakas
 
SharePoint Framework Extension 基礎講座
SharePoint Framework Extension 基礎講座SharePoint Framework Extension 基礎講座
SharePoint Framework Extension 基礎講座
Hiroaki Oikawa
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Taku Unno
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterMasanori Oobayashi
 
かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう Shuhei Iitsuka
 
【de:code 2020】 監視と管理を自動化するサンプル Center of Excellence Starter Kit 概説
【de:code 2020】 監視と管理を自動化するサンプル Center of Excellence Starter Kit 概説【de:code 2020】 監視と管理を自動化するサンプル Center of Excellence Starter Kit 概説
【de:code 2020】 監視と管理を自動化するサンプル Center of Excellence Starter Kit 概説
日本マイクロソフト株式会社
 
OpenGLプログラミング
OpenGLプログラミングOpenGLプログラミング
OpenGLプログラミング
幸雄 村上
 
High Performance Gulp
High Performance GulpHigh Performance Gulp
High Performance Gulp
Keisuke Imura
 
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...佑介 九岡
 
Custom Vision APIの下準備
Custom Vision APIの下準備Custom Vision APIの下準備
Custom Vision APIの下準備
Keiji Kamebuchi
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
Masaki Muranaka
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
Yasuhito Yabe
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介Etsuji Nakai
 
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMSDrupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Tomoki Hasegawa
 
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
ichikaway
 

Similar to Customize CakePHP bake (20)

Cake Php ページ送り機能
Cake Php ページ送り機能Cake Php ページ送り機能
Cake Php ページ送り機能
 
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMSDrupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
Drupal 8 - モダンなアーキテクチャのPHPベースOSS CMS
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
まっつんチャレンジ OSC出張編 45分でわかる PHP+Eclipseによるテスト駆動開発環境の構築
 
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おうASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
 
SharePoint Framework Extension 基礎講座
SharePoint Framework Extension 基礎講座SharePoint Framework Extension 基礎講座
SharePoint Framework Extension 基礎講座
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4
 
WTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniterWTM53 phpフレームワーク いまさらcodeigniter
WTM53 phpフレームワーク いまさらcodeigniter
 
かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう かんたん Twitter アプリをつくろう
かんたん Twitter アプリをつくろう
 
【de:code 2020】 監視と管理を自動化するサンプル Center of Excellence Starter Kit 概説
【de:code 2020】 監視と管理を自動化するサンプル Center of Excellence Starter Kit 概説【de:code 2020】 監視と管理を自動化するサンプル Center of Excellence Starter Kit 概説
【de:code 2020】 監視と管理を自動化するサンプル Center of Excellence Starter Kit 概説
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
OpenGLプログラミング
OpenGLプログラミングOpenGLプログラミング
OpenGLプログラミング
 
High Performance Gulp
High Performance GulpHigh Performance Gulp
High Performance Gulp
 
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
 
Custom Vision APIの下準備
Custom Vision APIの下準備Custom Vision APIの下準備
Custom Vision APIの下準備
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ「html5 boilerplate」から考える、これからのマークアップ
「html5 boilerplate」から考える、これからのマークアップ
 
環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介環境構築自動化ツールのご紹介
環境構築自動化ツールのご紹介
 
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMSDrupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
Drupal8 〜 モダンなアーキテクチャのPHPベース OSS CMS
 
Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4Cakephp勉強会@tokyo #4
Cakephp勉強会@tokyo #4
 

Customize CakePHP bake

  • 1. Customize bake CakePHP 2. 5.* mode-A Ltd. Kazuyuki AOKI
  • 2. 自己紹介 有限会社 モード・エー 代表取締役社長 PHP歴 12年 CakePHP歴 7年 旅行関連のシステム受託開発
  • 4. Plugin & view blocks bakeする際にプラグインやビューブロックを 反映したカスタマイズ・テンプレートを作成 して楽をしたい。
  • 5. 準備 1: composer.json "require": { "cakephp/cakephp": "2.5.*", "cakedc/utils": "1.4.*", "cakedc/search": "2.5.*", "twitter/bootstrap": "3.3.*", "slywalker/boost_̲cake": "1.0.*", }
  • 6. 準備 2: テンプレート コピー元: Vendor/cakephp/cakephp/lib/Cake/Console/Templates/default コピー先: app/Console/Template/◯◯◯ コピーされるフォルダ actions classes views
  • 8. 編集 1: model テンプレート 対象ファイル: app/Console/Template/◯◯◯/classes/model.ctp サーチプラグイン対応: $actsAs = array_̲merge($actsAs,array('Search.Searchable'));//サーチプラグインのビヘイバー if (!empty($actsAs)): 最終⾏行行直前に追加 //サーチプラグイン対応 $modelObj = ClassRegistry::init($name); if ($modelObj) { $schema = $modelObj-‐‑‒>schema(true); $fields = array_̲keys($schema); } else { $fields = $schema = $associations = array(); } echo "public $filterArgs = array(n"; foreach ($fields as $value) { if ($value=='id') { echo "'$value' => array('type' => 'value'),n"; } else { echo "'$value' => array('type' => 'like'),n"; } } echo "'keyword' => array('type' => 'like', 'field' => array('field1', 'field1')),n"; echo ");nn";
  • 9. 編集 2: view テンプレート 対象ファイル: app/Console/Template/◯◯◯/views/index.ctp など ※ビューブロックを拡張指定する。 <?php $this-‐‑‒>extend(ʻ‘/index'); ※ビューブロックに渡すデータを設定する。
  • 10. 編集 3: controller テンプレート 対象ファイル: app/Console/Template/◯◯◯/classes/controller.ctp ※サーチプラグイン対応 □冒頭に追記 $components = array_̲merge($components,array(ʻ‘Search.Prgʼ’)); □components展開後に記述 echo " public $presetVars = true;";
  • 11. 編集 4: actions テンプレート 対象ファイル: app/Console/Template/◯◯◯/actions/controller_̲actions.ctp ※サーチプラグイン対応 □function index 内に追加 $this-‐‑‒>Prg-‐‑‒>commonProcess(); $this-‐‑‒>paginate = array( 'conditions' => $this-‐‑‒><?php echo $currentModelName ?>-‐‑‒>parseCriteria($this-‐‑‒>passedArgs), 'order'=>'<?php echo $currentModelName ?>.id ASC' );
  • 12. 実例例 ビューブロックのindex.ctp テンプレートのindex.ctp テンプレートを指定したbake ./Console/cake bake -‐‑‒t modea 焼きあがった index.ctp 焼きあがった model