トップページ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/
0318nobodyさん2011/12/25(日) 03:30:55.85ID:S4Adtqyt
CakePHP2.0でSessionの設定関連がcore.phpに見当たらないんですが、
セッションの有効期限を変更するのってどこをいじればいいんでしょうか?
03193182011/12/25(日) 03:57:41.58ID:???
自己解決。
一箇所に固まったのね。
0320nobodyさん2011/12/25(日) 17:29:14.64ID:???
PaginatorHelperって使ってる?
自分で作るよりそんなに楽なの?
0321nobodyさん2011/12/25(日) 21:18:29.33ID:???
>>320
標準であるから使ってる。既にあるものを再作成しちゃいけない。
0322nobodyさん2011/12/25(日) 22:46:46.49ID:???
>>320
かなり楽
0323nobodyさん2011/12/26(月) 00:40:12.74ID:???
SQL文のパラメーターを自分でエスケープする時ってmysql_real_escape_stringでいいんだよね?
conditions に array("MATCH(title) AGAINST ('".mysql_real_escape_string($keyword)."')");
みたいな感じに書くと「DBに接続できてないからmysql_real_escape_stringは使えないっすよ」的なエラーが出るんだけどどうしたらいいんだ
0324nobodyさん2011/12/26(月) 08:51:40.09ID:???
>>323
cakeディレクトリ以下をmysql_real_escape_stringでgrepすることぐらい思いつかなかったの?
0325nobodyさん2011/12/26(月) 08:53:39.81ID:???
>>323
cakeディレクトリ以下をmysql_real_escape_stringでgrepすることぐらい思いつかなかったの?
0326nobodyさん2011/12/26(月) 19:22:58.29ID:???
>>323

App::import('Sanitize');
Sanitize::escape($keyword); とか
0327nobodyさん2011/12/27(火) 02:42:47.86ID:???
>>321,322
でもDBの値を変更して出力する場合には
対応してないですよね?
0328nobodyさん2011/12/27(火) 11:15:57.24ID:???
>>327
ページネイトでDBの値を変更するってどういう用途?
0329nobodyさん2011/12/27(火) 13:24:45.98ID:???
webrootをpublic_htmlにして、それ以外のフォルダはドキュメントルートの外に起きたい場合はどのように設定するのでしょうか?
0330nobodyさん2011/12/27(火) 13:29:34.03ID:???
↓のように見える件について報告はしたけど返信もこないんですけど
たいしたことないから修正されないんですかね?
実際に個人情報とか漏れてるわけでもないので別に問題ないっちゃ問題だいけど。
ちょうどフレームワーク名に使おうか迷っててcakephpにも興味あるんですが
cakephpてurlにクエリをつけるとこういうページが表示されるものなんでしょうか?

http://mystone.aeriagames.jp/?
0331nobodyさん2011/12/27(火) 14:05:11.21ID:???
うわー、urlに?を含めたこと無かったからびっくり。
0332nobodyさん2011/12/27(火) 16:06:32.48ID:???
>>324-325
以前は入っていたような気がするんだけれども、2.xになってから使われてないっぽかったので、よくわからんので質問したんだ
説明不足ですまぬ

>>326
さんくす!
03333152011/12/27(火) 17:42:17.16ID:???
どなたか>>317についてはわかりませんか?
もう何日もググって試してやってますが、
ビューキャッシュファイルにprefixが付きません・・・
0334nobodyさん2011/12/27(火) 19:36:48.08ID:???
>>329
webroot/index.phpでパスを指定する
0335nobodyさん2011/12/28(水) 02:02:45.93ID:???
>>328
DBから一覧を取得してその中の日付のフォーマット変えたり、
0か1で入っている性別を男と女に変換したりとか。
0336nobodyさん2011/12/28(水) 07:03:30.26ID:???
>>330
これは特殊例だな
多分トップページだけCakeのルーティングを外しているか特殊なmod_rewrite書いたりしてるはず
ソース読めないんで確かなことは言えないけど。
まあそもそも1.2の初期バージョン使ってるようなサイト参考にされても困る
0337nobodyさん2011/12/28(水) 09:44:18.78ID:???
>>335
1.3ならvirtualField使った方が良いのでは。
日付のフォーマット変えるのは自分は表示する時にしてるけど。
0338nobodyさん2011/12/28(水) 09:59:07.49ID:???
>>335
DBの値を変更って、SQLのINSERTとかUPDATEかと思った。
DBから引いたデータを加工するなら、viewでやろうがmodelでやろうが好きにすればいい。
そのあたりはpaginateでもfindと同じこと。争点にする意味がわからん。
0339nobodyさん2011/12/28(水) 12:59:51.45ID:???
Cakeはデータがただの配列だから、
こういうときつらいよな

Yiiはオブジェクトなんだっけ?
0340nobodyさん2011/12/28(水) 14:11:35.72ID:???
Cake使ってるWebサービスはあるけど、アプリはあるの?
0341nobodyさん2011/12/28(水) 14:16:12.40ID:???
アプリってなんぞ
0342nobodyさん2011/12/28(水) 14:43:40.02ID:???
意味不明ワロタ
0343nobodyさん2011/12/28(水) 15:50:07.23ID:???
mixiアプリとかのことかな?
0344nobodyさん2011/12/28(水) 16:36:45.22ID:???
すみません。webアプリのことです
0345nobodyさん2011/12/28(水) 17:11:51.85ID:???
webサービスとwebアプリの違いは?
0346nobodyさん2011/12/28(水) 17:18:26.85ID:???
wikipediaによると
・Webサービス(ウェブサービス)とは、HTTPなどのインターネット関連技術を応用して、SOAPと呼ばれるXML形式のプロトコルを用いメッセージの送受信を行う技術、またはそれを適用したサービス。
・ウェブアプリケーション(Web application)は、ウェブの機能や特徴を利用したアプリケーションソフトウェアのことである。
ウェブアプリケーションの一例としては、ウィキペディアなどで使われているウィキやブログ、電子掲示板、銀行のインターネットバンキング、証券会社のオンライントレード、電子商店街などネット販売のショッピングカートなどを挙げることができる。
0347nobodyさん2011/12/28(水) 19:42:34.74ID:???
その定義通りだとして(違和感はあるが)、逆にWEBサービスとして使われてるのを見たことないな
0348nobodyさん2011/12/28(水) 20:23:56.64ID:???
>>335
v2.0でもvirtualfieldだな
Paginatorのソートは、sqlに投げてるだけっぽいから、
加工後の値でソートしたいなら、virtualfield使うのが一番楽
0349nobodyさん2011/12/28(水) 22:42:26.99ID:???
SOAPやRESTfulな環境で使うイメージがわかない。
0350nobodyさん2011/12/28(水) 22:51:10.97ID:???
SOAP使ってないとWebサービスにならないのか
って、んなわけねーだろ!
0351nobodyさん2011/12/29(木) 01:39:46.15ID:???
俺は↓な風に思ってたけど・・・
Webサービス→mixiとかtwitterとか
Webアプリケーション→OpenPNEとかWordpressとか
0352nobodyさん2011/12/29(木) 03:10:25.40ID:???
Webサービス∈Webアプリケーション
0353nobodyさん2011/12/29(木) 04:32:43.50ID:???
$this->User->save(array(
'id' => $user['User']['id'],
'lastlogin' => date("Y-m-d H:i:s", time()),
));
↑こうやってlastloginにユーザーのログイン時間を保存しているんですが、
ローカルではちゃんと保存されるのに、
全く同じコードをアップロードした本番サーバでは
保存されないのはなぜ??
0354nobodyさん2011/12/29(木) 08:33:32.46ID:???
databaseの設定ミスとかじゃないよね?
0355nobodyさん2011/12/29(木) 10:49:12.41ID:???
webrootをpublic_htmlに変更し、それ以外を全部ドキュメントルートの上に置くというのは難しいですか?
0356nobodyさん2011/12/29(木) 10:58:31.41ID:???
MVCについてお聞きしたいのですが
学年
クラス
生徒
を管理するときに
コントローラ・・・学年
アクション・・・・クラス
id・・・・・・・・・・・生徒
とするのか
コントローラ・・・学年/クラス
アクション・・・・・生徒
とするのどちらがよいでしょうか?
前者の場合はモデルへデータを追加するだけで管理できますが
紺者の場合はモデルへデータの追加とアクションの追加を行いますが
どちらが定番といえますか?
0357nobodyさん2011/12/29(木) 12:02:14.47ID:???
>>353
本番サーバとやらのログを貼らないのはなぜ??
0358nobodyさん2011/12/29(木) 12:14:03.44ID:???
>>355
難しくありません。
03593532011/12/29(木) 12:45:18.65ID:???
>>357
ログとはどのログのことでしょうか?
0360nobodyさん2011/12/29(木) 12:54:07.59ID:???
>>356
まともな日本語でおk
「管理」の用法が特殊で意味がわからない
あと、MVCについて誤解してないか?
0361nobodyさん2011/12/29(木) 12:59:47.56ID:???
>>359
webサーバ、データベース、cakeあたりのログ
0362nobodyさん2011/12/29(木) 13:01:26.83ID:???
>>360
分からない奴は黙っていたほうが良い
恥を書いて荒らしなる道に行くから
0363nobodyさん2011/12/29(木) 13:33:28.56ID:???
わからないままは恥ずかしいので、
是非教えてください
荒らす気はありません
0364nobodyさん2011/12/29(木) 14:44:26.04ID:???
>>356
その例なら学年とクラスは一緒じゃないか?
カテゴリ・サブカテゴリの関係性だろ?
0365nobodyさん2011/12/29(木) 17:29:24.05ID:???
>>355
public_htmlの位置が変えられない環境ならこの辺参考にがんばれ
http://massat.jp/2007/01/08/110

>>356
その例だと、学年hasManyクラス、クラスhasMany生徒、のデーターベース構成の話になってしまうような
ちょっとMVCを誤解している気がする
0366nobodyさん2011/12/29(木) 17:41:41.88ID:???
なかなか斬新なMVCの解釈だなw
0367nobodyさん2011/12/29(木) 19:59:03.95ID:???
年末で暇なのか、賑わってるなー。よきかな
0368nobodyさん2011/12/29(木) 20:06:56.58ID:???
>>356
学年、クラス、生徒は全部モデルだよ。
正確に言えば、モデルが扱うデータとその属性だよ。

ま普通に考えれば、生徒がたくさん入っている生徒達データがあって、
学年とクラスは、生徒一人ひとりの属性。
0369nobodyさん2011/12/29(木) 20:09:49.58ID:???
コントローラはURLとモデルが持っているメソッドへの変換を行うものと考えればいい。
そして、メソッドの戻りをビューに変換する役目も持っている。

コントローラはあくまでURLとデータの変換をするだけで
学年とかクラスとかそんなものを扱う所ではない。
0370nobodyさん2011/12/30(金) 03:20:30.57ID:???
>>356は俺たちの煽り耐性を試してるんだと思う。
0371nobodyさん2011/12/30(金) 11:04:12.85ID:???
MVCを勘違いしていることはよく分かる。
0372nobodyさん2011/12/30(金) 12:04:16.43ID:???
MVCを理解していない人は非常に多いが、こういう勘違いをする人はレア
0373nobodyさん2011/12/30(金) 12:56:24.02ID:???
cookbookさえ読めば解決だと思う
0374nobodyさん2011/12/30(金) 13:57:03.73ID:???
MVCでラーメンは作れますか?
0375nobodyさん2011/12/30(金) 14:07:23.64ID:???
cookpadさえ読めば解決だと思う
0376nobodyさん2011/12/30(金) 14:08:22.55ID:???
MVCはなくても電気は足りるよ
0377nobodyさん2011/12/30(金) 15:17:13.68ID:???
MVC 2014年10月から引き上げ決定
0378nobodyさん2011/12/30(金) 15:37:15.23ID:???
MVCが異音出してて壊れそうなので買いに行きたいんだけど、そろそろ値段は落ち着いてるのかな
0379nobodyさん2011/12/30(金) 23:17:06.65ID:???
おれが、おれたちがMVCだ!
0380nobodyさん2011/12/31(土) 04:56:39.85ID:???
MVCとは違うのだよ、MVCとは!
0381nobodyさん2011/12/31(土) 07:32:25.22ID:???
MVCであることを強いられているんだ!
0382nobodyさん2011/12/31(土) 07:56:47.38ID:???
早くMVCになりたい!
0383nobodyさん2011/12/31(土) 07:57:13.90ID:???
MVC48がレコード大賞だってよ
0384nobodyさん2011/12/31(土) 08:39:39.24ID:???
さあ、ケーキ作りに戻ろうか。
0385nobodyさん2011/12/31(土) 19:39:46.96ID:???
結局>>362が一番アホだったなw
0386nobodyさん2012/01/02(月) 13:43:43.74ID:???
2
0387nobodyさん2012/01/02(月) 16:43:04.06ID:???
新年だし1.3系のシステムを2.0系に作り直してみるぜ
0388nobodyさん2012/01/02(月) 17:00:58.05ID:???
それは貴方にいかなる利益をもたらすのか?
0389nobodyさん2012/01/02(月) 17:34:39.76ID:???
勉強にはなる。
0390nobodyさん2012/01/02(月) 17:59:16.89ID:???
「使わない機能を切る」みたいな機能があればいいのにな。
なんでもかんでも読み込むから重くなるんだと思う。
0391nobodyさん2012/01/02(月) 18:45:39.31ID:???
>>388
他にも2.0で新規に作ったシステムがあって、それと同時に開発してるから、バージョンが違うとややこしい
あとコードが汚いからイチから書き直したいというのもある
いずれにせよ、古くなったバージョンからはさっさと離れたい
0392nobodyさん2012/01/02(月) 18:47:28.84ID:???
2.0って?p=1みたいな感じでもキャッシュは効くのかな
0393nobodyさん2012/01/02(月) 20:59:19.72ID:???
1から作りたいなら、いっそのことCake風オレオレフレームワークを作れよw
俺はそんな感じの作ってるよ。
0394nobodyさん2012/01/02(月) 21:23:42.17ID:???
cakeやるんだったらbakeって覚えとかなきゃマズい?すげぇかったるそうなんだけど。
0395nobodyさん2012/01/02(月) 22:01:40.40ID:???
楽できなくてもいいなら問題ない
0396nobodyさん2012/01/02(月) 22:15:37.39ID:???
>>395
まぁ使う方が楽なんだろうけど、やんないならやんないで別にいいって部類ならスルーしちまおうかと思って。
0397nobodyさん2012/01/02(月) 22:19:15.79ID:???
てか、bakeやらなくても1回作った物をコピーすれば良いだけじゃん。
同じような箇所が結構あるだろ
0398nobodyさん2012/01/02(月) 23:08:17.97ID:???
>>394
cakeに用意されているサンプルデータでいいから、1回はbake体験した方がいい。
ひな形とはいえ、MVC全部を作ってくれるのは助かる。
0399nobodyさん2012/01/03(火) 00:17:03.05ID:???
bakeやった方が良さそうという事がわかった。サンクス。
0400nobodyさん2012/01/03(火) 03:59:04.88ID:???
フォームヘルパーをカスタマイズしたいときって多いと思うんだけど、どうやってる?
1.helpers/form.phpをapp以下にコピーして改造
2.FormHelperを継承したMyFormHelperを作成
1→Cakeのバージョンアップ時に問題
2→ビューでの変数名がFormじゃなくなるのが嫌
0401nobodyさん2012/01/03(火) 08:57:05.67ID:???
>>400
半角スペースは投稿時に省略される。

>.2.FormHelperを継承したMyFormHelperを作成
今回はこっちを採用した。html5の input email を使いたくて、FormHelperを継承した。
0402nobodyさん2012/01/03(火) 13:58:48.66ID:???
JavaScript系のヘルパー使うのって普通にjQueryのコード埋め込むのと比べてメリットありますか?
0403nobodyさん2012/01/03(火) 15:17:25.79ID:???
PHPファイルで使える
0404nobodyさん2012/01/04(水) 00:34:45.46ID:???
結局MyFormHelperをビューで$this->Formという変数名で使うことはできないの?
0405nobodyさん2012/01/04(水) 00:43:36.30ID:???
>>404
namespaceでも使えば出来るんじゃないの?
0406nobodyさん2012/01/04(水) 09:38:54.30ID:???

>>404
https://github.com/joebeeson/analogue
0407nobodyさん2012/01/04(水) 20:46:12.62ID:???
誰かAppModelをオーバーライドして
複合主キーにも対応させてくれないか?
0408nobodyさん2012/01/04(水) 22:17:55.77ID:???
断る
0409nobodyさん2012/01/04(水) 23:27:58.25ID:???
みんなfunctionの頭にpublicってつけてる?
2.0のブログチュートリアルを見るとつけてたりつけてなかったりだけど、
何も書かなければデフォでpublicだから省略していい気がするんだけど、
書いた方が(見栄え的に)お行儀のいいコードだったりする?
http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/part-two.html
0410nobodyさん2012/01/05(木) 00:24:31.76ID:???
>>409
一応CakepPHPのコーディング規則ではそこまで書いてないので、好きにすればOKかと。
ただし、メソッド名の方に規則があって、protectedの場合はメソッド名の先頭をアンダーバー、
privateの場合はメソッド名の先頭をアンダーバー2つ。

http://book.cakephp.org/2.0/en/contributing/cakephp-coding-conventions.html#method-definition
0411nobodyさん2012/01/05(木) 01:57:28.20ID:???
変数は必ずpublic/privateつけて、メソッドはpublicなら省略するのが俺ルール。
つけたほうが一貫性があっていいとは思うんだけど、
public function 関数名
と書くと、public functionが長すぎて、ぱっと見たとき関数名に目が
行きにくいんだよな。変数は常にpublic/private意識しておくけど、
メソッドはほぼpublicで問題ないし。
0412nobodyさん2012/01/05(木) 02:06:02.96ID:???
>>410 >>411
サンクス
見た目すっきりさせたいしpublicは無しで統一するわ
0413nobodyさん2012/01/05(木) 02:32:44.05ID:???
public付けないと気持ち悪くね?
1.3時代からpublic付けてたんだが。
0414nobodyさん2012/01/05(木) 12:39:38.01ID:6HbHp9Xn
CakePHPを勉強し、自前のウェブサイトを構築したおかげで、ウェブサービスの企画があっという間できるようになった。
頭の中に、ウェブサービス構築のための常套手段が植え付けられたからだと思う。
CakePHPというよりもフレームワークを使用するメリットと言った方が適切かな。
0415nobodyさん2012/01/05(木) 17:48:11.25ID:???
2.0になって、404吐かせるのがcakeErrorからthrow new NotFoundException()に変わったせいか、
AppControllerのbeforeFilterでsetした値が404の時にビューに反映されないようになった?
全ページでヘッダー部分に表示させてる共通データの部分が、404の時だけundefined variableになってしまう
SQLログ見るとデータ自体は取ってきてるみたいだけどsetしたはずのデータがビューに反映されない
0416nobodyさん2012/01/05(木) 17:52:46.12ID:???
>>413
コア見るとpublicつけてるみたいね
コアと共通表記にしたいのならpublicつけるべきだと思う
0417nobodyさん2012/01/05(木) 21:37:19.55ID:???
>>415
ビューがClassRegistyに登録されなくなったから、ビューの別インスンタンスが生成されて
それが使われる。
あとデフォルトのExceptionRenderer(というか、CakeErrorController)はbeforeFilter()まで実行しない。
beforeFilterで例外飛ばすときもあるじゃん?
というわけでExceptionRendererを継承したクラスを作ってそれを使うのがお勧め。
_getController()でもオーバーライドすればいいじゃないの。
■ このスレッドは過去ログ倉庫に格納されています