トップページ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
0771nobodyさん2010/10/08(金) 20:46:10ID:???
>>766=>>768なの?
paginate() paginateCount()はquery飛ばさなきゃいけないってわけでもないでしょ
0772nobodyさん2010/10/08(金) 21:13:20ID:???
>>770
マニュアルにバッドノウハウ書いてあるとか?
暗号化されてないデータをむやみにcontrollerに渡したくないんでしょ
0773nobodyさん2010/10/08(金) 21:19:28ID:???
フレームワークがフールプルーフである(そうあろうとする)必要はあるのかな。
それがPHPって言語の文化だろって言われたらそれまでだけど。
0774nobodyさん2010/10/08(金) 21:49:41ID:???
>>773
フレームワークだからこそ、フールプルーフなんじゃないか?
0775nobodyさん2010/10/09(土) 14:58:31ID:???
CakePHP辞典買ったけど、
リファレンスじゃなくて完全に関数説明だけだった・・・
0776nobodyさん2010/10/10(日) 04:22:23ID:???
>>775
関数説明ってリファレンスに含まれるんじゃないの?
0777nobodyさん2010/10/10(日) 09:05:18ID:???
>>776
ほとんど含まれていない。
単に「こういうクラスがあるよ。関数があるよ」っていう説明だけ。
0778nobodyさん2010/10/10(日) 11:37:36ID:???
買う前にパラパラっとみなかったのか
0779nobodyさん2010/10/10(日) 13:40:45ID:???
>>777がイミフなんだが解説してくれ
0780nobodyさん2010/10/10(日) 13:50:41ID:???
何がどうイミフなのかが分からない
0781nobodyさん2010/10/10(日) 14:01:37ID:???
>>779
逆引きリファレンスっぽいのを期待してたんじゃない?
単純に関数の説明だけならcook bookでいいじゃん!ってことかな
0782nobodyさん2010/10/10(日) 16:26:14ID:???
- tags
id, name
- posts
id, name
- posts_tags
id, post_id, tag_id
- アソシエーション
Post hasAndBelongsToMany Tag
Tag hasAndBelongsToMany Post
PostsTag belongsTo Post
PostsTag belongsTo Tag

こんな感じのテーブルとアソシエーションで
記事(post)に複数つけられるタグ(tag)の機能を実装すると期待通りに動作します。

ここで例えばタグのうちひとつを代表タグとして扱いたいとします。
そこで以下のようなテーブル変更とアソシエーション追加を試みたのですが
アソシエーションがぶつかって(?)bakeで焼かれたままのコードでも挙動がおかしくなります。

- 変更されたposts
id, name, tag_id (代表タグ用に追加)
- 追加されたアソシエーション
Post belongsTo Tag
Tag hasMany Post

たぶん発想が良くないんだと思いますが、一般的にこのような場合、
どういうアプローチで代表タグ(複数ひもづくタグのうち一つをメインにしたい)
を実装するのがベターでしょうか。
0783nobodyさん2010/10/10(日) 17:09:24ID:???
>>781
そう。そういうこと。
俺がこれまで買ってたリファレンス系は、だいたいその仕組みだったからさ。

あと、amazonで買ったから中身見られなかった。
こういう時に、中身検索があれば・・・
0784nobodyさん2010/10/10(日) 17:17:29ID:???
>>782
追加するアソシエーションはPost hasOne Tagじゃないかな?
ただ、どっちにしろアソシエーションを複数指定するのは避けられないので、
main_tagsテーブル(id, post_id, tag_id)を作って、Post hasOne MainTag、MainTag belongsTo Tagにすればいいんでない?
あとはtagsテーブルにmain_tag_flagを指定するとか?
0785nobodyさん2010/10/10(日) 17:17:35ID:???
>>782
混みいった質問は、フォーラムでするほうがいいんじゃないかな。
この場合は、『モデル』カテゴリかな…。
http://cakephp.jp/modules/newbb/viewforum.php?forum=6
0786nobodyさん2010/10/11(月) 02:33:23ID:Gg2rGqpO
$this->paginate=array(
 'ModelA'=>array(
  'fields'=>array(・,・)),
 'ModelB'=>array(
  'fields'=>array(・,・)))

てページネーションに複数モデルセットして出しても、なんか知らないがModelBの方のfieldsが効かないんですよ。
Aは効くんだけど。
誰かご存じの方いらっしゃらない?
0787nobodyさん2010/10/11(月) 13:42:26ID:???
>>786
$this->paginate('ModelA');
でデータ抽出してるんでしょ?
だったら、ModelA以下の設定しか使われない。

fieldの指定を、ModelA.field とか ModelB.field にしたらいいじゃないかと。
0788nobodyさん2010/10/11(月) 17:47:31ID:???
kohanaに挫折したのですがcakephpはもっと難しいですか?
0789nobodyさん2010/10/11(月) 17:54:41ID:???
PHPができれば誰でもできます
0790nobodyさん2010/10/11(月) 18:07:16ID:???
フレームワーク使うとURLがねぇ・・・
http://username.example.com/ とかできるの?
0791nobodyさん2010/10/11(月) 18:16:27ID:???
ちょっともう一回kohanaスレいって相談してきます
0792nobodyさん2010/10/11(月) 19:17:19ID:???
すいません助けてください
Windows
PHP5.3
cakephp1.3.4

http://localhost/~cakephp/って感じでapacheにuserdirを設定したのですが
cakephpが動かないためcakephpのトップに入っているhtaccessにrewrite base /~cakephp/って設定しました
そしたら動いたんですがこれで合ってますか?
あとサブディレクトリにhtaccessが2つも入ってますがそこにもrewrite base /~cakephp/を入力して何回かアクセスしたらエラーになりました
htaccessって全部修正するのでしょうか?
0793nobodyさん2010/10/11(月) 20:01:30ID:???
上にCakePHP: the rapid development php frameworkが表示されてて
右下にCAKEPHP POWERって画像が表示されるんですけど
自分で一から書いたHTMLを読み込ますのはどうやるのでしょうか?
0794nobodyさん2010/10/11(月) 20:08:33ID:???
>>792-793
おまえら、参考書くらい買え
0795nobodyさん2010/10/11(月) 20:53:57ID:???
参考書でざっくり理解したら、あとはココをちょくちょく見ながら。
http://book.cakephp.org/ja
0796nobodyさん2010/10/11(月) 20:54:30ID:???
794さんありがとうございます
おすすめのCakePHPの本を教えてください
07977932010/10/11(月) 21:09:47ID:???
793です
解決できました
default.ctpっていうファイルを作ってlayoutフォルダに入れたらいいみたいでした
0798nobodyさん2010/10/11(月) 21:18:50ID:???
>>790
サブドメインは超余裕

>>792
apacheいじれるのなら/app/webrootをルートにするんだ
ルートに置かないと後々問題出やすい

>>793
チュートリアルやれ

>>796
1.3対応書籍は不作だから公式のbookがいいぞ
どうしても本が欲しいなら、ガイドブックの1.2版がおすすめ

>>797
素晴らしい、その調子だ
0799nobodyさん2010/10/11(月) 21:27:09ID:???
フォーラムで質問するのとここで質問するのはどっちが言いと思いますか?
0800nobodyさん2010/10/11(月) 21:30:01ID:???
smartyならassignが出来れば他は知らなくてもいいような雰囲気あると思いますが
cakephpの場合はどれが出来るようになればいい雰囲気になれますか?
0801nobodyさん2010/10/11(月) 21:36:57ID:???
assignだけで済むようならそもそもsmartyなんて要らないはずだ
0802nobodyさん2010/10/11(月) 21:43:31ID:???
>>800
認証、フォーム使った入出力、モデルの読み書きとバリデーション、
複雑なSQLをModelクラスのメソッド使って組み立ててみる、
ぐらいが一通りできればあとは応用でなんとかなるような気がしないでもない。
ただ、単に「できる」のではなく内部的にどういう処理順序で
物事が進んでいくかを把握してないとダメだと思う。
フレームワークって何でもそうだと思うけど。
0803nobodyさん2010/10/11(月) 21:51:05ID:???
分かりやすかったです
フレームワークは初めてなので頑張って覚えます
0804nobodyさん2010/10/11(月) 22:00:17ID:Y80mjYyF
■app/controllers/hello_controller.php
class HelloController extends AppController{
var $name = 'hello';
var $uses = null;
function index(){$this->set('sample_text', 'Hello World!!');}
}

■app/views/index.ctp
<p><?php echo $sample_text ?>

入門用でHello World!!を表示できる所まで出来ました。
この場合MVCのVCしか使ってないと思うのですが、
データベースを使わない条件の時にMはどうやってファイルに書くのでしょうか?
0805nobodyさん2010/10/11(月) 22:09:17ID:???
>>804
モデル内で
var $useTable = false;

データベースを使わないメールフォームの処理などでよくやる処理
0806nobodyさん2010/10/11(月) 22:25:25ID:???
app/models/hello.phpを作り以下のように書きましたこんな感じでいいですかね
<?php
class hello extends AppModel
{
public $name ='hello';
public $useTable = false;

}

hello_controller.phpの$this->set('sample_text', 'サンプル');というのを↑hello.phpに書くというのは
できないのでしょうか?
ModelなのでデータをModelのファイルに書きたいと思いました。

0807nobodyさん2010/10/11(月) 22:43:34ID:???
>>806
>>794
0808nobodyさん2010/10/11(月) 23:25:25ID:???
おねがいぼくを一人前のケーキ職人にさせて
0809nobodyさん2010/10/11(月) 23:29:49ID:???
CakePHPが汚いとか言われるのは何故?
0810nobodyさん2010/10/12(火) 00:07:31ID:???
security componentには参ったな
0811nobodyさん2010/10/12(火) 02:33:30ID:???
>>809
口のまわりがべとべとになるから
0812nobodyさん2010/10/12(火) 11:14:11ID:???
>>795
そこリンク間違え過ぎだろ
0813nobodyさん2010/10/12(火) 11:18:49ID:???
アフィ張ってても構わないので入門サイト作ってください
フレームワーク初心者でも分かりやすいやつをわかりや
0814nobodyさん2010/10/12(火) 13:13:16ID:???
それこそcookbookのブログ作成で良いだろ
0815nobodyさん2010/10/12(火) 13:14:36ID:???
ブログ興味ないしあれは難しいからダメです
0816nobodyさん2010/10/12(火) 13:28:20ID:???
いや、あれが難しいなら何もできないだろ
PHP自体はどの程度できるの?関数とクラスはわかってる?
0817nobodyさん2010/10/12(火) 13:28:59ID:???
PHPが分かればCakeも分かるらしいです
0818nobodyさん2010/10/12(火) 13:30:04ID:???
書いてある通りにやればいいだけじゃん
0819nobodyさん2010/10/12(火) 13:42:53ID:???
ブログチュートリアルが難しいと感じるレベルなら、まだフレームワーク以前の段階だよ
簡単な掲示板とか作れるくらいの最低限の知識がないと触れない

ブログチュートリアルが終わってから何すればいいのかわからないって悩みなら共感できるけどね
0820nobodyさん2010/10/12(火) 13:43:50ID:???
掲示板作れますけどフレームワークはわかりません
0821nobodyさん2010/10/12(火) 14:37:20ID:???
わざわざフレームワークわかろうとすることないよ
使ってみて「おっいいね」と思った時だけ使えばいい
0822nobodyさん2010/10/12(火) 14:48:17ID:???
PHPPROで掲示板作る練習するとか
0823nobodyさん2010/10/12(火) 14:59:31ID:???
PHPproの先生方にCakePHP講座やってもらえばいい
0824nobodyさん2010/10/12(火) 15:07:21ID:???
ネットブックをメイン機にしてるんだが、
CookBookは文字が小さくてつらい。
で、画面を拡大すると、右側にはみ出した文字が
消えてしまう。
Firebugで原因を突き止め、

#content{
overflow: hidden;
}

#content{
overflow: visible;
}

に変えてくれるようにMark Storyさんにメールだした。
で、『I'll see what I can do about that.』と返事が来た。
でも、いまだに直っていない。
…待ってる。……ずっと…、待ってる…(つД`)
0825nobodyさん2010/10/12(火) 15:12:01ID:???
お前良い奴だな
0826nobodyさん2010/10/13(水) 09:37:00ID:???
あみんか
0827nobodyさん2010/10/13(水) 15:06:31ID:???
UNIONをSQLを直接書かずにする方法ありますか
0828nobodyさん2010/10/13(水) 16:15:45ID:???
無いです
0829nobodyさん2010/10/14(木) 20:47:39ID:???
今日一日で簡単な会員管理システム的な物を作ったけど、
簡単すぎてどこかでバグや不具合が出ないか不安・・・
一応、今まで作ったファイルを元にしたけど
0830nobodyさん2010/10/14(木) 21:37:08ID:???
重要なのはどれだけ簡単か(どれだけ手間をかけたか)じゃなくて、
フレームワークが勝手に余計なことをしていないかどうかだよな
0831nobodyさん2010/10/14(木) 21:40:50ID:???
そうだな。そしてそれを判断するには、やっぱり時間と経験が必要だよな。
0832nobodyさん2010/10/15(金) 11:29:10ID:???
質問です。
エレメントにデータを渡したいんですが、
http://book.cakephp.org/ja/view/560/Passing-Variables-into-an-Element
ここの始めにあるサンプルコードは、どのファイルに書けばいいんですか。
0833nobodyさん2010/10/15(金) 11:37:12ID:???
>>832
エレメントを呼び出すビュー
0834nobodyさん2010/10/15(金) 12:01:21ID:???
>>833
できました。
ありがとうございます。
0835nobodyさん2010/10/15(金) 12:56:11ID:???
君は飲み込みがいいな
0836nobodyさん2010/10/15(金) 18:22:40ID:???
Authを使った1回目のログインが失敗し、
更新ボタンを押して繰り返すとログイン出来る時があるのですが、
これってモデルのキャッシュ(app/tmp/cache/models)が影響してるんですかね?

beforeFilterで $this->User->create() を入れてモデルを初期化したら
今のところ、上記のような動作にならないのですが。
(モデルキャッシュを削除するのに、この方法で良いかは分かりませんが・・・
0837nobodyさん2010/10/15(金) 18:56:44ID:???
ヘルパーの書き方って、
$html->link



$this->Html->link

どっちが推奨なのかな?

後者のほうが、変数名が衝突しなくてよさそうだけど。
0838nobodyさん2010/10/15(金) 19:47:34ID:???
前者。
CakePHPのテンプレートの中で$htmlという変数名を見たら
10人中9人がHtml helperのことだと思う。
その変数名を別のことに使おうという発想自体いただけない。
考慮する必要もない。
0839nobodyさん2010/10/16(土) 08:41:58ID:???
>>837
1.3は後者だね
$htmlは非推奨、互換性のため残してあるだけ
0840nobodyさん2010/10/16(土) 10:32:49ID:???
普通に使ってたものを急に非推奨にするからウザいわー
0841nobodyさん2010/10/16(土) 10:47:47ID:???
でも後者の方が良いな。$htmlだと変数かオブジェクトか紛らわしい
0842nobodyさん2010/10/16(土) 12:13:21ID:???
ヘルパーだろ?紛らわしくなるほどviewが複雑になってるほうがおかしい
0843nobodyさん2010/10/17(日) 16:51:23ID:/5W8QVHN
saveAllで3、4階層まで再帰的にsaveさせたい。
みんなどうしてる?
0844nobodyさん2010/10/17(日) 17:13:08ID:???
3、4階層までさせない。だいたい2階層まで。
08458432010/10/17(日) 18:22:28ID:/5W8QVHN
saveAllは2階層までしか再帰的にでないないですよね。
(TranzactionもsaveAllの中では自動)
3,4階層はTranzactionはってsaveするしかないですよね。

>>844
なるほど、2階層までですね。
0846nobodyさん2010/10/18(月) 02:21:51ID:???
1.2の頃は「cakeはstableを名乗っていても全然stableじゃない」なんて言われてたけど、最近はちゃんとstableなの?
0847nobodyさん2010/10/18(月) 08:30:07ID:???
同じ1.3.4をダウンロードしたのに、時期によって中身が微妙に違ってた。
なんというかバージョンはあてにならん。
0848nobodyさん2010/10/18(月) 12:01:33ID:???
それ、本当ならひどいな
0849nobodyさん2010/10/18(月) 13:09:32ID:???
バージョンの意味がねえwww
0850nobodyさん2010/10/18(月) 16:26:16ID:???
んなことあるわけねーだろ
0851nobodyさん2010/10/18(月) 16:27:39ID:???
つか1.3.4.****
このリビジョン部分が変わってんじゃないの?
svnで管理されてるんだから気になるならリポジトリ入って見てみろよ
0852nobodyさん2010/10/18(月) 22:49:35ID:???
viewのelement間で、共有変数を使うことは可能ですか?

例えばの話、
elementAで
i++;
elementBで
i++;
と定義しておいて、elementAを2回、elementBを1回呼んだとした場合、
iを参照して3という値を取りだしたいのです。
08538522010/10/18(月) 22:53:25ID:???
追記です。
案としてsession変数を使用したのですが、viewからはSessionに書き込めないとのエラーとなりました。
代替の手段ありましたらお教え頂ければと思います。
08548522010/10/18(月) 22:59:34ID:???
解決しました。
ヘルパー内にpublicな変数を定義しておけば、element間で共有参照できます。
ありがとうございました。
0855nobodyさん2010/10/19(火) 16:16:01ID:???
cakeが扱えるようになるとphpの世界は変わって見えますか?
0856nobodyさん2010/10/19(火) 20:42:14ID:???
見えない
0857nobodyさん2010/10/19(火) 21:30:04ID:???
>>847
そんなのよくあることだよ。
写真とかも修正してあるしさ。
風俗では。
0858akiyan2010/10/20(水) 00:32:48ID:???
いやホントに
改めて言うのも照れてしまうけれど花金明け土曜日0時なら俺は言える
「CakePHPこそフレームワークの完成形だと」

The Standard Languageの座を揺るぎないものとしたPHP
20世紀エンジニア達の知の結晶とも言うべきMVC
ここにRuby on Railsというスパイスが加わってCakeは生まれた

全くこれは何だっていうんだい 奇跡なんて陳腐なもんじゃない
おそらくはCOBOLが生まれた時点でPHPの誕生は決定済みであったろうし
Rubyは図らずもCakeの為に作られたと言っていいんじゃないか

RubistやDHH、それに20世紀を生きた全てのエンジニア達が費やした途方もない時間
それらはすべてCakeに繋がった Cakeのために彼らの汗が流された
逆じゃないんだ Cakeは結果じゃない
Cakeが始まりであって、Cakeの生誕のためにRailsがあり、Rubyがあった

20世紀を生き、そして21世紀に歩を進める全てのwebに関わるエンジニアのための心臓、それがCake
俺はCakeの時代に現役でいられたという事を誇りに思うだろう
死ぬ間際に息子と娘と孫と妻、そしてCakeの事を思うだろう

あぁCakeよCake お前は俺の中にあるし、Cake内部にも俺がいる
うまく言葉にできねぇな、とにかくCakeはもう21世紀エンジニアの魂だ

そして最後に
最愛の妻と友人、そしてペニーオークションに幸あれ
0859nobodyさん2010/10/20(水) 00:56:30ID:???
どこのコピペでちゅか?
0860nobodyさん2010/10/20(水) 09:07:36ID:???
オライリー本の謝辞みたい
0861nobodyさん2010/10/20(水) 11:51:56ID:???
最近のコピペって最後にペニーオークションについて書かれていることが多いよね
0862nobodyさん2010/10/20(水) 14:17:04ID:???
違う。ペニーオークションが好きな一人が貼りまくってるだけ
0863nobodyさん2010/10/20(水) 22:49:55ID:???
親に感謝するのはラッパー
妻と友人に感謝するのはオライラー
0864nobodyさん2010/10/20(水) 23:25:38ID:???
妻も友人もいないのがオマエラー
0865nobodyさん2010/10/21(木) 13:20:54ID:???
と、と、トモダチぐらいいるよ!
0866nobodyさん2010/10/21(木) 20:28:38ID:???
よ、よ、嫁だっているさ!
0867nobodyさん2010/10/21(木) 21:00:33ID:???
もちろん三次元に、ですよね?
0868nobodyさん2010/10/21(木) 21:04:18ID:???
どどどど童貞ちゃうわ
0869nobodyさん2010/10/22(金) 09:27:32ID:???
嫁はいるのに童貞なのがお前らじゃないか
0870nobodyさん2010/10/22(金) 10:06:25ID:???
空気嫁
■ このスレッドは過去ログ倉庫に格納されています