2013年17WebProg4: 【PHP】フレームワーク CakePHP 16ホール目【v2.4】 (191) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【荒らしお断り】 BBQを組み込んでる人【システム】 (404)
GoogleAPIってどうよ? (308)
一番汚いコードでHello Worldを書いたやつが勝ち (218)
XML (338)
Wiki系とWikiEngineについて語るスレ Part5 (235)
PHP+MySQL掲示板作ろうぜ (798)

【PHP】フレームワーク CakePHP 16ホール目【v2.4】


1 :2013/09/09 〜 最終レス :2013/09/26
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※他フレームワークとの比較等はスレ違いです
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
Issue
http://cakephp.lighthouseapp.com/dashboard
CheatSheet[1.2] (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] http://book.cakephp.org/2.0/ja/index.html
[1.3] http://book.cakephp.org/ja
http://kohada.2ch.net/test/read.cgi/php/1354593996/l50

2 :
無いので建てた
過去ログのタイトル記入漏れ
【PHP】フレームワーク CakePHP 15ホール目【v2.2】
http://kohada.2ch.net/test/read.cgi/php/1354593996/l50

3 :
テンプレが貼られるのを待たず質問。CakeDCって何ですか?
「CakeDCとは」でググったんですけど出てきませんでした。
CakeDCのユーザー認証は標準のユーザー認証機能より良いんですか?
CakeDCのデメリットはありませんか?
あと、「CakeDC」でググると一番最初に出てくるサイトは
「このサイトは危険にさらされている可能性があります。」
とか書いてありますけど大丈夫ですか?

4 :
>CakeDCって何ですか?
CakePHP のコアデベロッパーが多数在籍してるSIer
CEOがCakePHPの元開発リーダー
以前ほどは CakePHP の開発における依存度は高く無いとはいえ、影響力は絶大。
Github のリポジトリで公開しているプラグインはどれも有名で多くのユーザーが使ってる模様。

>CakeDCのユーザー認証は標準のユーザー認証機能より良いんですか?
Usersプラグインのことでしょうか?
だとすると、CakePHP の機能を置き換えるものじゃなくて、
補完および隠蔽して使いやすくしているのだとおもう。

>CakeDCのデメリットはありませんか?
ネットの評判を見る限り、特に致命的な欠陥はないでしょう。
実際には実装に応じて要求が異なるので何がデメリットになるのかは場合により異なる。
CakeDCに限らないが、どのプラグインを使うにしてもひと通りソースを読めないと安心して運用するのは厳しいと思うよ。
WordPress みたいな気軽な感覚(それも問題あるけど)で
初見のプラグインをホイホイ放り込んですんなり使えるとは思わない方がいい。

5 :
>あと、「CakeDC」でググると一番最初に出てくるサイトは
ググったトップがどれのことか分からんが、
http://www.cakedc.com/
ならそんなエラー俺の環境じゃ出てこなかったけどな。

6 :
>>4-5
ご丁寧なレス頂き本当にありがとうございます。
Usersプラグインのことです。
>初見のプラグインをホイホイ放り込んですんなり使えるとは思わない方がいい。
と言うのは肝に銘じます。
>>5に関しては日本語でググってしまったので
「プラグイン/CakeDC/users - CakePHP2 Memo」
と言うページがトップに来ました。
URLは念のためあえて貼りません。

7 :
Usersプラグインは、プラグインとは名ばかりのサンプル実装と考えたほうがいいよ。
サンプルといっても、微妙なつくりになってるところもあるから、
使えるところだけ参考にしながら別途書くのがいい

8 :
cakephp2を触り始めて日記を作ったのですが
URLを直で .../delete/1 などとすると
An Internal Error Has Occurred.というエラーがでて削除はされないのですが
自分でhtmlファイルを作り そこにポストでボタンを作成し日記のデリートURLに飛ばすと普通に削除できてしまいます
これは自分のコントローラーが悪いのかどこか書き方が間違っているのでしょうか?

9 :
山ほど可能性があるのでそれじゃ情報少なすぎる。
まずそのエラーが出てるってことはデバグの出力を抑制してるんじゃない?
質問する場合は必ず Configure で debug の値を 2 にしておく。
それだけで解決することも多い。
で分からなければ、出た文面をそのまま貼り付ける。
ただ文面から推測すると、bake したコントローラをそのまま使ってるっぽいが、違う?

10 :
いや、debug 値は関係無さそうだな。
bake ファイルなら例外を投げるからそれでもなさそうだな。
いったいどんなコード書いてるんだ?
Controller のメソッド貼り付けて見たら?

11 :
ちょっと自分でもわからず書いていますのでわかりにくかったらすいません。
普通に作ったダイアリー上で削除ボタンはしっかり動作します
URLを直に/delete/id とすると
Error: The view for diarysController::delete() was not found.
とでます。これは普通ですよね?URLから削除をさせないため、ほかのとこにアクセスさせないため
少しいろいろ書いてあるので消しましたがたぶんこれで動いてるはずです
public function delete($id) {
if ($this->request->is('post') || $this->request->is('put')) {
$this->Diary->delete($id);
$this->redirect(array('action' => 'index'));
}
ここまで正常だと思うのですが
自分で作ったhtmlファイルに
<form action="自分のURL/delete/ID" method="post">
<input type="hidden" name="_method" value="POST"/>
<input type="submit" value="DELETE">
</form>

で記述してこれで投げると消されてしまいます
どうすれば解決できるのでしょうか・・・?
ポストを判定するまえになにか条件いれればいいのでしょうか?

12 :
CakePHPは初心者も大事にするFWなんでお答えします。
結論から言うと、質問の中にそもそも答えが含まれてる。
> Error: The view for diarysController::delete() was not found.
がなぜ出力されるのかというと、アクションの結果を描画するためのビューがないっていうこと。
なので、このエラーそのものと、レコードが削除されないことは実は関係がない。
> URLから削除をさせないため、
の措置はアクション内部でのリクエストタイプ判定で行ってる。
で、これがほんとうに意味が分かって言ってるんなら、質問の答がこれですよ。
URLを直接叩いて削除しちゃうと良くないことが多いので、そうしないようにコードに記述してる。
つまり、コントローラが悪いのじゃなくてリクエストの仕方が悪いだけ。
> ほかのとこにアクセスさせないため
「ほかのとこにアクセス」が意味不明だが、リダイレクトの事を言ってるのならば、
別にそういうふうに作りたければそうすればよいだけで、このエラーの内容とは直接関係がない。

13 :
> if ($this->request->is('post') || $this->request->is('put')) {
で判定してる $this->request というのは自動的にセットされる CakeRequest のオブジェクトで、
リクエストに纏わる諸々のデータ・構造が内包されてる。
こいつの CakeRequest::is() メソッドでリクエストタイプを判定して、POST か PUT なら
モデルに対して削除を命令して、「描画せずに」array('action' => 'index') へリダイレクトする。
ここでこのリクエストに対する処理は終わり。(厳密には多少の後処理はある)
ちなみに分かってるかも知れないけど、この array('action' => 'index') っていうのは URL そのもので、
足らないパラメータ('plugin' や 'controller') はRouter で自動補完されて完全なフルパスにパースされる。

で、先程のは POST か PUT の場合だけど、それ以外(まぁGETだが)は評価ブロックを抜けて
通常のレンダリングに移行する。
仮に Diaries/delete.ctp を配置しておけば上記のエラーは出ないというだけ。
こんな説明で分かりましたか?

14 :
あらら、それと、
diaysController って DiariesController の書き間違いだよね?

15 :
とても詳しく説明してもらってすいません
書き間違えはすいません 日記のようなものを作っています。少し改変しました
ちょっと補足します
> URLから削除をさせないため、
というのはその通りです。
> ほかのとこにアクセスさせないため
なんでもないです。すいません
>仮に Diaries/delete.ctp を配置しておけば上記のエラーは出ないというだけ。
エラーは別にあってもなくてもいいのですが
<form action="自分のURL/delete/ID" method="post">
<input type="hidden" name="_method" value="POST"/>
<input type="submit" value="DELETE">
</form>
この部分の回答がほしくて理解不足でもう出ていたらすいません
日記はその書いた人した消せない仕様なのですが
メモちょうなので↑のコードを書いてそこにあるボタンを押すことでどのIDの日記でも削除できてしまう
のをどうしたらいいかの回答がほしいです

ちょっと自分のやっていることが特殊なのか言葉不足なのかもしれません。

16 :
>仮に Diaries/delete.ctp を配置しておけば上記のエラーは出ないというだけ。
今回はエラーは別にあってもなくてもいいのです。本当は書いたほうがいいんでしょうけど・・・

17 :
あぁ、権限の話でしたか。
消したいのに消せないので困ってるのかと勘違いしてた。
それなら CakePHP 以前に、PHPでリクエストを送ったユーザーを
どう識別するのかってことが分かってないと。
実現する便利な機能(端的に言うと AuthComponent ですね)
は備わってるけど、"PHP ログイン 認証" とかでググって
まずは素のコードが書けるようになってから Cake に
再チャレンジした方がいい。
今のままだとサンプル見てもどの部分がCakeの機能で、
どの部分がPHPなのかさっぱりわからない状態じゃないかな?
もしそうならいったん基礎に戻ったほうが結局は早く理解できて効率がいい。

18 :
ポスト判定をする前にまずログインしてるか調べてそのあとユーザーとその日記の書いたユーザが一致か調べればいけますかねぇ・・・
きっちり基礎ができているとは言いがたいですけどがんばって見ます

19 :
ある程度基礎ができてるなら、上のレスで書かれてる CakeDC の
Users プラグインを使って認証を一通り実装してみるといいです。
とても勉強になりますよ。

20 :
StackOverflowてCakeの質問してみたけど全然レスが付かない
別の質問もしてみたけどやはりレスが付かない
そもそも8 viewsしかされてないし、Cakeってだけでスルーされちゃうのだろうか

21 :
>>20
だからどの質問だ?
url貼れ

22 :
チュートリアルを見ると1テーブルに1モデルでそのモデルに対して複数のコントロールとビューがあるパターンしかないんですけど、
自分がやりたいのは複数のビューとコントロールに対して、複数のテーブルからデータを集めてきて処理をしたいんです。
その場合、モデルで記述するクラスはテーブルを使わない独自クラス、呼び出すテーブルはアソシエーションで定義するという理解でいいですか?
モデルに使用するテーブルをクラスとして別々に記述できるといいんですけど、違うみたいだし。

23 :
>>22
1モデル=1テーブル という図式があたかも
規則であるかのように受け取られてしまうのが
チュートリアルの欠点のように思う。
それは全く気にする必要なし。
やりたいようにやればいい。
あと、標準のプロパティで張れるアソシエーションは限界があるので
それを越えようと思えば 'joins' キーでパラメータを指定したり、
直書きする。
一例を上げると、主テーブルに対して2つのテーブルをLEFT JOINするときに、
サブテーブルのキー同士を結びつける条件はプロパティの設定では不可能。
こういうときはメソッド内で joins で指定するしか無い。
Cake3 はもう少しマシになってるらしいが。

24 :
Cake3 は Table クラスが分離される模様

25 :
さすがにその頃にはCake卒業したい

26 :
もう時間ないぞ

27 :
>>18
お前、チュートリアル(認証系の方)にちゃんと書いてあるぞ
翻訳も完了してるんだから最低限チュートリアルやってから質問しに来い

28 :
>>27
そういうなよ。
CakePHPのドキュメントは正直分かりにくいし、
初心者というのはいろんな情報を手探りで集めるんだし

29 :
ぶっちゃけ公式ドキュメント見るのが一番効率悪い
よくできてないだろ、あれ
絶妙に必要な情報が欠落していて、中級者でも戸惑う

30 :
かなり同意。
CakePHPのドキュメントは分かりにくいよね。
ぐだぐだと長い文章書いてある割りに、
開発中にあれ?どうなってるだっけ?と思った疑問には全然答えてくれない。

31 :
そう、ボリュームが足りないとはあまり感じないんだけど
開発してたら調べたくなるようなことが、悉く載っていない
結局ぐぐってどこかの馬の骨のブログにたどり着き、
古い情報やサンプルコードを、必死で直しながら使うことになる

32 :
ドキュメントで翻訳されていないページはみんなどうしてんの?

33 :
そのまま読むかググるq

34 :
apiの方かソースコードを読む

35 :
>>34 に同じく。
ドキュメント、面白くさせようとしてるんだろうけど無駄な文章や修飾が多い。
用語のゆらぎも多い気がする。

36 :
質問させて頂きます。
下記のリレーションを持つモデルがあります。
User hasmany Thread(Thread belongsto User)
Thread hasmany Response(Response belongsto Thread)
User hasmany Response(Response belongsto User)
Threadの詳細表示画面(viewアクション)で
一覧表示されるResponseのuser_idの代わりに、
Userテーブルのフィールドの一つであるusernameを
表示させたいんですが、スマートなやり方はありますか?
力技で何とかしようと結構時間を掛けて試行錯誤したんですが
上手く行かなくて質問させて頂きました。

37 :
36です。書き忘れましたがCakePHPのバージョンは2.3.9です。

38 :
$this->Thread->Response->User->displayField = 'username';
$this->Thread->recursive = 2;
$thread = $this->Thread->read();
はどう?
試してないから間違ってたらすまん

39 :
>>36です。ありがとうございます。
$this->Thread->Response->User->displayField = 'username';
を試してみましたが、
Indirect modification of overloaded property AppModel::$User has no effect
とエラーが出ました。
また、
$this->set('thread', $this->Thread->find('first', $options));

$this->set('thread', $this->Thread->read();

$thread = $this->Thread->read();
にも書き換えてみましたが、Threadの中身が表示されなくなりました。
$this->Thread->recursive = 2;
はヒントになりそうな気がします。
今日はもう眠いのでまた明日試してみようと思いますので、
お世話になれれば幸いです。

40 :
あぁ、すまん、Thread が持つ Response に含まれる User の username ね。
それなら displayField 云々は要らないな。
これは単純に User.username のデータを拾えるようにしてそれを表示すれば良いので、
一番雑なやり方だけど簡単なのは上で書いたように recursive を 2 にすればデータを取得できる。
どんな形式で返されてるかは debug() とか使って確認してちょうだい。
データアクセスはなれるまで少し面倒くさいけど仕方ないね。
ただ、このやり方で発行されるクエリはかなり大雑把。
Containable というビヘイビアの使い方をもし知らなければまずそれを覚えて損はない。
しかしこれもパフォーマンスを追求するなら酷いSELECT文になることが多い。
パフォーマンス上げたいなら最終的には細かくチューニングしなくちゃならないです。

41 :
あと気になるのは
> $this->Thread->Response->User->displayField = 'username';
> を試してみましたが、
> Indirect modification of overloaded property AppModel::$User has no effect
> とエラーが出ました。
これは出ないはずなんだけどなぁ。
本当に Response::$hasMany に User をセットしてる?
それさえしていれば、Response::$User プロパティがコールされたタイミングで
(なければ)自動的にセットするんで上記のエラーは出ないはずなんだが。。。
> Threadの中身が表示されなくなりました。
というのは何でかよく分からんけど、どんなクエリ発行されてるのか確認すると良いと思う。

42 :
すみません。教えてください
/libs/view/helpers/paginator.php の関数を一部書き換えたいのですが
/app/views/helpers/ に自作クラスファイルを置く場合、どうやって書けばいいのでしょうか?

43 :
パターン1: 継承する
/app/View/Helper/MyPaginator.php
App::uses('Paginator', 'View/Helper');
class MyPaginator extends Paginator {
}
class PostsController extends AppController {
public $components = array('Paginator' => array('className' => 'MyPaginator'));
}
パターン2: Paginator を app にコピー
/app/View/Helper/Paginator.php
(元の Paginator をそのまま貼り付けて適宜改造)

パターン1 のほうがいい。

44 :
丁寧にありがとうございます
1の方法を試したのですがPHPの書式エラーが出てうまくいかなかったので、
とりあえず2の方法で実装できました

45 :
え、どんなエラー?
ひょっとして1.3使ってる?

46 :
はい。1.3です
Appなんて知らないよ、みたいなエラーでした
私自身cakePHPを使ったことないのですが、現行システムを引き継いで、
新システム+機能追加を行えという依頼が来ているので、四苦八苦しているのです

47 :
うわぁ、大変だなぁ。
エラーは多分App知らないじゃなくて、そんなメソッドないよってエラーではないかと。
1.3 のときは App::uses() じゃなくて App::import() 使ってた。
このへんはだいぶ変わってるからなぁ。
とりあえずパターン1でもApp::uses の行を削除すれば多分動く。
あと、クラス名とか大幅に間違えてたすまん。
Paginator じゃなくて PaginatorComponent だよな。

48 :
いや、 Component じゃなくて Helper だ。
なんかgdgdになってきたわw

49 :
ありがとうございます。
今他の人が動作確認等をしているところなので、エラー画面を出すわけにもなので、また後で試してみます
他社が作ったシステムなのですが、不具合だらけで、よくこんなので数年運用していたな…と思えるもので
お客さんもこの制作会社に愛想をつかしたのかなと

50 :
そう言えば何年も前に1.2で納品したサイトをこの前こっそり覗いたらまだそのまんま稼働してた。
ひょっとして裏でメンテナンスしてる?と思ったけどどうやらそのままっぽい。
あれを今こっちによこされても触る気しねぇなw

51 :
>>36です。
>>41すみません。ご指摘頂いている通り
リレーション(実際にはbelongsTo)の設定に漏れがありました。
お騒がせしました。
おかげさまで力技で何とかusernameを表示させることができました。
本当はContainableとか使ってスマートにやれれば良いのでしょうが
今のところパフォーマンスはそこまで気にしなくて良さそうなので
とにかくありがとうございました。

52 :
CakePHPでテストを書いてて質問です
モデル内の「1ヶ月以上放置ユーザーのデータを書き換える」という関数のテストを書きたいのですが
関数内でdate()を使っているのでテストを動かす日付によってテスト結果が変わってしまうことになります
テスト中はdate()をモック化して常に同じ日付を返すような事はできないでしょうか?

53 :
>>52
https://github.com/hnw/php-timecop

54 :
へえ、こんなのあるんだw
あざっす

55 :
View内にSQLを書くのはあり?

56 :
別にいいんじゃない?

57 :
え?

58 :
>>56
本当にいいの?

59 :
これなら良いだろ?
<?php echo 'SELECT * FROM posts;'; ?>

60 :
>>59
それで出来るの!

61 :
いいこと思い付いた
viewにユーザーにSQL入力してもらうフォーム置いとけば、アプリの開発要らないんじゃね?

62 :
>>59
やっかたけど文字列が帰ってくるだけだった

63 :
>>62
まさか真に受けるとは思わなかった。。。
常識的にViewではSQLは書かないという前提があって、
だけど文字列で表示するというだけならば問題ないよね
っていう流れで書いたつもりなんだけど
悪気はなかった。すまん

64 :
>>62
おまえかわいいな

65 :
View から SELECT だけは許可できる仕組みって作れないものかね?

66 :
>>63
親をループさせながら子のデータを取得したいんだけど
コントローラーでやると複雑になって、面倒くさいからVIEWでSQL書いちゃえば早くね?と思ったんだけどダメか?

67 :
>>66
定石だと、それはモデルでやるべきだろうな。

68 :
開発して専用のサーバーに設置したのですが、robots.txtへのアクセスが全部エラーとなってtmpの下のerror.logに記録されています
[MissingControllerException] Controller class Robots.txtController could not be found.
特に害はないのですがどうすればエラーをなくせますか?

69 :
本来は所得税が0の年が一度でもあったら参政権を生涯剥奪するべきだが
少なくとも生活保護や自己破産は選挙権と引き替えにすべき

70 :
>>69
MVCモデルのことですか?いまいちわかりません。

71 :
>>68
robotx.txt が設置されてないだけと思うんだが、違う?

72 :
>>68
robotx.txt が設置されてないだけと思うんだが、違う?

73 :
すまん、二重カキコになってしまった。
しかちいつまでたっても2ちゃんのシステムは垢抜けないな

74 :
>>55だけど。思いついた!
子テーブルのビューを作って親のループ中にrequireすればいい!
モデル理解するの無理そうだからそうしよう!

75 :
controllerはわりと理解した
viewもわりと理解した
modelがよくわからない
他人が書いたソースを眺めるだけじゃなく、ちゃんと書籍なりで勉強すべきかな

76 :
フォームのinput submitでハマった。
普通なら/xxxx に飛ぶのに/xxxx/ に行ってしまって、その後のボタン処理が滅茶苦茶。
結局判らずリンク先をダイレクトに指定して回避したけど気持ち悪い。
Twitter Bootstrapを最近入れたけどCakePHPのフォーム処理と使い勝手が悪い感じがする。

77 :
入門書はいくつかあるけど中級以上向けのガイドが欲しいな
実際に開発始めると、例みたいに簡単な1コントローラ、1モデル、1ビューの構成に片付かない
1コントローラ複数モデルになると一気にコントローラが太るのを何とかしたい

78 :
>>74
なんか苦戦してるみたいだけど、
具体的に詳しく書けば何らかの助言は貰えると思うよ。
よくは分からないけど、あなたは今良くない方向へ向かっている気がする。
同じ努力をするなら少し方向を考え直した方がいいのでは?

79 :
複数形で書いたり単数形で書いたり、気持ち悪いったらありゃしない

80 :
>>76
フレームワークが暗黙的にいろんなデータを補完しているから、
初心者だとよくはまる失敗の典型ではないかと思います。
詳しく見れば必ず解決できるはずなんだけど、最初は調べ方すらわからないのが普通。
問題になってる FormHelper::create() のパラメータを書いて見れば?

81 :
>>79
アングロサクソンに合わせるしか無いのであきらめろ。
世界の文化を上書きできるならもう一度戦争してみればいい。

82 :
複数形が単純に「s」つけるだけならいいけど、company→companiesみたいに単純なものじゃないときにどうしていかわからないよ

83 :
どうでもいいけどdataの複数形は?

84 :
datum

85 :
>>83-84
ギャグじゃなければ逆

86 :
はっ!

87 :
ちょっと聞いてみるんですけど、
FoodsテーブルにcolumnとしてDish_id, Calorie, (質問には関係ないけどFoodnameも)が有って、
Dishesテーブルの内容を、それぞれのrowに属するFoodのCalorieの合計の大きい小さい順に
paginatorの機能を使って並び変えられるようにしたい時、どうするのが一番良いですかね?
DishesテーブルにCalorieの合計値を属性として持たせる、と言うのは思いついたんですがどうでしょうか?
CakePHPは2.2を使ってます。

88 :
>>87
間違ってないので良いんではないでしょうか

89 :
>>88
そうですか、ありがとうございます。
ただそうなると、もしFoodsテーブルのcalorie情報とDishesテーブルのcalorie合計値情報が
絶対矛盾しない様にしたいと思ったらトランザクションとか使わないといけないですよね?
もしくはcronとかを回してFoodsテーブルとDishesテーブルで矛盾が出たら検知するプログラムを走らせるとか?

90 :
MySQL ならトリガー使えばDB側で正確さを担保できる

91 :
>>55だけど!モデル理解するの無理そうだから。もうコントローラーにHTML書いて書いてく!

92 :
お、おう・・・

93 :
フレームワーク使う意味ないやんw

94 :
>>93
でもちゃんと理解できるまでそうするっていうのならありじゃない?
理解してないのに使うなは禁句

95 :
ネタなのかマジなのかわからないのが沢山混じってるな・・・

96 :
cakeを使うメリットを教えてほしいんだが、何がそんなにいいの?

97 :
勘違いしてるようだが
他FWに比べて、いいから使ってるわきゃない

98 :
日本語資料が(他と比べると)多い
それが一番じゃないかな?

99 :
最初になんとなくCakeを選んでしまった
今は後悔している

100 :
>> 96 97 98
96だが、日本語の資料が多いだけか。
他FWに比べて他のメリットってなにもないよね。
参考になったよありがとう。

101 :
特定のページに行くとセッションが切れるのなんなの?

102 :
>>101
特定のページの作りがおかしいんだろうな

103 :
>>101
ファイルの存在しないパスのアセットを取得しようとしてるかも。
一度CSSとかfaviconとかの記述をチェックして下さい。

104 :
AuthってAppControllerに指定してる?
してないならセッション切れの原因になると思う
俺も一部のコントローラーだけ指定してたらそうなった

105 :
>>100
cakeはcontrollerの部分はすごく便利
だが、modelはダメダメ
viewもわりと使いやすい

106 :
俺は基本デザイナーで、片手間でフレームワークを覚えなくちゃなんなくて
仕方なく始めたのがCakePHP1.3だった。
で、特に不満もなく今に至るという感じで、
なんとか2系にはシフトできたけど
ほかのフレームワークを試せるほど余裕が無い。
Cakeをある程度使えるようになるまで時間がかかったから、
それと同じぐらいの手間をかけてまで
他にまで手を広げようという意欲がわかないだけで、
簡単に他のを試せるならCakeを使っていないかもしれない。
そういう人は多いのじゃないかと思うがどうだろう。

107 :
俺がCakeに手を出した頃(2009〜10)が多分Cakeの全盛期だったんだと思う
その頃はまだFuelPHP等も流行ってなく、PHPのMVCフレームワークといえばどの本も大体Cakeを筆頭に挙げてた
で俺も勝ち馬に乗るつもりで手を出してみたんだけど、使ってみたらイマイチで他に新しいのがどんどん出てきた
けどキッツキツの仕事のスケジュールの中ではコードの再利用や学習コストを考えると他に以降できない
気に入らない点のいくつかは2で改善したし一応使い物になってるのでそのままって感じ

108 :
後発が良いツールなのは世の常だけど、
情報量が少ないとわざわざ覚えようと思わないよね

109 :
情報量に関してはCakeが特にいいと思わないな。
英語でもいいから公式ドキュメントをもっと充実して欲しいね、使い込む人用に。
ネットの記事や本も2より1の時の方が多かったよね、3になったら更に減ったりするのかな。

110 :
ドキュメント十分だろ。これ以上はソース読めレベル。

111 :
ドキュメントって何だか文系向けだよね。
体系的・科学的じゃない。

112 :
100だが
Struts(java)⇒Symfony1系⇒ZendFW1系⇒Symfony2系⇒Cake2系と変遷してきた。
ドキュメントは公式のページで充分だしわからないとこはソースみりゃいいよね。
どんなFWでも同じ。
初めて触ってみたけどcakeの良いとこが多少学習コストが低いかもくらいしか見つからなかったんだ。
それで聞いてみた。

113 :
公式ドキュメント全然十分じゃないよ。開発中知りたい事が全然載ってない。
初心者騙しにしかなってない。
わからなかったらソース読めとかアホかそんな効率悪い事できるのは暇人だけ。皆働いてんだよ。

114 :
Haveの複数形はhasでいいの?havesになったりしない?

115 :
俺はどうも複数形には慣れないな
単数形にすることも出来るけど、フォーム処理で躓く時あるし

116 :
一応テーブル名複数形、モデル名単数形のコーディング規約にしてるけど
数人でプロジェクト組むと、うっかり守らない奴が出るんだよなあ

117 :
>>114
名詞でhaveなんか使うのか?別にいいけど。。。

118 :
ちなみに名詞で have って言ったら「(莫大な富とかを)持ってる人」みたいな意味です。
その場合は単数形が have で、複数形が haves だよ。

119 :
英語文化は尊重するけど、英語じゃない単語の扱いが半端無く面倒くさい。

120 :
iphoneアプリのサーバ側でcakephpを使おうと思ってます。
会員制のアプリで、アプリからブログの更新ができるようにしたいです。
ログイン後のトークン発行など、、ここらへんがよくわかりません。。
どんな流れになるのでしょうか?
よろしくお願いします。

121 :
>>120
http://book.cakephp.org/2.0/ja/tutorials-and-examples/blog-auth-example/auth.html

122 :
わかる方がいれば、教えてほしいんですが以下のSQLをCakePHP用に
書き直す場合にどのようにすればよいでしょうか
select
カラムA,(select カラムB from テーブル where カラムA=t1.カラムA order by rand() limit 1)
from
(select カラムA from テーブル group by カラムA) t1;

123 :
>>122
直書き 一択

124 :
>> 113
調べることが暇人ってなんだ?
やりたいことが載ってないって応用力ないんだなww
答えそのものが載ってないとできない奴っているよねw
cakeが初心者用のフレームワークって納得したよ。

125 :
たとえばさ、モデルのバリデーションの指定方法一覧ぐらいは、公式が用意してくれてもバチはあたらないと思うんだ
ソース検索して開いて見るより、ドキュメントがあったほうが見やすいだろ?

126 :
2系を使っています。コントローラとアクションが
存在するか調べる機能ってないですかね?
小一時間ググったのですが、見つけられませんでした・・・

127 :
>>126
特別な方法はないと思う
Shellプラグインの作成で結構地味に調べたのを記憶してる

128 :
ないのかよ

129 :
> 125
公式
http://book.cakephp.org/2.0/en/models/data-validation.html
ソース
lib/Cake/Utility/Validation.php
公式に全部載ってるかどうか知らんが、1つでも載ってたらソース見ないの?
どんなチェックしてるか知らないのに実装するの?
> 126
http://phpspot.net/php/pg%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%8C%E5%AD%98%E5%9C%A8%E3%81%99%E3%82%8B%E3%81%8B%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF.html

130 :
>>129
cakeの機能としてはないんですね。
ビューの一部をDBに保存してるのであればと思いましたが、
ないということなので定数からパスを作成して調べます

131 :
フォームのデータの受け取り方がどうしてもわかりません。
具体的にはコンボボックスやラジオボタンで選択されたデータをコントローラーで知りたいのですが、
$this->data[テーブル名][カラム名] データベースのデータじゃなくてコントローラーで設定した値なので使えない。
$this->param['form][???] paramにPOSTデータが全部入るようなのですが、二番目の引数に何を指定すれば求めるものが取得できるのかわかりません。
何を入れてもnullが返ってきます。根本的に考え違いしていますか?

132 :
>>131
間違ってたらごめん。
どんなデータがpostされてるかはchromeなら要素検証から見れるから
それを参考に書いてみるといいと思う。
cakephp2しか触ったことないけど、その場合は下の感じで受け取るね
$this->request->data['model']['id']みたいな感じ

133 :
var_dump($this->request->data);
で確認してみるとよさそう

134 :
debug()さん「・・・」

135 :
2.3.10(たぶん2系)で、AuthのuserModelでバーチャルフィールドを
指定していると、ログイン時になにも入力しなくても
ログインできてしまう問題に遭遇した。
バーチャルフィールドの指定を外すとエラーチェックしてくれるから
バーチャルフィールドが問題だと思うけど、
これを突き止めるのに4時間かかったぜ・・・
似た問題に遭遇してる人は参考にしてください。

136 :
>>129
あざっす、そこに載っていたのか
そのページ前からあった?以前英語のページ含め結構探したんだが…
ソースは基本読まないで使うなあ、バグ解析などで必要にならないと読まない
他人のコード読みながら作る時間があったら自分で作るからなあ

137 :
>>135
再現してみたいので出来ればもうちょい詳しくお願いします。
バーチャルフィールドの指定ってのは
User::$virsutalFields = array(...);
ってことでいいのかな?

138 :
>>136
>他人のコード読みながら作る時間があったら自分で作るからなあ
フレームワーク使う意味ないんじゃ…

139 :
なんで?言ってる意味がわからん

140 :
作るのが面倒、時間ないからFW使うんじゃないよ
むしろそういう奴は使わない方がいいと思う

141 :
は?FWって開発速度を上げるために使うものだろ
他に何のメリットがあるんだよ

142 :
>>141
速度だけだと思ってるなら勉強しなおせ。

143 :
開発速度あげるだけなら、オレオレが一番早いと思うが。
自分が好きなように作れるんだし

144 :
えっ
どんな低機能のフレームワークだよ…

145 :
> FWって開発速度を上げるために使うもの
wwwwくそわろた

146 :
セッション切れ問題がデータベースを空にしたら治った
原因不明過ぎて怖い

147 :
そういうのあるね。特にAuth関係は不可解なこと多い

148 :
本番でなったら恐ろしすぎるんだけど

149 :
ま、nanapiとかランサーズとか
有名な会員サイトで使えてるんだから、何とかなるでしょ

150 :
Twitterのあうth認証って新しく作ったアカウントだと拾ってくれなかったりする?

151 :
>>146
> セッション切れ問題がデータベースを空にしたら治った
> 原因不明過ぎて怖い
あ、それ簡単だよ。セッションが壊れてるの
MySQLはデフォルトの設定で文字数が定義より多くて
溢れても、途中で切れるだけで処理が正常終了しちゃうんだよね。
その時、壊れたセッションが出来上がる。

152 :
>>145
何もおかしいこと言ってないと思うんだけど何が面白いのかな

153 :
やっぱそうだよね
俺もそう思っていた

154 :
コントローラーに書いてある$thisってなにがはいってるの?
何を指してるの?

155 :
マジで言ってんの?

156 :
CakeはSecurity.levelの設定をhighにしてるとわけのわからないセッション切れとか問題てんこ盛りで起きる
仕方なくmediumで使うと安定している

157 :
>>152
お前も勉強しろ

158 :
>>152
「フレームワーク メリット」でぐぐって勉強しましょう。
>>154
クラスを勉強しましょう。

159 :
反論できないと見える

160 :
cakeのわかりにくさは、モデルのわかりにくさ、単数形複数形の使い分けの分かりにくさに直結してると思う

161 :
思いません

162 :
マジックメソッド、コールバックメソッド、
リフレクションを用いた初期設定値の自動マージ、
そのあたりの隠蔽された処理の把握に苦戦する。
とは言え、これはCakeに限ったことじゃないが。

163 :
>>162
オレもいまCake使ってて
モデルが単数形でコントローラーが複数形だけど
それって他のフレームワークも同じ?
フォームヘルパーとか$this->request->data=$this->Post->read()の値をフォームで使えるようにするらしいけど
$this->set('xxx',$this->request->data);じゃなくて
そのまま使えるけどそれも隠蔽されてるっていうの?

164 :
>>153
一人のキチガイが根拠も示さず必死に否定してるけど
開発速度向上はフレームワークのメリットのひとつだよ

165 :
>>163
未作成のモデルをCakePHPみたいに暗黙的に呼び出すというのは俺は知らない。
SynfonyにしろCodeIgniterにしろテーブルと関連付けた
アクティブレコードを明示する必要があって、
そこで単数形にするかどうかは好きにすればって感じだったと思う。
> フォームヘルパーとか$this->request->data=$this->Post->read()の値をフォームで使えるようにする
え、そうなん?初耳だわ。

166 :
>>165
>ほとんどの場合、このような形式を意識することはありません。
>CakePHPの FormHelper やモデルのfindメソッドは全てこの形式に従っています。
>FormHelperを使っていれば、 $this->request->data で簡単にこの形式のデータにアクセスできるようになっています。
$this->setに代入じゃなくて
$this->request->dataに代入で使える
変なの

167 :
そこまでやってくれなくても… って感じだな

168 :
モデルを単数形、テーブルを複数形、コントローラーを複数形っていうルールは他のフレームワークも同じですか?
教えてください

169 :
>>164
141を読んでくれ。これをどう解釈するかだ。

170 :
単数形、複数形の問題ってビューのコーディング時にも悩むんだよな

171 :
>>169
他に何のメリットがあるの?
開発速度以外はデメリットだらけだろ
オープンソースのFWはオレオレ作る時間がない時に仕方なく使うもの

172 :
>>171
品質の向上とかあるだろggrks。
cakeが最良とは言わんが、今の時勢でフレームワークを使うことを考慮しないのはありえん。

173 :
>>171
メリットのひとつだけど他にもいろいろあるでしょ

174 :
>>171
・利用者が多いので、プラグイン作成の手間が省ける
・大規模サイトでも利用されてる安心感
・命名規則が統一してるから、名前付けで悩まなくてもいい
・不特定多数で開発する時、意思の疎通が図りやすい
・コピペで作っても不具合が起きづらい
・公式が現在も開発を続けている安心感
まだ続けてるか?

175 :
>>171
逆に実行速度以外オレオレのメリットがないような

176 :
>>175
そもそも実行速度求めるならPHP使う必要があるのかと。

177 :
スレが伸びてると思えば、
やはり不毛なフレームワーク論争かw

178 :
PHPを使うとどうせ遅いんだから、という理由で速度を全く気にしないというわけにもいかないよな

179 :
>>178
「遅い」の定義は要件次第だから、前提条件がないとこれもまた不毛な議論に。

180 :
cakeでは簡単なことしかできないように思える。
cakeで凝ったつくりのサイトとかあったら教えてもらえませんか?

181 :
>>180
逆にcakeでできないことって何だろう。。。
根性あれば大抵できると思うんだが。

182 :
>>180
そもそもあんたが言っている「凝った作りのサイト」が
どういったものなのかわからないので答えようがない。
cake以外で作っていてもいいから、
まず「凝った作りのサイト」の例をいくつか上げてくれ。
サイトいうだけじゃなく凝ってる部分はどこかも言うように。

183 :
facebookとかtwitterとか言い出したりしてw

184 :
CakeでSNS作ったんだけどどうやって集客すんの?

185 :
それcakephpと関係ないような…

186 :
>>184
ケーキ食べ放題とかでアピール、かな・・・

187 :
Cake最新版を落としてきて、cake test core AllTestsをやったら
Fatal error: Class 'PagesController' not found
と出るんだけど、なにこれテスト通らないのにリリースされてんの?

188 :
>>187
そのテストはお前に必要なのか?

189 :
>>178
PHPだから遅いのは確かだが、その中でも早いフレームワークは出てきてる。
>>180
「凝った作りのサイト」ってよくわからんが技術が無いだけじゃないの?
>>184
SEO対策だね。初歩しか知らんからそれ以上はなにも言えないw

190 :
人間がストレスたまらないスピードなら遅いって言われる部類でも構わない

191 :2013/09/26
>>189
SEO対策は集客のためにするんじゃないぞ。
SEOは単に検索エンジンにとって適切な作りにするだけだ。
それによって、検索した時の順位が上がることがあるが、
集客できるかどうかはコンテンツ次第。
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【企画】CGIでRPGつくーる (218)
【PHP】フレームワーク CakePHP 16ホール目【v2.4】 (191)
★ブラクラの製造方法を教えてください。 (143)
Proxy制限版プチ☆ボード公開♪ (110)
人工無脳 (475)
【PHP】PEAR Part3 (685)
--log9.info------------------
東北地方の進学校ランキング Part9 (408)
【名古屋】東海中高part-54【もうすぐ夏休み】 (125)
大阪府立茨木高等学校 vol.4 (686)
東京の受験小学校 その3 (197)
獨協中学校・高等学校スレ Part22 (289)
【十勝の雄】北海道帯広柏葉高等学校【Part2】 (918)
【伝統ある】栃木県立宇都宮高校Part10【公立の雄】 (548)
【皇室】学習院中等科・高等科Part6【御用達】 (173)
【大阪新設校】早稲田摂陵vs初芝立命館【不人気】 (135)
★北野茨木★ 大阪1学区 ★豊中春日丘★ Part3 (901)
◆◇◆◇巣鴨中学校・巣鴨高等学校Part15◇◆◇◆ (469)
浪速中学校・高等学校 (228)
大阪教育大学附属平野中学校・高等学校 Part11 (251)
東京都市大学付属中学校高等学校(旧武蔵工大付属) (557)
【特進クラス新設】東明館中学校・高等学校【第二章】 (275)
【愛知岐阜三重静岡】東海地方の底辺高校4 (170)
--log55.com------------------
【タイ】観光客女性がタクシー車内で脱糞!運転手は泣き寝入り[3/30]
【イギリス】高級紙「銃乱射事件を防ぐには生後6ヶ月以上の子供を武装させるべき。幼児には火炎放射器を装備させよ」[2/26]
【イギリス】北朝鮮はもうすぐ米本土を核攻撃できる──英国防省[04/09]
【ハンガリー】民主主義の解体が始まる──反移民、反自由主義のオルバン首相圧勝で[04/11]
【今日の特選】 台湾人が虜になっている和牛、日本人はあまり食べてないって本当?=台湾メディア[04/12]
【アメリカ】「日本は長年、貿易面で打撃与えてきた」トランプ大統領が批判[04/13]
【アメリカ】カリフォルニア州「3分割」案、11月に住民投票実施か[04/15]
【アメリカ】トランプ、TPP復帰を匂わせつつ日本を牽制「長年にわたりわれわれに大きな打撃」[04/13]