トップページphp
1001コメント304KB

【PHP】フレームワーク CakePHP 9ホール目【v1.3】

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

※sage推奨
※質問時もsageること
※他フレームワークとの比較等はスレ違いです
テンプレは>>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
0552nobodyさん2010/09/12(日) 19:54:10ID:???
ちょww
単に覚え間違いだったのかw
0553nobodyさん2010/09/12(日) 19:59:05ID:???
別に笑うところじゃないし。何がおかしい?
0554nobodyさん2010/09/12(日) 20:03:01ID:???
ちょwwwwwwwwwwwwww
0555nobodyさん2010/09/12(日) 20:08:24ID:???
呼び名なんて別にどうでもいい。
最初からソース提示してるんだからわかる。スレ違いなだけ。
それに対して「単に覚え間違い」とかずれたツッコミしてるんだけど?
0556nobodyさん2010/09/12(日) 20:08:24ID:???
>>553
メンバ変数をオブジェクトだと思っていたところ。
そしてそれをオブジェクト指向と関係があると思い、
CakePHPのスレで質問したところ。
更に、547自身が何を笑われているかわからないところ。
0557nobodyさん2010/09/12(日) 20:09:17ID:???
>呼び名なんて別にどうでもいい。
>最初からソース提示してるんだからわかる。スレ違いなだけ。

俺らはエスパーだと思ってるの?
0558nobodyさん2010/09/12(日) 20:10:04ID:???
>>550 = >>553 == >>555 == 俺
わからないお前がバカだから消えろ
0559nobodyさん2010/09/12(日) 20:13:00ID:???
>>556
オブジェクト指向と関係あるよ
0560nobodyさん2010/09/12(日) 20:13:46ID:???
CakePHPとは?
0561nobodyさん2010/09/12(日) 20:18:41ID:???
自分より知識がないだろうと思うと茶化す
実にくだらない
0562nobodyさん2010/09/12(日) 20:41:18ID:???
少し知った奴が初心者を馬鹿にする行事がまた行われたのか…
毎度ご苦労様です!
0563nobodyさん2010/09/13(月) 00:08:18ID:???
1.3.4がでたらしいな

と思ったら

2.0系もでんのか??

スピードはええな
0564nobodyさん2010/09/13(月) 00:13:59ID:???
>>563
お、いつのまに更新されてたか。

2.0はだいぶ前から出てるよ。
0565nobodyさん2010/09/13(月) 03:04:28ID:???
>>564
2.0マジか!知らなかった・・・

1.2.xから1.3.xの時は結構大変だったけど、
2.0系も別物な感じなの?

今日知ったばかりでまた情報集めてるとこなんだ

# やっと管理してるの片っぱしから1.3.3にしたのに。。。
0566nobodyさん2010/09/13(月) 14:33:45ID:???
1.1から1.2はけっこう変わったけど、1.2から1.3はそれほどでもない
オフィシャルのマイグレーションガイドも、ちょっとだけだったし
2.0はまったく見てないからわからん
0567nobodyさん2010/09/13(月) 14:41:19ID:???
>>565
ついでに言うと3.0も。
途中でプロジェクトが分離して、今は名前が変わっちまったがな。
0568nobodyさん2010/09/13(月) 14:47:44ID:???
配列地獄はいつ解消されますか?
0569nobodyさん2010/09/13(月) 14:51:55ID:???
>>568
Cake系を使い続けるかぎり無理じゃね?
Lithiumも配列地獄っぽいし。
0570nobodyさん2010/09/13(月) 16:48:46ID:???
>>566
>>567
ありがと 昨日、流れっていうのかな見たよ
プロジェクトなのか派生なのかずいぶんでてるんだね
純正というかメインのStableはCakePHP1.3.3ってことでいいのかな

>>568
配列は慣れな気がしてきたよ
0571nobodyさん2010/09/13(月) 17:56:55ID:???
オレオレフレームワークでも配列使ってたから、移行に違和感なかったな。
ただ、モデル(テーブル)を$data['User']['name']感じにする概念は無かったが。
0572nobodyさん2010/09/14(火) 17:23:02ID:sGtN+/un
controllerがUTF-8でビューはShift-JISにしています。
afterFilterを使って出力時にmb_convert_encodingで
UTF-8からSJISに文字コード変換する方法は良くあるのですが、
findでデータ取得の時にSJISにする方法ってないでしょうか?
0573nobodyさん2010/09/14(火) 17:36:34ID:???
>>572
ビューもUTF8にしてafterFilterで文字コード変換じゃダメなの?
find時に文字コード変換はafterFindでできそうな気がするけど、
DBもUTF-8で作ってるのにビューだけShiftJISにこだわる理由はあるんだろうか
0574nobodyさん2010/09/14(火) 18:12:47ID:sGtN+/un
>>573
携帯用のビューでして、ShiftJISで表示させたいんです。
0575nobodyさん2010/09/14(火) 18:15:45ID:???
>>574
まずsageようじゃないか
そして>>573にあるように、UTF-8でつくろう
方法はキミが分かってる通りだ
05765732010/09/14(火) 18:22:34ID:???
質問時はsage推奨って>>1に書いてますね。すみませんでした。

あと、UTF-8で作る方法は知っていますが、>>574で書いたとおり、
携帯用のビューはShiftJISなのでそうしたいんです。
現代の携帯端末はほとんどUTF-8に対応しているとはいえ、、
今までそれで表示していて問題がなかったので。

でも、それしか方法がないと言うなら、一旦findで配列を取得して
foreachでmb_convert_encodingしてSJISに変換し、ビューに渡す方法にします。
05775722010/09/14(火) 18:23:30ID:???
番号間違えました・・。>>576>>572です。
0578nobodyさん2010/09/14(火) 18:25:53ID:???
またひとりアドバイスに従わない強者がいたか
0579nobodyさん2010/09/14(火) 18:26:27ID:???
>>576
どうしても、ビューはShiftJISにしたいっていうなら、
mb_convert_encodingの処理はafterFind()の中に書けばいいと思うよ。
0580nobodyさん2010/09/14(火) 19:09:36ID:???
viewで変換できないん?
0581nobodyさん2010/09/14(火) 19:30:32ID:???
utf8の方が女にもてる
0582nobodyさん2010/09/14(火) 19:56:50ID:???
携帯サイトってShift_JISで作るんじゃないの?
軽くググったら、そういう解説ばかりだけど。
0583nobodyさん2010/09/14(火) 20:28:55ID:???
どんなにググってもviewだけsjisなんて解説出てきません ><
0584nobodyさん2010/09/14(火) 20:29:18ID:???
utf8で作ってもフォームから送られてくるのはshift_jisだったりするよね?<au
softbankはその逆だっけ?
05855722010/09/14(火) 20:37:37ID:???
やっと指摘されてる意味がわかりました・・。
ViewもUTF-8で作成して、出力時はafterFilterでShift-JISにし、
View内のmetaのContent-TypeをShift_JISにすれば、何も問題ないんですね。

お騒がせしました。
0586nobodyさん2010/09/14(火) 20:40:04ID:???
いや、ctpはUTF8で作って、出力をSJISにすれば良いじゃない。そっちのが、あとあと楽だと思う。
0587nobodyさん2010/09/14(火) 20:51:33ID:???
変換テーブルがアレだから実際UTF-8でやると特定の文字でハマるかも。
絵文字変換のついでに対策すればいいんだけど。
0588nobodyさん2010/09/15(水) 10:54:40ID:???
CakePHPってカスですね
初心者には敷居が高くて難しいんですよ、これ
もちっと簡単にしてほしかったですね
0589nobodyさん2010/09/15(水) 11:02:19ID:???
カスなのは初心者なんだよ。
カスから脱出するために、皆頑張っているのだ。
0590nobodyさん2010/09/15(水) 11:37:03ID:???
きっとPHP自体が初心者なんだろ
PHPが初心者だったらどのフレームワーク使ったって一緒だ
0591nobodyさん2010/09/15(水) 11:46:50ID:???
一応、C,C++,C#,Javaできますが
0592nobodyさん2010/09/15(水) 12:06:13ID:???
>>591
それだけの経験があっても理解ができないのが、ある意味すごい
無 能 だ な !
0593nobodyさん2010/09/15(水) 12:12:37ID:???
hello worldができるってだけだろ
0594nobodyさん2010/09/15(水) 12:31:33ID:???
人をおちょくるのもいい加減にしてください

if,swtich,case,break,do,while使えますよ!
0595nobodyさん2010/09/15(水) 12:32:29ID:???
IDでねーのだるいな。PHPすら理解してない奴は勘弁だ
0596nobodyさん2010/09/15(水) 12:34:15ID:???
匿名掲示板でIDの意味はないと思うが・・・
0597nobodyさん2010/09/15(水) 14:56:01ID:???
>>596
ネットワークを使い分けるとかしない一般人であれば、
少なくとも、俺とお前が別人だって示せる
0598nobodyさん2010/09/15(水) 18:59:43ID:???
routes.phpに
Router::connect('/', array('controller' => 'top', 'action' => 'index', 'home'));
とすれば、初期画面を指定できますが、
同じコントローラーで別のアクションを実行するには
http://hoge.com/top/add
のようにしなくてはいけません。これを
http://hoge.com/add
とする方法は無いのでしょうか?
0599nobodyさん2010/09/15(水) 19:42:02ID:???
Router::connect('/add', array('controller' => 'top', 'action' => 'add'));
06005982010/09/15(水) 19:54:47ID:???
希望通りできました。ありがとうございました。
0601nobodyさん2010/09/15(水) 20:10:25ID:???
'home' つけっぱだし、もっかいドキュメント読み直したほうがいいよ
0602nobodyさん2010/09/16(木) 01:00:40ID:???
携帯でアクセスすると、mobile_がついたメソッドとビューを読み込みたいです。
routes.phpの設定で以下のようにする方法を良く目にするのですが、
Router::connect(‘/m/:controller/:action’, array(‘prefix’ => ‘mobile’));
この方法ではURLを変更する事になります。

同一URLで振り分けたいのですが、
上記以外でメソッドにprefixを付ける方法はないでしょうか?
0603nobodyさん2010/09/16(木) 01:42:28ID:???
>>602
君、>>598でしょ?
質問する前に少しは自分で考えたらどうだい?
0604nobodyさん2010/09/16(木) 01:45:59ID:???
>>602
Webサーバ側でやればいい。
0605nobodyさん2010/09/16(木) 02:54:46ID:???
>>603
同じroutesの質問してますが、違います。
それに半日考えてググってソースも見てどうしようもなく質問しました。

>>604
それだとCakeを使う意味がない気がします。
0606nobodyさん2010/09/16(木) 06:55:26ID:???
>>602
最近CakePHP触ってないからうろ覚えなんだけど、
controller.phpにbeforeFilterを定義して、携帯からのアクセスか
PCからのアクセスかを判別する処理をそこに書く。
その中でコントローラを割り振るようにできるんじゃないかな?
確かコントローラ名が$thisに入ってたよね
0607nobodyさん2010/09/16(木) 07:11:12ID:???
>>605
Ktai Library 使いましょう
0608nobodyさん2010/09/16(木) 09:33:19ID:???
Model内でセッションの受け渡しをするのはまずいのでしょうか?

Controller内で
    $this -> Amazon -> setSession($this -> Session);  

と記述し、

Model内で、
public function setSession($session){
$this -> Session = $session;
}

と記述。この後、モデル内で、

$this->Session->write('page_list',$page_list); 

などとコントローラで書くような記述をしています。

しかし、firefoxでは問題ないけど、IEやChromeでセッションの受け渡しが
上手く行かない問題が出てきて、もしかして、このやり方をしているかが原因なのかなと
思いました。

普通に、モデル内で使いたいなら、$_SESSIONで書いたほうがいいのかなあと。
0609nobodyさん2010/09/16(木) 14:56:55ID:???
>>602
beforFilterあたりでIPかUAを見てprefixつけられなかったっけ
と思ったら>>606が同じようなこと書いていたな

>>603
基本的なroutesもよくわかってなかったやつが一日でprefixの質問するレベルに成長するとは思えないぞw

>>607
作者さん?
機能強化よりシンプルでわかりやすい仕様にしてくれ
0610nobodyさん2010/09/16(木) 16:04:35ID:???
>>607
MASA-Pさん、上の方で本がバカにされてましたよ
0611nobodyさん2010/09/16(木) 17:32:15ID:???
>>607
文字コードの扱いが困る時があります。
もう少し柔軟にして下さい。
0612nobodyさん2010/09/16(木) 19:56:27ID:???
>>605
すべてCakeでやる必要なんてないだろ?
0613nobodyさん2010/09/16(木) 21:04:42ID:???
かといってバーチャルホストにするほどか?
0614nobodyさん2010/09/16(木) 21:18:40ID:???
バーチャルホストとかじゃなくて、/hogeにリクエストが来たらapacheでIP見て、PCなら/hogeのまま
ケータイなら/m/hogeにrewriteすりゃいいって話じゃないの?
0615nobodyさん2010/09/16(木) 21:40:20ID:???
beforeFilter()やらで判別してmobile_アクション() 呼べばいいんじゃない?
0616nobodyさん2010/09/16(木) 22:07:43ID:???
MASA-Pさん、ドメイン分けずに本の内容通り進める方法教えてください
0617nobodyさん2010/09/16(木) 23:18:48ID:???
beforeFilterでmobile_アクション呼ぶ方法を教えて下さい!(><)
0618nobodyさん2010/09/17(金) 00:51:47ID:???
>>613
むしろ、バーチャルホストでどう実装するのか聞きたい。

>>616
本の通りに書いていれば、ドメイン分けずにすむだろ。
0619nobodyさん2010/09/17(金) 10:08:15ID:???
MASA-Pさん、電子書籍にしてください
0620nobodyさん2010/09/17(金) 12:39:29ID:???
誰が誰やら
0621nobodyさん2010/09/17(金) 19:08:58ID:???
CakePHP 携帯ライブラリと位置情報ライブラリを使った簡易GPS検索プラグイン「GeoSimple Plugin」 : エクスギア Blog
http://www.exgear.jp/blog/2010/09/geo_simple_plugin/

便利そうなんだが、ライブラリ依存しないCakePHPのプラグインがライブラリ依存してるというのも皮肉な話だな
0622nobodyさん2010/09/17(金) 19:23:15ID:???
×依存
○利用
0623nobodyさん2010/09/17(金) 21:12:29ID:???
ま、使える物は便利に使わせてもらうぜ。先人達のご厚意だ。
0624nobodyさん2010/09/20(月) 01:01:46ID:???
CakePHP1.3のAuthを使った認証システムを作っています。
エラーメッセージを出そうと、Cookbookの
http://book.cakephp.org/ja/view/1252/Displaying-Auth-Error-Messages
を見て同じようにビューにecho $session->flash();と記述したのですが、
Undefined variable: sessionのエラーが出ます。

これはどうしてでしょう?$this->set('session', $session)みたいにして
ビューに渡す必要はないですよね?
0625nobodyさん2010/09/20(月) 01:23:29ID:???
↑の自己レスです。
ログイン情報を記述しているapp_controllerにヘルパーを指定してるのですが、
そこにSessionを指定しないとエラーが出るみたいです。
0626nobodyさん2010/09/20(月) 05:35:42ID:???
>>625
自分で言っているとおり、Sessionヘルパーを使うことを
宣言する必要があると思いますよ。

class AppController extends Controller{
var $helpers = array('Session');
}

Sessionコンポーネントは宣言してなくても使えるけど、
Sessionヘルパーは宣言する必要があったはずです。
0627nobodyさん2010/09/22(水) 08:56:04ID:R9kqnTJB
チュートリアルをはじめてるのですが、テーブルを作成するという箇所で
とまってしまってます。
データベースを作成する過程がないので、どのデータベースにテーブルを
作成するのかがわかりません。
0628nobodyさん2010/09/22(水) 08:58:32ID:???
好きなとこでいいよ。
チュートリアルの次のページを見れば分かる。
0629nobodyさん2010/09/22(水) 09:54:00ID:R9kqnTJB
>>628
ありがとうございます。
これで先に進めます。
0630nobodyさん2010/09/22(水) 14:23:14ID:???
cakephp以前の問題だな・・・なんだこのスレ
0631nobodyさん2010/09/22(水) 18:54:44ID:???
>>627
モデル名 → テーブル名

と考えるとわかりやすいよ。
ただし、モデルの命名規則とテーブルの規則は違うから注意。
例)モデルでUserならテーブルはusersを作成する
0632nobodyさん2010/09/22(水) 19:50:42ID:???
>>627がそういうことを聞いているようには見えない。
別に煽るわけじゃないんだが……
0633nobodyさん2010/09/22(水) 20:19:43ID:???
テーブルに命名規則があるからDB名にも命名規則があるのかと思っただけじゃない?
0634nobodyさん2010/09/22(水) 23:10:29ID:???
もう解決してんだろアホのくせに書き込むな
0635nobodyさん2010/09/23(木) 00:14:42ID:???
>>627の疑問は解決してても、俺らの疑問はまだ解決してない
0636nobodyさん2010/09/23(木) 08:16:19ID:???
たぶんネタだと思うが。
0637nobodyさん2010/09/23(木) 13:13:13ID:???
単なる初心者に対してそこまで深く追及する必要があるのか?
0638nobodyさん2010/09/23(木) 14:23:16ID:???
初心者をいじることに喜びを感じる奴が常駐してるから仕方ない
0639nobodyさん2010/09/23(木) 14:43:20ID:???
PHP歴3年で、開発してるがCake触ったことない俺がきたよ。
公式のサンプルやり始めた俺には参考になるよ。
命名規則で結構引っかかってたところ。

サンプルだとpostっていうモデル作ったら
DBはpostsにしろって言われてなんでsつけるのか意味不明だった。
コントローラーにもよくわからない形(posts_controller.php)
とか名前つけてるから?が多かった。

自動解釈してくれるからこういう形式にしろよって意味だろうけど
書籍なしでいきなり始めるとわけわかめ。
0640nobodyさん2010/09/23(木) 15:01:57ID:???
あのチュートリアルはニコニコとかYoutubeとかUstreamでyandodさんが解説してくれてるぞ、たしか。
0641nobodyさん2010/09/23(木) 15:15:12ID:???
英語の複数形だろ。。。>s
0642nobodyさん2010/09/23(木) 15:23:18ID:???
>>641
そんなことはわかってるが、なぜ複数形にする必要があるのか?
という点が意味不明だったわけだよ。
0643nobodyさん2010/09/23(木) 15:29:51ID:???
>>641
お前はもう黙ってろよ一生
0644nobodyさん2010/09/23(木) 15:32:43ID:???
レコード→post
テーブル→posts

レコードがたくさん集まってテーブルになるんだ。
これはphpやMVCとは関係ないDBの基本だからな、覚えとけよ。
0645nobodyさん2010/09/23(木) 15:56:34ID:???
>>640
ありがとう、早速動画見つけたので見てるが
すごいわかりやすくて助かる。

Cから入った人間だから、C++のときもそうだったけど
オブジェクト指向とか、MVCモデルについては
なかなかとっつきにくかったけど、これはありがたい。
0646nobodyさん2010/09/23(木) 16:05:37ID:???
bbsのためにbbssコントローラ作ったりするんだろうな
0647nobodyさん2010/09/23(木) 17:39:58ID:???
鯉を管理するためにはcarpテーブルが必要
単数形と複数形が同じなので注意!
0648nobodyさん2010/09/23(木) 20:19:39ID:???
ま、俺はs付けないけどな。
0649nobodyさん2010/09/24(金) 02:17:58ID:???
あの複数形と単数形のルール紛らわしいよな。
0650nobodyさん2010/09/24(金) 03:14:33ID:???
ところでさぁ。
新規の開発にしか使えないFWってどんなメリットがあるのよ?
既存の改修とかに使えないんだろ?
チンカスレベルの屑FWとしか言えんだろ?
0651nobodyさん2010/09/24(金) 03:55:59ID:???
作業高速化のためにFW使ってるのにわざわざそのFWに合わせて作り直すの?本末転倒だろ
0652nobodyさん2010/09/24(金) 08:33:43ID:???
ぶっちゃけ、大して作業が高速化する分けじゃないけどな。
むしろ命名規則にのっとたり、書き方も厳密にしなきゃいけないし、
よけない手間が増える。

だが、優柔不断な俺にはそれが良い。
■ このスレッドは過去ログ倉庫に格納されています