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

【PHP】フレームワーク CakePHP 7ホール目【v1.2】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2009/09/01(火) 16:12:06ID:XVdxsVut
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです。

※sage推奨
テンプレは>>1-5くらい

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

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
CakeMatsuriTokyo2009
http://matsuri.cakephp.jp/
0249nobodyさん2009/10/14(水) 00:24:00ID:???
>>247-248
おまえら呆れるほど親切な。
0250nobodyさん2009/10/14(水) 02:10:30ID:hSMBoxY0
>>246
出力自体は正しくてブラウザの認識が間違ってるから、たぶんtitleタグの後に文字コード指定してるんじゃね?
0251nobodyさん2009/10/14(水) 04:41:13ID:???
apacheの設定
0252nobodyさん2009/10/14(水) 13:09:20ID:???
アソシエーションされたモデルのビヘイビアはコールバック呼ばれない
これは糞仕様としか言いようがない。
0253nobodyさん2009/10/14(水) 16:04:02ID:???
ちゃんとティッシュとハンカチ持った?
0254nobodyさん2009/10/14(水) 23:54:42ID:???
たまにトイレットペーパーが有料の公衆あるよね
0255nobodyさん2009/10/15(木) 10:04:12ID:???
>>254
外で100円で流せるティッシュ買うんじゃなくて?
0256nobodyさん2009/10/15(木) 10:20:40ID:???
新宿東口改札のは有料だな
入ったことないかどういうシステム化は知らんけど
0257nobodyさん2009/10/15(木) 15:42:13ID:???
おまえら、ウ●コの話にマジレスしないでいいよw
0258nobodyさん2009/10/15(木) 17:50:40ID:???
cakephp 1.1 と cakephp 1.2 って最初っからプログラムを作り直しているのかな?
もちろん使える部分はそのまま使うんだろうけど。

どうなんでしょ。教えて下さい。
0259nobodyさん2009/10/15(木) 18:45:46ID:???
cakephp フレームワーク自体のこと?
cake1.1の上で作ったアプリを1.2にアップグレードする際の話?
どっちにしてもフルスクラッチはない
0260nobodyさん2009/10/15(木) 18:50:49ID:???
1.1.x->1.2.xは拡張でしょ
2.xはほとんど一からじゃない?
0261nobodyさん2009/10/15(木) 20:27:44ID:???
>>259
cakephp フレームワーク自体のこと です。

>>260
拡張なんですかー。


ありがとうございました!
0262nobodyさん2009/10/16(金) 12:18:40ID:???
Cake2.xを業務とかに使っている方っていますか?
0263nobodyさん2009/10/16(金) 12:37:24ID:???
います
0264独身男32歳2009/10/16(金) 23:56:32ID:???
>>263
紹介して下さい
0265nobodyさん2009/10/17(土) 10:33:23ID:???
僕の会社で2サイトほど構築しました^w^
0266nobodyさん2009/10/17(土) 11:39:57ID:???
業務レベルの完成度なのか?
ちょっと試してみたいな
0267nobodyさん2009/10/17(土) 11:47:23ID:???
>>266
なにを持って業務レベルと言うのか教えていただきたい。
煽りじゃなく今後の参考として。
0268nobodyさん2009/10/17(土) 15:03:12ID:???
>>267
266じゃないけど少なくともcakephp1.1は業務レベルだとは思わなかった。
理由・重すぎ。
0269nobodyさん2009/10/17(土) 23:40:18ID:???
>>268
APCでも入れておけ
0270nobodyさん2009/10/18(日) 01:00:38ID:???
>>267
定義づけしろと言われると難しいな
セキュリティや負荷問題などに明るい人が、「cake2を導入して開発することによってcake1よりも
開発効率が上がったり運用コストが下がるなどのメリットがある」と判断するレベルということなんだろうか。
俺はセキュリティとか負荷には弱いので他人の意見に頼るしかないんだけど。
セキュアである程度軽い、大きな仕様変更が予測されない、というのが業務レベルと呼べる必須条件な気がする。
0271nobodyさん2009/10/19(月) 22:33:13ID:???
小規模なものでもFW使っているのですか?
ファイルがたくさん増えて逆に面倒かと思うのですが。
pearとかPECLとか何を使うか習得すべきかわからなくなってきた
0272nobodyさん2009/10/19(月) 23:09:54ID:???
>>271
ファイルはたくさんだけど、どうせいじるのはMVCくらいだし。
今は簡単なツールでさえCake使ってるわ。
1から書く手間を考えたら、Cakeの初期設定やった方が早いし簡単。
0273nobodyさん2009/10/19(月) 23:29:10ID:???
>>271
ああ、小規模なものは直接自分でちゃちゃっと書いた方がいいことがよくある。
でも時間に余裕があるなら練習としてCakeでやってみるのも悪くない。
02742712009/10/20(火) 00:09:35ID:???
作っていてDB接続はなにでするべきかなどで悩んでしまいます。
意外と触るファイルは多くないのですか。
できればライブラリなどは使用したくないのでFWで対応できるなら理想的です。
cakeやってみたいと思います。
0275nobodyさん2009/10/20(火) 21:43:59ID:RAVGwnC1
htmlヘルパーのlink()について質問です。

今「cakephpによる実践webアプリケーション開発」で勉強してるんですけど、
<li><?php echo $html->link(__('Weeky', true), array('controller'=>'schedules', 'action'=>'index', 'id'=>'week', date('Y/m/d',$times['from_time'])));?></li>
<li><?php echo $html->link(__('Monthly', true), array('controller'=>'schedules', 'action'=>'index', 'id'=>'month', date('Y/m/d',$times['from_time'])));?></li>
<li><?php echo $html->link(__('Daily', true), array('controller'=>'schedules', 'action'=>'index', 'id'=>'day', date('Y/m/d',$times['from_time'])));?></li>
っつーところがあるんですが、

link()のarrayの
controller=>・・・
action=>・・・
があるのはいいんですけど、
id=>・・・
って何の為にあるんですか?
こういう場合、どこにid=の指定先があるんですか?

色々ぐぐったりしてもid指定がそもそもわからなかったので、どなたか教えてください。
0276nobodyさん2009/10/20(火) 22:27:04ID:???
何が知りたいのかわからんが。。。

Router::urlを使ってるんだけど
/:controller/:action/:id/
っていう文字でわたすか、
array(
'controller'=>':controller',
'action'=>':action',
'id'=>':id'
)
ってわたせる。

で、これでもわかんなかったら何にもわかってないはずだから一からマニュアルよみな

↓こういうのもあるで
http://api.cakephp.org/class/router#method-Routerurl
02772762009/10/20(火) 22:30:12ID:???
ん?つーかID??

ごめん、
array(
'controller'=>':controller',
'action'=>':action',
'day'
)
で普通渡すような。。。
0278nobodyさん2009/10/21(水) 12:37:32ID:???
idもOKでは?
0279nobodyさん2009/10/21(水) 16:53:30ID:+lxCFMv1
>>275
せめて何ページ目か書いてくれないと、手元にある本でもどこの話なのかわからん
あとその本、入門としてはレベル高いから他の本の方がいいかもよ
02802752009/10/21(水) 19:52:23ID:IsADHLgB
>>279
47p一番下です。

>>277
http://api.cakephp.org/class/router#method-Routerurl
みたけど、すんません、idに関する記述がなくて、ようわからんす。

自分が知りたいのはid=>が、そもそも指定可能なものなのか?
(まあ可能だから使ってるに決まってるんですが、説明がないし・・・)
idの指定先はどこにあるんか?
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1873&forum=5
こっちで聞いてみまーす。
最初からこっちで聞けばよかったね。
皆さん面倒かけてすいません。&レスありがとう。
0281nobodyさん2009/10/21(水) 19:56:31ID:???
おまえは何を言っているんだ?
0282nobodyさん2009/10/21(水) 20:23:59ID:???
>>280
見てみた、確かに書いてあるね>>275の状態になるのはp57みたいだけど
schedules controllerには
functino index ($scope = 'week')
って書いてあるし、>>277のやり方の法が一般的だろうし、なんでidとして渡してるのかわからん
その後idとして利用している様子もないし

何がやりたいのかわからんけど、とりあえずidの存在は気にしなくていいと思うぞ
0283nobodyさん2009/10/21(水) 20:29:57ID:???
というかid=で渡したことなんてないな
bakeが吐き出すのも>>277だったと思う。
渡せるのか?
02842752009/10/22(木) 02:01:22ID:cfsY/jT4
>>282,283
むちゃくちゃ気になってたんで助かりました!
ほんまありがとうございました★
0285nobodyさん2009/10/23(金) 11:01:57ID:???
hasManyなデータをbeforeSaveで作っても保存出来ないんだね。
一日ハマった。
0286nobodyさん2009/10/23(金) 13:08:45ID:???
before系の整形をするといくつかのメソッドで不具合出ることありますね
countとか
0287nobodyさん2009/10/23(金) 17:15:32ID:???
卑怯
0288nobodyさん2009/10/23(金) 22:48:58ID:???
1.3って1.2から相当変わるの?
1.1から1.2ほどの変化はないと思っていいのかな
クエリーキャッシュに期待
0289nobodyさん2009/10/24(土) 18:18:01ID:???
Cakeオワタ。。。
0290nobodyさん2009/10/24(土) 20:48:46ID:???
なにかあったん?
0291nobodyさん2009/10/24(土) 21:54:12ID:???
update時に$this->data['model']['password'] が暗号化されない。どうすればいいの?
0292nobodyさん2009/10/24(土) 21:57:08ID:???
AuthComponentでも使っているの?
0293nobodyさん2009/10/24(土) 22:01:17ID:???
>>292
使ってます.コードはこんな感じです.

userコントローラ
function edit() {
$this->User->id = $this->Auth->user('id');
if(empty($this->data)) {
} else {
$this->User->set($this->data);
if($this->User->validates()) {
if($this->User->save($this->data, true, array('email', 'password')))
$this->flash('modified', '/');
}
}
}
0294nobodyさん2009/10/24(土) 22:08:48ID:???
AuthComponent の hashPasswords メソッドを見る限りでは、

$this->data['model']['password'] と $this->data['model']['username'] に値がセットされていないと暗号化されないみたいね
0295nobodyさん2009/10/24(土) 22:09:52ID:???
そそ
自前でAuth->hashPasswordだったけか?を通す必要がある
0296nobodyさん2009/10/24(土) 22:36:24ID:???
>>294,295

$this->data[?User?][?username?], $this->data[?User?][?password?]
どちらも設定したけど暗号化されない。どうすればいいんだろう。
  function edit() {
    $this->User->id = $this->Auth->user(?id?);
    if(empty($this->data)) {
    } else {
      $this->User->set($this->data);
      if($this->User->validates()) {
        $this->data[?User?][?username?] = $this->Auth->user(?username?);
    $this->Auth->hashPasswords($this->data);
    pr($this->data);
        if($this->User->save($this->data, true, array(?email?, ?password?)))
          $this->flash(?modified?, ?/?);
      }
    }
  }
0297nobodyさん2009/10/24(土) 22:41:13ID:???
すまん
Auth->password($password)だた

http://api.cakephp.org/class/auth-component#method-AuthComponentpassword
0298295,2972009/10/24(土) 22:44:12ID:???
つか>>296は
dataにいれてhashPassword通してみたのね
でも、だったらreturnで戻ってくるからそれ受け取らなきゃ
参照で受け取って書き換えてくれるとかじゃあないよ

http://api.cakephp.org/view_source/auth-component/#line-847
0299nobodyさん2009/10/24(土) 22:45:11ID:???
>>294, 295, 297
ありがとう。解決しました
function edit() {
$this->User->id = $this->Auth->user('id');
if(empty($this->data)) {
} else {
$this->data['User']['password'] = $this->Auth->password($this->data['User']['password']);
$this->User->set($this->data);
if($this->User->validates()) {
if($this->User->save($this->data, true, array('email', 'password')))
$this->flash('modified', '/');
}
}
}
0300nobodyさん2009/10/24(土) 22:46:17ID:???
>>298
ありがとう
0301nobodyさん2009/10/25(日) 00:02:21ID:???
ベーシック認証をかけたくてSecurityコンポーネントを使ってるんですが

function beforeFilter() {
$this->Security->loginOptions = array('type'=>'basic');
$this->Security->loginUsers = array('id'=>'pass');
$this->Security->requireLogin('index');
parent :: beforeFilter();
}

を書いてるんだけど、ベーシック認証にはなって、IDとパスワードを入れても何度も何度も
入力させられます。ちなみに、parent :: beforeFilter();を消しても同様に入力させられます。

どうしたらよいでしょうか。教えて下さい。お願いします。
0302nobodyさん2009/10/25(日) 00:08:41ID:???
301
ちなみに、 loginUsers で指定した id と pass を入力しても認証していないようです。
認証をキャンセルすると $this->Security->blackHoleCallback = 'securityError'; に移動します。

そのまま設定した id と pass を入力してもダメなのでしょうか。
0303nobodyさん2009/10/25(日) 00:13:04ID:???
そのbeforeFilterに書いた内容消したらちゃんと表示されるの?
0304nobodyさん2009/10/25(日) 00:55:00ID:???
>>303
はい。表示されます。
ちなみにさくらサーバーを利用しています。
0305nobodyさん2009/10/25(日) 03:50:22ID:???
コア開発メンバー数人がCakeから撤退して
Cake3をフォークするなんていうドラマチック展開が起こっています。CakeどうなるのCake
0306nobodyさん2009/10/25(日) 04:34:45ID:???
>>289
0307nobodyさん2009/10/25(日) 05:27:27ID:???
これか
ttp://bakery.cakephp.org/articles/view/the-cake-is-still-rising

ざっと見たところcake3の開発の人がcake3を持って出て行っちゃったって
話みたいだけど、今はcake2に向けて開発が進んでるところだから
問題ないんじゃないの?
0308nobodyさん2009/10/25(日) 05:45:03ID:???
Cake3改めLithiumの公開マダー?
0309nobodyさん2009/10/25(日) 12:25:34ID:???
>>304
さくらはPHPはモジュール版とCGI版があるけどどっち使ってる?
CGI版だと、動作しないよ。たしかphp的な仕様で。
0310nobodyさん2009/10/25(日) 13:02:04ID:???
>>309
ありがとうございました!見てみたら CGIで動作していました。
他の方法を考えてみます。

ご親切ににありがとうございました。
0311nobodyさん2009/10/25(日) 14:42:28ID:???
おつかれさまですー

困ってます助けて・・・

ショップとジャンルがあって
1つのショップは複数のジャンルが持てて、
ジャンルも複数のショップがもてるので
hamtmに結んでいるんですが、

ジャンルでショップを絞込みすると

$this->ショップ->ジャンル->findAllbyジャンルID($ジャンルID);

とすると、ジャンルと、ジャンルとショップの結合のデータしか入ってきません。
ショップIDまでは取れているのに、ショップIDの内容も取るには
なにが足りないの?(;_;わかんない・・・
0312nobodyさん2009/10/25(日) 16:40:24ID:???
$this->Shop->find('all', array('Genre' => array('conditions' => array('Genre.id' => $genre_id))));
でやってみては?
0313nobodyさん2009/10/25(日) 18:51:56ID:???
>>312
おお!
Shop->Genre->
ではなくて
条件で指定するのですね!!
ありがとうございます!

それにジャンルのつづりがすごい!
やっぱり2chねらー尊敬!
0314nobodyさん2009/10/25(日) 19:11:35ID:???
??
0315nobodyさん2009/10/25(日) 23:47:50ID:???
>>313

きもい><
0316nobodyさん2009/10/27(火) 03:36:59ID:???
debug levelを0にしてサイトを動かしたいのですが、
debug情報をlogに吐かせたいです。$this->log等

方法を知っている方、教えてください。
0317nobodyさん2009/10/27(火) 04:31:52ID:???
ちょっと相談よいですか?

公開されているウェブサービスを利用するために、外部のXMLを

$xml = new XML($req);

のように取得しているのですが
相手側のサーバーで503エラーなどが発生すると、404コードを吐いて止まってしまうようです

503コードを吐くようにしたいのですが
XMLクラスが継承しているクラスが多くて、手を入れるにも大変そうです
なにか良い方法ってありますか?


エラー時はXMLクラスが false などを返してくれればよいのですが…
0318nobodyさん2009/10/27(火) 05:00:04ID:???
>>317
書いている意味がわからんが、相手サーバーのXMLを読み込んで、自分のページで表示する意味?
だったら、毎回取得せず、キャッシングするのが常識じゃないのか
0319nobodyさん2009/10/27(火) 05:31:05ID:???
>>318

すみません
503エラーではなく、自分のコードにミスがありました

ちなみにキャッシングはもちろんしています
でも、たまたまキャッシュ更新のために取得する際に、
相手側のサーバーが落ちている場合もないとは言えませんよね

そういう場合はどうなるのでしょうか?
一応、問題は解決しましたので、もし既に調査済みの方がいれば、
教えていただけるとありがたいです
0320nobodyさん2009/10/27(火) 07:38:21ID:???
>>316
$this->log()でええやないか
なにが聞きたいんや
http://book.cakephp.org/ja/view/159/Using-the-log-function
http://api.cakephp.org/class/object#method-Objectlog

>>319
キャッシュがなければ取得
取得できなければエラー表示
取得できればキャッシュにも保存

とか、

キャッシュは相当長くしておく(A)
キャッシュが古ければAよりは短時間のリミットで再取得
取得できなくてもキャッシュを表示

でよくない?
何が聞きたいんや
0321nobodyさん2009/10/27(火) 12:24:19ID:???
浪速のど根性ガエル登場
0322nobodyさん2009/10/27(火) 12:57:22ID:???
>>320
おそらくdebugフラグが0で、
debug情報をlogに吐かせたい、

とエスパー

やり方はオイラも知らんでヤンス
0323nobodyさん2009/10/27(火) 13:49:04ID:???
logの件はこのスレだったか前スレだったかで出てたと思う。
0324nobodyさん2009/10/27(火) 18:07:07ID:???
求人のマッチングサイトを作る場合
・一般ユーザー
・企業

の2種類のユーザーがいる場合のテーブル設計ってどうする?

今は
User テーブルに type 0 or 1
でそのほかに

Normal (一般ユーザー)
Kigyou (企業)

って分けてるんだけど。どうするのがベスト?
0325nobodyさん2009/10/27(火) 18:12:29ID:???
知るか
0326nobodyさん2009/10/27(火) 18:16:04ID:???
>>324
同一のモデルで良い
あとはGroupマスタ作るなりして権限管理するとか
ACL使って
0327nobodyさん2009/10/27(火) 21:58:12ID:???
>>326
ご親切にありがとうございます。
ここでACLが出てくるのかー。

今まで聞いたことはあったけど難しそうだったので
見てもなかった。

一度勉強してみます。ありがとう。
0328nobodyさん2009/10/28(水) 02:05:14ID:z9D0rCNP
でもそれだと、一般ユーザと企業のアカウント情報が一つのモデルに混在して大変じゃね? 更に例えば、一般ユーザも無料と有料で機能を分けるとかになった場合とか。

個人的なアイデアなんですが、ログイン用IDなどの共通項となるアカウント情報はUserモデルで管理して、一般ユーザ・企業はフラグフィールドで識別。
共通ではない、プロフィール情報などはUserProfile. CompanyProfileなど別のフィールド群のモデルに管理させるとか。
0329nobodyさん2009/10/28(水) 07:43:25ID:???
T字型ですな
0330nobodyさん2009/10/28(水) 07:48:58ID:???
>>328
つまり同一モデルでしょ それ
0331nobodyさん2009/10/28(水) 09:15:17ID:???
>>324
英語とローマ字混ぜるなよ
気持ち悪いだろ?
0332nobodyさん2009/10/28(水) 10:18:17ID:???
>>324

http://bakery.cakephp.org/articles/view/inheritable-behavior-missing-link-of-cake-model

とか
0333nobodyさん2009/10/29(木) 15:20:30ID:???
みなさんありがとうございます。

>>332
翻訳して勉強してみます。ありがとうございます。
0334nobodyさん2009/10/29(木) 20:41:53ID:???
明日はCakeMatsuri
0335nobodyさん2009/10/30(金) 00:34:16ID:???
コードイグナイタと比べてどうですか?
0336nobodyさん2009/10/30(金) 01:03:28ID:???
コードイイカンジ
0337nobodyさん2009/10/30(金) 15:40:55ID:???
だいぶ悩みましたがうまくいかないので皆さんにお聞きします。

社員管理システムみたいなやつの検索画面を作ってます。
検索結果をpaginatorを使って表示していて、$paginator->sort()などでソートしたりできます。
でも、その際に検索条件を覚えていなければならないので、
$paginator->options(aa('url', $condition));
としてURLにパラメータで渡してます。

これで普通の項目はうまくいくのですが、問題は条件が日付のとき、
$form->input()でタイプをdateにして入力欄を作っていると、
各項目が配列になっていて(birthday['year']、['month']、['day']みたく)
単純に上記の方法で渡すと、urlに「birthday:Array」などとなってうまく渡せません。

このような場合はどうやってパラメータを引き継げばいいのでしょうか。
0338nobodyさん2009/10/30(金) 15:51:04ID:???
2009-10-30
にすればいいじゃん
たしか日付はその配列形式でも動くし
ハイフンつなぎでも受け取ってくれたはず
03393372009/10/30(金) 16:01:21ID:???
ありがとうございます。
birthday:2009-10-30
などとurlがなるようにしてみましたが、リンクをクリックすると
Fatal error: Cannot use string offset as an array in (略)../libs/model/model.php on line 843
といったエラーになります。
0340nobodyさん2009/10/30(金) 16:08:39ID:???
あれうけとってくれないんだ
つーかよ
だったらよ
ぶんかつすりゃいいだけだろーがよ全部聞くの?

$bunkatsu = explode('-', $hiduke);
$hidukedayooooooo = array(
'year'=>$bunkatsu[0],
'month'=>$bunkatsu[1],
'day'=>$bunkatsu[2],
);
03413372009/10/30(金) 16:21:40ID:???
model.php内のdeconstruct()内に教えていただいた処理を入れることでうまくいきました。
何度もありがとうございました。
0342nobodyさん2009/10/30(金) 16:51:11ID:???
ええええええええええええええええええええええええええええええ
普通そこいじらねーよw
0343nobodyさん2009/10/30(金) 17:45:13ID:???
>>339-342
この流れはまるで漫才。
二人そろってM1でるといいかも。
ちょっと笑った。
0344nobodyさん2009/10/30(金) 23:04:18ID:???
いちにちめおわり
きたく
0345nobodyさん2009/10/31(土) 02:15:30ID:???
そんなことより、WEB案件は激減してるな
もうフリーでは食っていけないだろうな、優秀な営業マンとペア組まない限り
0346nobodyさん2009/10/31(土) 04:56:08ID:???
>>345
M1狙ってるのか?
0347nobodyさん2009/10/31(土) 14:37:22ID:???
今までが誰でも儲けられたんでしょ。
これからはスキルの高い奴しか生き残れない。
0348nobodyさん2009/11/01(日) 05:01:59ID:???
もうWEBシステム開発だけで、くっていける時代は終わった
自分でコンテンツ運営しての2本柱での収入がないとダメだ
■ このスレッドは過去ログ倉庫に格納されています