【PHP】フレームワーク CakePHP 11ホール目【v1.3】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/02/16(水) 21:52:35ID:zCTGjUMqCakePHPから派生した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
0405nobodyさん
2011/03/22(火) 00:59:49.73ID:???仮登録は普通空メから始めないか?
フォームから始めると登録する方も運営者側も面倒なことになりそう
フォームでメアドを入力させるとなると、複数のフィールドを見なきゃいけないので、isUniqueをそのままは使えないし
この辺を参考にして複数フィールドのチェックしてみたら?
http://dxd8.com/archives/212/
0406nobodyさん
2011/03/22(火) 16:50:27.43ID:???それ、携帯サイトだけだろ。
0408nobodyさん
2011/03/23(水) 02:19:41.25ID:???Cakeのdatabase.phpで接頭辞を指定した時、
モデルによって別の接頭辞を参照させる事って出来るのでしょうか?
0409nobodyさん
2011/03/23(水) 02:34:35.94ID:???$model->tablePrefix で接頭辞は設定できるよ
0410nobodyさん
2011/03/23(水) 04:31:57.56ID:???0411nobodyさん
2011/03/23(水) 17:03:31.26ID:???どのようにすればよいでしょうか?
0412nobodyさん
2011/03/23(水) 21:52:21.71ID:???0414nobodyさん
2011/03/24(木) 22:31:38.58ID:???0415nobodyさん
2011/03/25(金) 00:11:11.21ID:???0416nobodyさん
2011/03/25(金) 01:26:19.03ID:???CodeIgniter並とは言わないが
0417nobodyさん
2011/03/25(金) 01:54:30.06ID:???appコントローラーに書いたコードをやっぱりコンポーネントに書こうとか。。
と考え出すとリファクタリングの沼に入る。
小さいアプリならOK。大規模アプリならOK
しかし中途半端な規模のアプリだと途端に境界性が曖昧になる。
0418nobodyさん
2011/03/26(土) 11:46:01.37ID:???悪いことをするつもりはありませんがw wikileaksのハッカーに興味をもっております
彼らは、どうやってするのでしょうか?非常に興味があります。よろしくお願いします。すいません。マルチします。
0419nobodyさん
2011/03/26(土) 11:57:35.71ID:???0420nobodyさん
2011/03/26(土) 15:25:23.14ID:???ハッカー入門の定番といえばHow To Become A Hacker
http://cruel.org/freeware/hacker.html
0421nobodyさん
2011/03/26(土) 16:09:31.08ID:???wget --no-check-certificate https://github.com/cakephp/cakephp/tarball/1.3.8
0422nobodyさん
2011/03/28(月) 22:15:30.46ID:???0423nobodyさん
2011/03/28(月) 22:21:48.45ID:???0424nobodyさん
2011/03/28(月) 22:50:29.41ID:???0425nobodyさん
2011/03/28(月) 23:52:08.29ID:???0426nobodyさん
2011/03/30(水) 22:32:56.78ID:???のテーブルの場合、ルーティングどうしてる?
「会員の日記に新規登録」みたいな要件の時、
普通に/user_diary/add みたいな形?
それともルーティングして /user/diary/add みたいに分けるとか?
ピュアPHPで言うとディレクトリ分けして /user/diary.php、/user/diary_add.php
みたいなファイル名になると思うけど、Cakeの場合どうしたらいいか悩む。
0427nobodyさん
2011/03/30(水) 22:55:24.34ID:???なぜuserが必要になるのか
0428nobodyさん
2011/03/30(水) 23:21:05.99ID:???あるいは、ぐるなびのようにお店が日記書く場合は?
前者はadmin_diaryで後者はshop_diaryにテーブル名がなると思うんだが。
0429nobodyさん
2011/03/30(水) 23:32:41.51ID:???0430nobodyさん
2011/03/30(水) 23:55:08.49ID:???それなら新規登録とか編集の場合はどうするの?
0431nobodyさん
2011/03/30(水) 23:58:44.61ID:???0432nobodyさん
2011/03/30(水) 23:58:59.11ID:???0433nobodyさん
2011/03/31(木) 01:46:28.99ID:???prefixの事でもないんだろ?
0434nobodyさん
2011/03/31(木) 01:47:51.69ID:???全然答えが違うのは俺が糞質問したせいですかそうですか
0435nobodyさん
2011/03/31(木) 09:51:47.82ID:???0436nobodyさん
2011/03/31(木) 10:17:31.74ID:PPG+iO3gユーザ日記
/diaries/add
管理者日記
/admin/diaries/add
admin部分の文字列は自由に変更できます
0437nobodyさん
2011/03/31(木) 11:02:48.89ID:???http://www.localhost.com/diary
ユーザーなら
http://www.localhost.com/user/diary/2011/03/25
だろzk
0438nobodyさん
2011/03/31(木) 12:10:57.75ID:???0439nobodyさん
2011/03/31(木) 12:24:42.78ID:???0440nobodyさん
2011/03/31(木) 13:16:31.72ID:???あえてテーブルを分ける必要があるとは思えない。
diaryテーブルを作ってUserに紐付ける。
userが管理者なのかショップなのか一般ユーザーなのかはGroupで分ける。でいいと思うんだけど。
そうすればACLでそれぞれの権限を付けるのも楽だし。
0441nobodyさん
2011/03/31(木) 14:29:12.31ID:???その方法もありなんだが、テーブルがごちゃまぜにならないか?
今回の例は「日記」だけど、これが「カテゴリ」だったらどうだ?
テーブルのカラム構成は一緒だろうけど、中身が違ってややこしいぞ。
0442nobodyさん
2011/03/31(木) 14:33:03.85ID:???用途毎にテーブルを分けた方が良いと思うんだけどな
どうも>>436-437や>>440のいう設計が俺には具体的に理解できない
0443nobodyさん
2011/03/31(木) 16:20:17.53ID:???俺も>>440とおなじ設計をする。
ECサイトを設計するとして、
服と靴は別テーブルにしないだろ。
ショップが複数のECサイトだとしても、
商品テーブルはひとつだろ。
0444nobodyさん
2011/03/31(木) 16:23:52.64ID:???テーブルがごちゃまぜになっても、必ずuserならuserに紐付いてるわけだし、
データを適切に出し入れすればいいだけなので、
俺は何も困らないけど。
cakeから見て違うものとして扱いたければ、テーブルは同じでもモデルを複数作ればいいし。
0445nobodyさん
2011/03/31(木) 16:58:51.59ID:???いまだによくわからない。
0446nobodyさん
2011/03/31(木) 18:21:32.92ID:???なるほどな。必要以上に正規化しすぎなのかもな。
>>445
俺は「日記」というコンテンツがあったら、
使用する人毎にテーブルを分けると思ってるんだよ。
だから、>>426みたいな質問をしたんだが、
そうなるとルーティングとか考慮しなければ行けないし、
app以下のファイル構成もどうしようかと悩んでたんだ。
まぁ、app以下の構成については同じテーブルを使うにしても悩むけど。
0447nobodyさん
2011/03/31(木) 19:16:46.21ID:???そうだね。
例えばユーザーの追加と削除する場合の事考えてみたらいいかもね。
君の設計だと、ユーザーを追加するたびにテーブルとプログラムを追加することになるし、
削除する場合もテーブルのドロップとプログラムの削除が発生する。
他の人の場合だと、ユーザーテーブルにユーザーを追加or削除で完了する。
0448nobodyさん
2011/03/31(木) 20:46:25.50ID:???ま、俺の場合は「会員」とか「店」とか固定ユーザは決まってるから
そんな頻繁にテーブル作成が発生するとは思えないんだけどね。
OSSのシステム見ると、割とテーブル分けているケースが多いんだけど、
それはOSSだからであって、実際は分けないのかな。
0449nobodyさん
2011/03/31(木) 20:57:27.72ID:???>俺は「日記」というコンテンツがあったら、
>使用する人毎にテーブルを分けると思ってるんだよ。
これは、Aさんというユーザが居たら、Aさん用のテーブルを追加するって
意味じゃないからなw誤解を与える書き方してすまん。
普通に、user_diaryは会員用の日記テーブルで、
shop_diaryは店用の日記テーブルって意味です。
0450nobodyさん
2011/03/31(木) 22:42:57.35ID:???0451nobodyさん
2011/04/01(金) 02:01:02.57ID:vplR+RLt0453nobodyさん
2011/04/01(金) 19:42:12.09ID:OVR2Hl6Vさすがにpaginate関連は移動できないですよね?
0454nobodyさん
2011/04/01(金) 22:33:37.22ID:???0455nobodyさん
2011/04/01(金) 23:28:23.20ID:???0456nobodyさん
2011/04/02(土) 04:18:30.00ID:???問題だと思うんだが。
リプレイス案件とか既存のシステムと同じDBを使うとかだと
逃げ道作ってくれないと困るんだよ・・・
0457nobodyさん
2011/04/02(土) 17:31:31.80ID:???0459nobodyさん
2011/04/02(土) 20:40:40.45ID:???ActiveRecordを実装するにはO/Rマッパーが必要で、
O/Rマッパーは複合キーと相性が悪いよね。
ActiveRecordにも得手不得手があるから、ActiveRecordが苦手なスキーマが必要ってなら、
ActiveRecordを前提に成り立ってるフレームワークであるCakePHPは、
そもそも道具選びが間違ってるんじゃないかな。
それは言いすぎだとしても、
CakePHPをはじめとしたフレームワークは、
ニーズの多いところをよりよくカバーするから、
ニーズの少ないところにサポートが無いのはしょうがないと思うよ。
各テーブルにidという主キーが必ずあるようなスキーマで、
大抵のものは作れるし、その規約に沿ったほうが楽ってのもあるね。
長々と書いたけど、
俺はそんなスキーマで作るようなのしか、今のところ作る予定が無いから、
複合キーなんていらなかったにゃって思ったんだ。
もちろん冗談交じりだぞ。
0460nobodyさん
2011/04/03(日) 01:00:03.54ID:???0461nobodyさん
2011/04/03(日) 09:43:57.18ID:???0462nobodyさん
2011/04/03(日) 17:15:58.87ID:???英語版はまだマシだけど、
日本語版は古い・間違いが多い・サンプルがシンプルすぎて実務で悩むとこは結局学習できない。
読む必要が無いってわけじゃないんだけど、Cookbookだけだとつらいと思うよ。
CakePHPによる実践Webアプリケーション開発って本を参考にしたけど、
これはもう古いからなぁ。1.2ベースだし。
でも一応、Cookbookのサンプルを作って基本的なことを理解してからなら、
この本はそこそこ役に立ったよ。
余談だけどACLが複雑すぎて使う気が起こらない。
0463nobodyさん
2011/04/03(日) 23:06:40.74ID:???そういうユーザーが多いから、良い本が少ない→売り上げ少ない→次の本が出ない、の悪循環なんだろうか
0464nobodyさん
2011/04/04(月) 00:08:26.97ID:6xfhCachCookBookには詳細な機能はあまり丁寧に載っていないので、いちいちネットで調べることが多くなってくる。
そうなったらリファレンス本を買って眺めながらいろいろつくってみるといい。
自分の場合はそれでかなり覚えたよ。
個人的には秀和システムのCakePHP辞典がおすすめ。
手持ちの初版には誤字が少しあるけど、暇な時に眺めるだけでおもしろい。
0465nobodyさん
2011/04/04(月) 01:12:38.49ID:???自分が何したいかで調べたらいいし、作者の作法を身につけなくても良い
Cookbookで流れをつかんで、開発しだしたらAPI Class Indexを参照すればほぼ足りる。
そのうちタイミングとかインスタンス生成が気になってソースを見ることになるけど。
0467nobodyさん
2011/04/04(月) 04:07:47.83ID:her01YtQ俺はctpファイルの先頭に、
<?php $this->set('title_for_layout', '新規投稿'); ?>
みたいにしてるけど
他にスマートな方法あるかな?
コントローラのアクションの中に書くのはまずいよな。
タイトルはビューの情報だし
0468nobodyさん
2011/04/04(月) 09:57:31.52ID:???てか、例えばユーザーのプロフィールページの場合、ユーザー名とか書きたいから、
モデルからユーザー名など貰って、アクションでセットする事になるんじゃ。
0469nobodyさん
2011/04/04(月) 10:59:35.73ID:???controller見なきゃ行けないというのがな・・・
かといってビューで編集するのもなんか違う気がするし
0470nobodyさん
2011/04/04(月) 11:43:22.82ID:???設定ファイルの中に、
$config['title']['Users']['signup'] = '新規登録';
みたいに、コントローラー名、アクション名をキーにした設定を作る。
コントローラーから
$pagetitle = Configure::read('title'.'.'.$this->name.'.'.$this->action);
って感じで読み込んでタイトルにセットする。
ってやればタイトルは設定ファイルで管理できるよ。
0471nobodyさん
2011/04/04(月) 13:41:54.22ID:???0472nobodyさん
2011/04/04(月) 14:25:48.01ID:???0473nobodyさん
2011/04/04(月) 16:00:00.04ID:???Cakeってかphpで作る必要ないっしょ。
0475nobodyさん
2011/04/04(月) 20:26:13.06ID:???変数にタイトルをセットしてエレメント呼び出しの手順で。
0478nobodyさん
2011/04/05(火) 01:09:57.20ID:???リクエストを送っても何も戻ってこないんですが
modelフォルダの中に何も入れてないのがいけないのでしょうか?
教本にはcontrollerのファイルとcomponentのファイル、ctpファイル、と合計3つしかファイル作ってないんですが・・・
0479nobodyさん
2011/04/05(火) 02:03:54.39ID:???とりあえず
・cakephpのインストール完了画面を出す
http://futuremix.org/wp-content/uploads/2010/06/cakephp_warning-500x273.png こんな感じの
・controllerだけでhello worldを出す
この2点をやるのが先だ
0480nobodyさん
2011/04/05(火) 02:28:06.37ID:9HAh5AGuちなみにUtilクラスとはDateUtilとかStringUtilとか
共通処理を集めたスタティックメソッドのクラスです。
0481nobodyさん
2011/04/05(火) 02:52:43.54ID:???http://book.cakephp.org/ja/view/899/CakePHPのフォルダ構造
を見るといいです。libsかvendorsのどっちか。
0483nobodyさん
2011/04/05(火) 07:47:02.08ID:???うちはvendorsにcommon_function.phpを置いて、
app_controller.phpでrequired_once
0485nobodyさん
2011/04/05(火) 10:52:01.47ID:???ただ、ググったサイトを参考にHello_World_controller.phpをつくり、ソース↓
<?php class HelloWorldController extends AppController {
public $name = 'HelloWorld';
public $uses = array();
public $autoRender = false;
function index()
{
echo "hello world!";
}
}?>
これをapp/controllersフォルダに入れて、xxx/hello_world/にアクセスしたところ、
HelloWorldController could not be found.と言われてしまいます。
なぜ認識してくれないんだろうか、、、
0487nobodyさん
2011/04/05(火) 11:39:44.86ID:???度々失礼いたします。それはHello_World_controller.phpのファイル名ってことですよね。
誤字脱字がないことを確認して、もしかしてアンダーバーが悪いのかと消したりしたんですが
どうにも認識してくれません。。。↓のサイトのまんま参考にやってみたのですが、、、
ttp://ameblo.jp/tondemonight/entry-10117208283.html
理解力のない馬鹿ですいません。もう一息ヒントをいただけませんか。
0488nobodyさん
2011/04/05(火) 11:42:45.36ID:???すいません、$nameの部分だったんですね。できました!!
ありがとうございました!
0489nobodyさん
2011/04/05(火) 14:46:55.58ID:???JSON形式で出力するはずが、HTML形式で出力されているのが原因でした。
478で言っているctpファイルで、JSON形式にエンコードする旨が書かれているのですが、
調べたところ、layoutフォルダにdefault.ctpを作ればよいと書いてあり、
[default.ctp]
<?php echo $content_for_layout; ?>
というファイルを作ったところ、確かにブラウザで直アクセスしたときの表示は変わったのですが、
javascriptからのリクエストに対するレスポンスは変わらずHTML形式のままでした。
あともう少しだと思うのですが、、、何か良い方法があればご教授ください。
0490nobodyさん
2011/04/05(火) 16:15:37.38ID:???0491nobodyさん
2011/04/05(火) 17:15:06.34ID:???0492nobodyさん
2011/04/05(火) 20:52:45.33ID:???0493nobodyさん
2011/04/06(水) 02:23:36.12ID:3ifgNuIvつCakePHP 規約ワードメーカー
http://www.cpa-lab.com/tech2/inflects/
0494nobodyさん
2011/04/06(水) 03:25:19.02ID:???これってややこしいよな。それならテーブル名がwomanでもいいじゃん。
Cakeの規則に合わせるのは大事だけど、
英語得意じゃない日本人にとっては、分かりやすい形で良いと思うんだけどなあ
0495nobodyさん
2011/04/06(水) 06:51:01.77ID:6d97kR6lいや、
Aというデータがあるとして、
・Aの複数形=その中には複数のAデータがある
・Aの単数形=Aのデータ1つ
複数形は、DBでいうとテーブル。
プログラミング言語では配列。
単数形は、DBでいうとレコード
プログラミング言語では配列でない変数
複数形になれると、無意識に使うようになるよ。
英語が得意でなくても英単語覚えるのは別。
実際英単語組み合わせてプログラミングしてるんだから。
0496nobodyさん
2011/04/06(水) 11:34:08.35ID:???だから、それらを開発者が、あるいはその他の人間が覚える必要あるのか?
と言いたいんだ。せっかく作ったのを自慢したいのはわかるけどさ。
別にテーブル名はあくまで”識別名称”なだけだから、何だって良いんだよ。
別にCakeに従わないからと言ってエラーになるわけじゃないんだし。
womanという単語で分かるなら、womanというテーブルで良いんだ。
categoryをcategoriesにしなくても良いんだよ。categorysが誤訳でもさ
0497nobodyさん
2011/04/06(水) 12:49:30.36ID:???皆が1つのルールを覚えて使う事による効率というのがあるんだよね。
というかフレームワークってそういうためのもの。
使わない自由もあるけど、Cake使うならCakeのルールを覚えて使う事をお勧めするよ。
まあCookbookでpeopleテーブルととPersonモデルって見たときは、
最初は誤植か何かかと思ったよ。
そしてちょっとやりすぎだとは思う。
0498nobodyさん
2011/04/06(水) 13:56:28.56ID:???0499nobodyさん
2011/04/06(水) 13:59:00.24ID:???0500nobodyさん
2011/04/06(水) 14:06:34.56ID:6d97kR6lあなたプログラミングに向いてないわ・・・。
自分が気にしないからって、categorysとか付けちゃう人と開発したくないな。
自分しか触らないって言うんだろうけど、
その精神は今後絶対に成長に影響する。
不特定多数が使うようなライブラリを開発することも、
複数人で開発することも、全て否定するんだよね。
>>498
一人で開発しようが、規約(=レール)は大事だよ。
統一された規約のもと開発するのは、とても安心するし、効率的。
そのレールの上に乗って進んでいくだけになるからな。
0501nobodyさん
2011/04/06(水) 14:18:49.90ID:???普通に複数人で開発に使えると思うよ。
シンフォニーと比べると、規模は小さめのあたりが得意だとは思うから、
人数的にも少なめかもしれないけど。
関係ないけど、シンフォニーっていつも綴りわからんくなるわ。
0502nobodyさん
2011/04/06(水) 15:28:30.51ID:???逆だ逆。俺は仕様にめちゃくちゃこだわって規約を厳守するようにしているが、
結局、人間だ。必ず・絶対厳守させるには、それ相応の知識・経験が必要。
で、womanをwomenに変えなくても一般的なwomanで皆が分かるなら
それで良いじゃんって話だ。俺もそれで良いと納得してる。
お前は自分が作ったツールを是が非でも認めて貰いたいのかも知れないが、
ぶっちゃけ、お前のそれは無駄だと思う。
0503nobodyさん
2011/04/06(水) 15:30:04.66ID:???まぁ、それならそれで良いよ。ただ、そういうプロジェクトもあるって事は理解しろよ。
0504nobodyさん
2011/04/06(水) 15:54:13.60ID:???■ このスレッドは過去ログ倉庫に格納されています