トップページphp
995コメント290KB

【PHP】フレームワーク CakePHP 13ホール目【v2.0】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/11/09(水) 01:05:10.60ID:???
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja

前スレ
【PHP】フレームワーク CakePHP 12ホール目【笑】
http://hibari.2ch.net/test/read.cgi/php/1309505626/
0102nobodyさん2011/11/18(金) 17:11:19.32ID:???
2.0でhelperからcomponentを呼びたいのでやりかたおしえてください
あとcomponentからhelperを呼ぶようにするのとどっちがいいですか
0103nobodyさん2011/11/18(金) 23:01:21.82ID:???
普通にPHPクラスを作って、両方から呼び出してください。
0104nobodyさん2011/11/18(金) 23:12:54.03ID:???
CodeIgniterがライセンス変更されて使いづらくなったらしいけど
Cakeは大丈夫かな?使い始めてから突然変更されたらかなわんな
0105nobodyさん2011/11/19(土) 00:00:44.70ID:???
>>104
CIは会社が作ってるんでしょ。
0106nobodyさん2011/11/19(土) 00:07:58.71ID:???
>>99
mod_rewriteが使えるならRoutesよりmod_rewriteが推奨のように見えます。
http://cakephp.jp/old_doc/ch04s03.html

> "Routing"(ルーティング) は、(中略)見栄えの良い URL (pretty URLs) をより設定しやすくし、
> mod_rewrite がなくても動くようにするため、 Cake に追加されました。
> しかし、 mod_rewrite を使用するなら、アドレスバーははるかに整理されます。
0107nobodyさん2011/11/19(土) 01:45:52.06ID:???
>>104
今cake使っててCIかyii浮気しようと思っていた俺は、浮気先が一つになったので選ぶ必要がなくなった
オープンソースの宿命だから、そのときはそのときでしょうがない
0108nobodyさん2011/11/19(土) 02:37:10.19ID:???
なんで浮気しようと思ったの?
0109nobodyさん2011/11/19(土) 02:40:13.80ID:???
>>106
えとね。mod_rewriteは○○○ってURLを×××に変えることはできるけど、
×××を○○○に変えることはできないんだよ。
0110nobodyさん2011/11/19(土) 08:14:03.03ID:???
オープンソースの宿命なの?
あとから規約変えるとか詐欺だろ
0111nobodyさん2011/11/19(土) 10:01:41.28ID:???
最近はてブでFuelPHPってのが話題にあがってた
触ってみた?
0112nobodyさん2011/11/19(土) 11:11:45.38ID:???
>>109
mod_rewriteで出来ないことまでやろうとしてるんじゃなくて、
mod_rewriteとRoutes両方で出来ることなら、
mod_rewriteでやったほうがいいんじゃないか。
>>99はmod_rewriteは基本触らないという意見のようなので。
0113nobodyさん2011/11/20(日) 02:41:49.47ID:???
>>111
そんなに便利そうに思えないんだよな。
オレオレの域を抜けてないというか
0114nobodyさん2011/11/20(日) 14:33:03.47ID:???
CodeIgniterが死亡した今Yiiとの一騎打ちになったか
0115nobodyさん2011/11/20(日) 14:54:00.52ID:???
>>111
触ってない
「CIより多少マシ」というコメントがついていたけど、まさにそんな感じだと思った
CIも結局盛り上がらなかったし、既にCakeとかSymfonyというフレームワークがある状況だと、
いいフレームワークが出来てもいかにそれを流行らせるかが問題だと思う
暇そうなプログラマー雇って提灯記事とドキュメントの日本語訳書かせまくるしかないんじゃない?
0116nobodyさん2011/11/20(日) 17:11:02.58ID:???
なんで訳さないといけないんだよ
お前らが英語勉強しろよ
0117nobodyさん2011/11/20(日) 20:29:27.21ID:???
Cakeが流行ったのは提灯記事のおかげだったのか
0118nobodyさん2011/11/20(日) 23:38:02.20ID:???
いいえ、提灯ではない記事のおかげです
0119nobodyさん2011/11/21(月) 01:16:55.48ID:???
>>117
cake初期の頃ブログ書きまくってたけど、「CakePHPがRoRに対抗するフレームワークになるんだ!俺がそうするんだ!」
みたいな変な使命感もってやってたよ
今はすでにPHPでフレームワークがたくさんある、しかもCakeなどのメジャーになったモノがたくさんある状況で
新規のフレームワークに手を出す人は少ないだろうから、まずはそのフレームワークのエヴァンジェリストが必要なんじゃ無いかと思う
0120nobodyさん2011/11/21(月) 01:22:56.17ID:???
>>119
確かにCakeの記事は玉石混交しててバリエーション豊かだった気がする。
Zend Frameworkとかもあんま流行ってる感じしないしな。
0121nobodyさん2011/11/21(月) 01:38:56.62ID:???
cakeネタで書こうと思えばいろいろあるんだけど
twitterとか使い出したら、なんかわざわざブログに書くのめんどくなったよ
0122nobodyさん2011/11/21(月) 12:40:46.36ID:???
Cake1年ほど業務で使ってみたけど
開発スピードは速い
実行スピードは遅い
バグは多くも少なくもない
という印象
0123nobodyさん2011/11/21(月) 16:18:29.64ID:???
俺も同じ意見。
実行スピードの遅ささえ解消されれば、最強なんだがな・・・
0124nobodyさん2011/11/21(月) 17:47:44.03ID:???
Controllerからviewヘルパーを呼ぶと
Fatal error: Call to a member function hoge()がでてしまいます

コントローラには
$helpers = array('Hoge');
とかいて
$this->Hoge->hoge();
と書いているのですが
0125nobodyさん2011/11/21(月) 17:49:18.81ID:???
コントローラー内で呼ぶ場合、newしないとだめだよ。
0126nobodyさん2011/11/21(月) 18:19:23.29ID:???
>>125
ありがとうございます

$this->Hoge = new HogeHelper();
このように書いたら
Fatal error: Class 'HogeHelper' not found が$this->Hoge = new HogeHelper();と書いた行ででてしまいました
最初に読み込んだりしますか

0127nobodyさん2011/11/21(月) 18:50:56.58ID:???
App::Importしないと。
0128nobodyさん2011/11/21(月) 19:17:30.73ID:???
>>127
ありがとう
できなかったからもう寝るお
0129nobodyさん2011/11/21(月) 19:25:32.67ID:???
なぜにググることすらしないのか
0130nobodyさん2011/11/21(月) 19:34:10.21ID:???
馬鹿だから
0131nobodyさん2011/11/21(月) 21:57:23.12ID:hMc6lKUo
LinuxでPHP5.3.6をソースからコンパイルして使ってるんですが、
CakePHPの内部でfindメソッドの戻り値にモデル名をセットしている箇所に問題があり、
モデル名の代わりに0がセットされるようになってしまい困ってます。

原因はPDOStatement::getColumnMeta()でtable名が返ってこないためです。
ちなみにxampp環境のPHP5.3.8だと問題なく動作しているのですが、
PHP5.3.6に問題があるのでしょうか?
0132nobodyさん2011/11/22(火) 02:47:37.72ID:???
ソースからコンパイルなんてするの
0133nobodyさん2011/11/22(火) 03:02:58.10ID:???
オプションいろいろ付けたかったらするでしょ
0134nobodyさん2011/11/22(火) 17:28:20.16ID:???
>>131
このことじゃね
https://bugs.php.net/bug.php?id=54695
0135nobodyさん2011/11/23(水) 19:20:56.88ID:vIVNUlWb
hetmlhelperで相対パスにリンクを張ったらhttpのアドレスからだとhttpにリンクが張られてしまうんですが、
httpsに張るようにするには絶対パスしかないですか?
0136nobodyさん2011/11/23(水) 20:28:32.14ID:???
>>135
Htmlヘルパーを拡張したMyHtmlヘルパーを作ればいいじゃない。
0137nobodyさん2011/11/23(水) 20:35:14.55ID:???
舞Htmlヘルパー
0138nobodyさん2011/11/23(水) 21:13:39.19ID:???
app_html.phpかな。
0139nobodyさん2011/11/25(金) 01:36:56.19ID:???
CakePHPでサイト作るとしたらふつうだいたい何ヶ月くらいかかるの
0140nobodyさん2011/11/25(金) 01:41:51.95ID:???
自分で学習して作るのか、外注して作るのか、作るサイトの規模はどれくらいかとか書いてくれないと、ピンキリとしか言いようが無い
0141nobodyさん2011/11/25(金) 02:01:33.59ID:???
OpenPNEのようなSNSを自分で作る場合はどのくらいかかりますか?
0142nobodyさん2011/11/25(金) 03:48:39.39ID:ms97YqHe
http://libro.tuyano.com/index3?id=8005&page=6
このとおり作ってるんだが、「送信」押すと、
Create the class ResultController below in file: app\Controller\ResultController.php
ってエラーがでる。
0143nobodyさん2011/11/25(金) 05:54:25.81ID:???
Cakeのwebrootにあるcss.phpて動作してる?
App::import('Vendor', 'csspp' . DS . 'csspp');とかやってるけど、そんなもの存在してない気がするんだが
0144nobodyさん2011/11/25(金) 05:55:26.54ID:???
Cakeのwebrootじゃなくてapp/webrootだった
0145nobodyさん2011/11/25(金) 12:05:59.37ID:???
>>142
そのサイトの他ページは見てないからviewがどうなってるのか知らないけど、
フォームの送り先URIがおかしいのでは。
0146nobodyさん2011/11/25(金) 12:08:23.24ID:???
>>143
cssppをダウンロードしてVenderにぶち込めってことじゃないの
css.phpのコメントにでも書いてあると思うが
0147nobodyさん2011/11/25(金) 12:47:14.66ID:???
>>139
画面数と機能数で概算出してみたら?
0148nobodyさん2011/11/25(金) 13:42:47.07ID:???
      / ̄ ̄ ヽ,
    /        ',
    |   {0} /¨`ヽ、
    l      ト.__.i●
    ノ      ー─'
   ノ         ',
●をダブルクリックするとクチバシが伸びるぞ!




人人人人人人人人人人人人人人人人人人
)                         (
)      伸びるわけねーだろ!      (        _/\/\/\/|_
)            ,rrr、           (        \ 試したやつ  /
⌒Y⌒Y⌒Y⌒Y⌒Y| |.l ト⌒Y⌒Y⌒Y⌒Y⌒Y/つ)))    <   バーカ!  >
           ⊂ ヽ | __ ☆   __  _/ 巛      /          \
     / ̄ ̄ ヽヽ ,`ー   \ | |l / \  __つ      ̄|/\/\/\/ ̄
   /{゚} 、_   `ヽ/|| ,  \.|||/  、 \   ☆             / ̄ ̄ ヽ,
  / /¨`ヽ {゚}   |  /  __从,  ー、_从__  \ / |||         / 丶 /   ',
  | ヽ ._.イl     ',/ /  /   | 、  |  ヽ   |l      ノ//, {゚}  /¨`ヽ {゚} ,ミヽ
   、  ヘ_/ノ    ノ/ )  `| | | |ノゝ☆ t| | |l \      / く l   ヽ._.イl    , ゝ \
   \___ ノ゙ ─ー  `// `U ' // | //`U' // l  / /⌒ リ   ヘ_/ノ   ' ⌒\ \
         /   /   W W∴ | ∵∴  |   (   ̄ ̄⌒          ⌒ ̄ _)
        /    ☆   ____人___ノ    ` ̄ ̄`ヽ           /´ ̄


0149nobodyさん2011/11/25(金) 14:26:37.82ID:???
>>145
遷移しなかったのですが、一応解決しました。
原因は、
フォームの
<form method="post" action="./result">
↑ここがおかしかったみたいです。
0150nobodyさん2011/11/25(金) 23:22:16.42ID:???
CakePHP2.0について
■app/Model/Test.php
<?php class Test extends AppModel{public $name = 'test';}
■app/Controller/TestController.php
<?php class TestController extends AppController{function index(){$test = $this->Test->find('all');debug($test)}}

データベースはSQLiteに設定してありますが、データベースを使わず、
モデルTest.phpに書いた変数$nameの値をコントローラから読み込みたいのですが
Fatal error: Call to a member function find() on a non-object
というエラーが出て困ってます
どなたかアドバイスお願いします
0151nobodyさん2011/11/26(土) 02:11:47.02ID:???
cakephp使ってるやつはもっとブログいっぱい書いてくれ。使い方がよくわからないし
0152nobodyさん2011/11/26(土) 02:19:26.62ID:???
>>146
見たけどなんも書いてないし
こういう作りかけで放置?みたいなのがCakeにはちょこちょこ見られて嫌だな
0153nobodyさん2011/11/26(土) 14:40:10.29ID:???
>>152
2.0ではcss.phpは無くなってるし、全体的にちぐはぐだった部分が整理されてきてる感じ
0154nobodyさん2011/11/26(土) 15:54:08.70ID:???
>>150
よくわからんが
Test.phpはtest.php
TestController.phpはtests_controller.php
じゃないのか。
0155nobodyさん2011/11/26(土) 23:26:54.50ID:???
>>141
たぶんその質問をするレベルからなのだろうから、集中してやっても半年
下手すれば3年
0156nobodyさん2011/11/27(日) 03:43:00.02ID:???
勉強するために本を購入しようと思ってるんですけど、
お勧めの本とかを聞くのはスレ違いですか?
もし平気ならお勧めの本を教えてください。
0157nobodyさん2011/11/27(日) 07:48:03.99ID:???
「奉仕を主とする事業は栄え、利得を主とする事業は衰える」
「ほかの要因はさておき、我々の売上は、ある程度賃金に依存しているのだ。
より高い賃金を出せば、その金はどこかで使われ、ほかの分野の商店主や卸売り業者や製造業者、
それに労働者の繁栄につながり、それがまた我々の売上に反映される。
全国規模の高賃金は全国規模の繁栄をもたらす」

奥田 碩(日本経団連名誉会長 元トヨタ自動車会長)
0158nobodyさん2011/11/27(日) 17:45:35.50ID:???
>>156
CakePHP辞典とネットの情報でおk
0159nobodyさん2011/11/28(月) 06:13:25.61ID:???
>>158
PHPは何となくわかるんだけど、ビジネスロジック?をmodelにどう書いたらいいかとかがわからない、、。
ネットで調べてもDBのアクセス方法とかしか載ってないし・・・。
0160nobodyさん2011/11/28(月) 11:15:11.72ID:???
>>159
おいおい、その程度の知識かよ・・・
それなら「はじめてのMySQL」的な本とかかって、DB回りを勉強しろよ。
MVCについても全く概念が無いようだから、
ネットの解説記事を見て、オレオレフレームワークでも作る練習しろ。
その後にCakeやった方が捗るよ。
0161nobodyさん2011/11/28(月) 13:01:50.72ID:???
知識なんていらないからね
0162nobodyさん2011/11/28(月) 13:52:41.35ID:???
必要なかったら本買わずにソースだけ見てやってください
0163nobodyさん2011/11/29(火) 15:55:46.38ID:???
echo $this->Form->input('birthdate',array('type'=>'date'));

上記で出力した項目のValidationについて教えてください。
上記で年・月・日のドロップダウンリストが出力されます。
2011・2・31を選択して保存すると、2011-03-03として保存されます。
ありえない日付を選択されたのでエラーとしたいのですが、標準でできますでしょうか?
0164nobodyさん2011/11/29(火) 16:27:20.48ID:???
>>163
モデルの$validateでruleをdateにしたらエラーに出来ないか?
0165nobodyさん2011/11/29(火) 23:21:26.10ID:xETpRXat
Viewの必要のないXMLを返すような場合に
Viewを作らずにすますにはどうすればいいですか?
0166nobodyさん2011/11/30(水) 01:08:19.68ID:???
>>164
dateルールだとできません。
0167nobodyさん2011/11/30(水) 01:46:38.75ID:???
>>160

オレオレフレームワークのつくりかたどっかにないかな
0168nobodyさん2011/11/30(水) 02:02:38.21ID:???
>>167
ちょっと古い記事ですが
http://blog.syuhari.jp/archives/172

テーブルからデータを取得するコードはモデルにメソッドとして書いて
コントローラで取得して、ビューに渡すという流れです
0169nobodyさん2011/11/30(水) 11:57:10.26ID:???
>>166
俺のところでは出来るが

>>168
これ、ページネーション(paginate)を使いたい場合は使えないんだよな・・・
0170nobodyさん2011/11/30(水) 13:04:25.29ID:???
>>169
すみません、バージョン教えてもらえますか?
こちら2.0です。
0171nobodyさん2011/11/30(水) 16:17:33.31ID:???
バージョンだわ。俺は1.3系使ってるし。
0172nobodyさん2011/11/30(水) 22:39:37.21ID:???
いよいよ2.0の話題が増えていくのか
0173nobodyさん2011/12/01(木) 01:14:05.48ID:???
app/webroot/files/sample.phpから
app/views/layouts/layouts.ctp
を参照したいんですけど、相対パスってどうなりますか?
0174nobodyさん2011/12/01(木) 01:15:41.08ID:???
むずかしいもんだいだね
0175nobodyさん2011/12/01(木) 01:19:47.08ID:???
すみません../../views/layouts/でいけました
webrootなので複雑に考えてました
0176nobodyさん2011/12/01(木) 01:36:07.41ID:???
逆にlayouts.ctpから参照するときは
files/sample.phpなんですね
0177nobodyさん2011/12/01(木) 21:07:27.25ID:???
2.0系って、従来のプラグイン使えるのかな
移行ガイドにはそのあたり触れられてないのが気になる
0178nobodyさん2011/12/02(金) 02:48:35.30ID:LODTi230
CakePHP + Oracleってあまり相性良くない?
Oracleってオートインクリメント使えないんだけど
CakePHP側でうまくやってくれるとか?
0179nobodyさん2011/12/02(金) 04:44:28.87ID:???
そもそも使えるの?
0180nobodyさん2011/12/02(金) 22:19:51.28ID:???
オートインクリメントが使えなかったら
RDBMSとして成り立たないだろ。
お前があほなだけ。
0181nobodyさん2011/12/02(金) 23:44:46.73ID:???
Oracle側でシーケンスとトリガーでやります
0182nobodyさん2011/12/03(土) 00:46:21.36ID:ewJKbRKA
CakePHP2.0でSqlite3のファイルにアクセスしたいんだけど
どうもうまくいきません。以下のようなエラーが出ます。

Missing Database Table
Error: Database table xxx for model Xxx was not found.

もしかして、CakePHP2.0ではsqlite3のファイルにアクセスできない?
0183nobodyさん2011/12/03(土) 00:51:11.36ID:???
Missing Database Table って言ってんだろw
0184nobodyさん2011/12/03(土) 09:33:17.39ID:???
>>182
Model.phpが無いんじゃないの?
cake bakeしてみたら。
0185nobodyさん2011/12/03(土) 13:53:22.68ID:???
CakePHP辞典の人が2.0バージョンも出してくれたらいいのにな。
今は明らかに情報が足りなすぎる。
0186nobodyさん2011/12/03(土) 16:12:59.14ID:???
>>182
eat cake, PDO版 SQLite3 を使う
http://miztools.so.land.to/php5_list/eat_cake/cake2/edit/sqlite3
0187nobodyさん2011/12/04(日) 01:19:55.36ID:???
sqliteいいの?mysqlしかつかったことない
0188nobodyさん2011/12/04(日) 02:29:45.94ID:???
システムが違う。
sqliteはテキストデータにRDBMSっぽい書き込みをして使用する。
0189nobodyさん2011/12/04(日) 02:37:58.60ID:vxdOAUX9
sqliteはPHP5からのデフォルトバンドルだぜ?
しかもDBサーバを立てることもなく一つのファイルで完結だ。
俺はこんないいものを知らない。
0190nobodyさん2011/12/04(日) 02:43:31.05ID:???
同意せざる終えない。使い勝手良すぎ
0191nobodyさん2011/12/04(日) 15:48:53.97ID:???
app/app_controller.phpを作って、
function beforeFilter(){
echo '<!--'.$this->params['controller'].'-->';
}
とやってみたんですが、特定のコントローラだけ$this->params['controller']で出力されません
何が原因なんでしょうか?
他とその出ないコントローラの違いで思い当たるのはそのコントローラにもbeforeFilterが指定してあることくらいです
01921912011/12/04(日) 15:50:38.27ID:???
>>191に追記です
コントローラ値が空なだけだと思ったら、どうやたapp_controller自体実行されてなかったようです
(普通に文字を出力させてもでませんでした)
御教示いただけたら幸いです
0193nobodyさん2011/12/04(日) 15:54:37.24ID:???
>>191
コントローラ内のbeforeFilter内で
parent::beforeFilter();
ってやってる?
01941912011/12/04(日) 16:19:33.30ID:???
>>193
それでした
app_controllerを作ったのがはじめてだったので、決まりごとを理解してませんでした
ありがとう御座いました
0195nobodyさん2011/12/07(水) 14:22:49.37ID:XLyuG92u
cakephp 1.3.13を使ってcakeError()の情報をXMLで返したのですがうまくいきません。
通常のデータは以下のようなことでViewをXMLにしています。
var $helpers = array('Text', 'Xml');
public $components = array('RequestHandler', 'Security');
function beforeRender() {
$this->RequestHandler->respondAs('xml');
$this->viewPath .= '/xml';
$this->layoutPath = 'xml';

しかし、app_error.phpに
function errorXXXX($params) {
$this->helpers[] = 'Xml';
if ($this->controller->RequestHandler->isXml()) {
$this->controller->RequestHandler->renderAs($this->controller, 'xml');
}
$this->controller->render('errors', 'default');

とやってデバッグすると、内部の$outに正常にXMLが入っているのですが、クライアント
にわたりません。なにか特別のことをしなければならないのでしょうか。
0196nobodyさん2011/12/07(水) 17:18:20.77ID:???
検索処理で該当データなしの場合、「(検索条件)に一致する情報は見つかりませんでした。」みたいなメッセージを出力させたいのですが、
どこにどう記述するべきでしょうか?Controller?View?
0197nobodyさん2011/12/07(水) 18:02:05.03ID:???
View
0198nobodyさん2011/12/07(水) 21:33:41.84ID:???
Viewに決まってるだろ
0199nobodyさん2011/12/07(水) 23:38:47.74ID:???
>>196
controllerかmodelで分岐させて、controllerでset
viewの出したい箇所に変数を<?php echo $message ?>
0200nobodyさん2011/12/07(水) 23:41:58.93ID:???
>>199
いや、View内で分岐だろ
02011992011/12/07(水) 23:45:59.78ID:???
うちはmodel::findのif(empty($data))の分岐でviewに渡す文字列またはarray。
viewの方にもif(isset())で文字列またはarray(リスト表現)
■ このスレッドは過去ログ倉庫に格納されています