【PHP】フレームワーク CakePHP 13ホール目【v2.0】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/11/09(水) 01:05:10.60ID:???CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※他フレームワークとの比較等はスレ違いです
テンプレは>>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
前スレ
【PHP】フレームワーク CakePHP 12ホール目【笑】
http://hibari.2ch.net/test/read.cgi/php/1309505626/
0363nobodyさん
2011/12/29(木) 13:33:28.56ID:???是非教えてください
荒らす気はありません
0365nobodyさん
2011/12/29(木) 17:29:24.05ID:???public_htmlの位置が変えられない環境ならこの辺参考にがんばれ
http://massat.jp/2007/01/08/110
>>356
その例だと、学年hasManyクラス、クラスhasMany生徒、のデーターベース構成の話になってしまうような
ちょっとMVCを誤解している気がする
0366nobodyさん
2011/12/29(木) 17:41:41.88ID:???0367nobodyさん
2011/12/29(木) 19:59:03.95ID:???0368nobodyさん
2011/12/29(木) 20:06:56.58ID:???学年、クラス、生徒は全部モデルだよ。
正確に言えば、モデルが扱うデータとその属性だよ。
ま普通に考えれば、生徒がたくさん入っている生徒達データがあって、
学年とクラスは、生徒一人ひとりの属性。
0369nobodyさん
2011/12/29(木) 20:09:49.58ID:???そして、メソッドの戻りをビューに変換する役目も持っている。
コントローラはあくまでURLとデータの変換をするだけで
学年とかクラスとかそんなものを扱う所ではない。
0371nobodyさん
2011/12/30(金) 11:04:12.85ID:???0372nobodyさん
2011/12/30(金) 12:04:16.43ID:???0373nobodyさん
2011/12/30(金) 12:56:24.02ID:???0374nobodyさん
2011/12/30(金) 13:57:03.73ID:???0375nobodyさん
2011/12/30(金) 14:07:23.64ID:???0376nobodyさん
2011/12/30(金) 14:08:22.55ID:???0377nobodyさん
2011/12/30(金) 15:17:13.68ID:???0378nobodyさん
2011/12/30(金) 15:37:15.23ID:???0379nobodyさん
2011/12/30(金) 23:17:06.65ID:???0380nobodyさん
2011/12/31(土) 04:56:39.85ID:???0381nobodyさん
2011/12/31(土) 07:32:25.22ID:???0382nobodyさん
2011/12/31(土) 07:56:47.38ID:???0383nobodyさん
2011/12/31(土) 07:57:13.90ID:???0384nobodyさん
2011/12/31(土) 08:39:39.24ID:???0386nobodyさん
2012/01/02(月) 13:43:43.74ID:???0387nobodyさん
2012/01/02(月) 16:43:04.06ID:???0388nobodyさん
2012/01/02(月) 17:00:58.05ID:???0389nobodyさん
2012/01/02(月) 17:34:39.76ID:???0390nobodyさん
2012/01/02(月) 17:59:16.89ID:???なんでもかんでも読み込むから重くなるんだと思う。
0391nobodyさん
2012/01/02(月) 18:45:39.31ID:???他にも2.0で新規に作ったシステムがあって、それと同時に開発してるから、バージョンが違うとややこしい
あとコードが汚いからイチから書き直したいというのもある
いずれにせよ、古くなったバージョンからはさっさと離れたい
0392nobodyさん
2012/01/02(月) 18:47:28.84ID:???0393nobodyさん
2012/01/02(月) 20:59:19.72ID:???俺はそんな感じの作ってるよ。
0394nobodyさん
2012/01/02(月) 21:23:42.17ID:???0395nobodyさん
2012/01/02(月) 22:01:40.40ID:???0396nobodyさん
2012/01/02(月) 22:15:37.39ID:???まぁ使う方が楽なんだろうけど、やんないならやんないで別にいいって部類ならスルーしちまおうかと思って。
0397nobodyさん
2012/01/02(月) 22:19:15.79ID:???同じような箇所が結構あるだろ
0398nobodyさん
2012/01/02(月) 23:08:17.97ID:???cakeに用意されているサンプルデータでいいから、1回はbake体験した方がいい。
ひな形とはいえ、MVC全部を作ってくれるのは助かる。
0399nobodyさん
2012/01/03(火) 00:17:03.05ID:???0400nobodyさん
2012/01/03(火) 03:59:04.88ID:???1.helpers/form.phpをapp以下にコピーして改造
2.FormHelperを継承したMyFormHelperを作成
1→Cakeのバージョンアップ時に問題
2→ビューでの変数名がFormじゃなくなるのが嫌
0401nobodyさん
2012/01/03(火) 08:57:05.67ID:???半角スペースは投稿時に省略される。
>.2.FormHelperを継承したMyFormHelperを作成
今回はこっちを採用した。html5の input email を使いたくて、FormHelperを継承した。
0402nobodyさん
2012/01/03(火) 13:58:48.66ID:???0403nobodyさん
2012/01/03(火) 15:17:25.79ID:???0404nobodyさん
2012/01/04(水) 00:34:45.46ID:???0406nobodyさん
2012/01/04(水) 09:38:54.30ID:???>>404
https://github.com/joebeeson/analogue
0407nobodyさん
2012/01/04(水) 20:46:12.62ID:???複合主キーにも対応させてくれないか?
0408nobodyさん
2012/01/04(水) 22:17:55.77ID:???0409nobodyさん
2012/01/04(水) 23:27:58.25ID:???2.0のブログチュートリアルを見るとつけてたりつけてなかったりだけど、
何も書かなければデフォでpublicだから省略していい気がするんだけど、
書いた方が(見栄え的に)お行儀のいいコードだったりする?
http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/part-two.html
0410nobodyさん
2012/01/05(木) 00:24:31.76ID:???一応CakepPHPのコーディング規則ではそこまで書いてないので、好きにすればOKかと。
ただし、メソッド名の方に規則があって、protectedの場合はメソッド名の先頭をアンダーバー、
privateの場合はメソッド名の先頭をアンダーバー2つ。
http://book.cakephp.org/2.0/en/contributing/cakephp-coding-conventions.html#method-definition
0411nobodyさん
2012/01/05(木) 01:57:28.20ID:???つけたほうが一貫性があっていいとは思うんだけど、
public function 関数名
と書くと、public functionが長すぎて、ぱっと見たとき関数名に目が
行きにくいんだよな。変数は常にpublic/private意識しておくけど、
メソッドはほぼpublicで問題ないし。
0413nobodyさん
2012/01/05(木) 02:32:44.05ID:???1.3時代からpublic付けてたんだが。
0414nobodyさん
2012/01/05(木) 12:39:38.01ID:6HbHp9Xn頭の中に、ウェブサービス構築のための常套手段が植え付けられたからだと思う。
CakePHPというよりもフレームワークを使用するメリットと言った方が適切かな。
0415nobodyさん
2012/01/05(木) 17:48:11.25ID:???AppControllerのbeforeFilterでsetした値が404の時にビューに反映されないようになった?
全ページでヘッダー部分に表示させてる共通データの部分が、404の時だけundefined variableになってしまう
SQLログ見るとデータ自体は取ってきてるみたいだけどsetしたはずのデータがビューに反映されない
0417nobodyさん
2012/01/05(木) 21:37:19.55ID:???ビューがClassRegistyに登録されなくなったから、ビューの別インスンタンスが生成されて
それが使われる。
あとデフォルトのExceptionRenderer(というか、CakeErrorController)はbeforeFilter()まで実行しない。
beforeFilterで例外飛ばすときもあるじゃん?
というわけでExceptionRendererを継承したクラスを作ってそれを使うのがお勧め。
_getController()でもオーバーライドすればいいじゃないの。
0419nobodyさん
2012/01/06(金) 01:07:10.01ID:yz+Wi1W6どうすればいいですか?
0420nobodyさん
2012/01/06(金) 06:11:17.85ID:???云万になるとlsが遅くなる気がするけど、
PHPがセッションファイルを直接取ってくるんならとくに大丈夫なのかな
0421nobodyさん
2012/01/06(金) 07:36:47.81ID:???全列挙する必要がある ls には O(N) 必要
それに対して目的のファイルが判っている場合は O(log N) に収まる
古いファイルシステムだとまた話が変わってくるが
0423nobodyさん
2012/01/06(金) 09:12:24.69ID:???そらされるか…
0424nobodyさん
2012/01/06(金) 10:03:42.70ID:???Cakeはタブだよね?
スペース派の人どうしてる?
Cakeに合わせてる?
0425nobodyさん
2012/01/06(金) 11:54:55.28ID:???0426nobodyさん
2012/01/06(金) 14:42:53.01ID:???http://localhost/helloにアクセスするとhelloビューの内容が読み込まれましたが
http://localhost/にアクセスするとcakephpのreadme見たいな感じのページがでてしまいます
http://localhost/にアクセスした場合のデフォルトのコントローラをhelloにしたいのですがこれはどこのファイルに設定するのでしょうか?
0427nobodyさん
2012/01/06(金) 15:56:30.42ID:???0428nobodyさん
2012/01/06(金) 23:03:59.16ID:???自分で書いたコードはスペースインデント
routes.phpとか既に用意されているファイルはタブインデント
一人プロジェクトだから細かいことは(゚ε゚)キニシナイ!!
0429nobodyさん
2012/01/07(土) 08:27:20.92ID:???app_controller の before_filter で
header('Content-Type: application/xhtml+xml; charset=Shift_JIS');
という風にHTTPヘッダの content-type と charset を設定して、本来
Content-Type: application/xhtml+xml; charset=Shift_JIS
このヘッダが送られるはずが、
Configure::write('debug', N);
この設定を、0(デバッグ無し)に変更すると、
Content-Type: text/html
と、出力されてしまう。
(3 にするとちゃんとxml用のヘッダが送られるのは確認済み)
このケースが逆なら、手動でヘッダを送る前にデバッグ情報が送られているのかなと思うのですが、
デバッグ無しにすると、別のヘッダが送られているのが不思議です・・・。
どのファイルのどこでHTTPヘッダが送られているかって確認できましたっけ?
0430429
2012/01/07(土) 08:33:08.99ID:???>>429の現象はさくらの本番サーバにアップしたときにのみ起こります。
開発環境のlocalhostではdebugの値に関係なく、
意図したHTTPヘッダが送られています。
アドバイスいただければ幸いです
0431nobodyさん
2012/01/07(土) 12:27:32.35ID:???アクションに応じて、ロードするコンポーネントを変更することはできないのでしょうか?
0432nobodyさん
2012/01/07(土) 13:24:04.51ID:???App::importは?
http://book.cakephp.org/1.3/ja/view/876/%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB#!/1.3/ja/view/936/%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9-%E3%83%A2%E3%83%87%E3%83%AB-%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88
0433nobodyさん
2012/01/07(土) 13:52:12.56ID:???リンク先は違う情報だったけど要は
App::import('Component', 'Mailer');
$Mailer = new MailerComponent();
$Mailer->initialize( $this );
$Mailer->startup( $this );
ってやればいいのかな?
0434ひろみちゃん
2012/01/07(土) 17:28:25.09ID:???2.0からコアの機能で動的に読めますが、1,x系は拙作のHackプラグインを使うことによって
期待する機能が提供されます。
https://github.com/hiromi2424/hack_plugin
Alias->loadComponent('Mailer');
startupするかは第3引数にtrueを指定すればOKです。
ドキュメントが整備されてないのですが需要があればします。
あとプラグイン名が厨二病臭いですが厨二病なので諦めてください。
0435nobodyさん
2012/01/07(土) 17:52:24.37ID:???ありがとうございます
拝見しましたが、思ったより長いですね
>>433のやり方じゃ駄目で、このようにきっちりやるべきなんでしょうか
0436ひろみちゃん
2012/01/07(土) 18:00:20.89ID:???短期的には>>433のやり方でも問題ないです。
メールのマネージャー程度のコンポーネントならまず大きな問題は起こりえないでしょう。
長期的に見れば、2.0で導入されるやり方に近いほうがより良いと思います。
0437nobodyさん
2012/01/07(土) 18:15:00.53ID:???コードはありがたくいただきます
0438nobodyさん
2012/01/07(土) 21:17:09.01ID:???http://www.1x1.jp/blog/2008/01/cakephp_adminauthcomponent.html
開発環境では問題なかったんだけれども、レンタルサーバーに上げてみたら
> header("WWW-Authenticate: Basic realm=\"Please Enter Your Password\"");
のところが効いてないのか、Basic認証のダイヤログが出ずにAuthorization Requiredと表示されてしまう。
HTTPヘッダーを見てみたところ、開発環境(正しく動いている環境)では
>HTTP/1.1 401 Authorization Required
となっているのが、本番(正しく動かない環境)では
>HTTP/1.1 200 OK
が出てしまっている。
ちょっと>>429の状況に近いかも知れないけど、自分の方はdebugの値に関係なくheaderがちゃんと送信されてない感じ
0439438
2012/01/07(土) 21:49:27.70ID:???CGI版のPHPだとBasic認証効かないのね
0440nobodyさん
2012/01/07(土) 22:13:13.36ID:???1.xと比べてシャキシャキ動いてる気がする
0441nobodyさん
2012/01/07(土) 22:51:46.73ID:???0442nobodyさん
2012/01/07(土) 23:02:34.52ID:???0443nobodyさん
2012/01/08(日) 01:17:09.40ID:???0444nobodyさん
2012/01/08(日) 03:29:35.66ID:???0445nobodyさん
2012/01/08(日) 14:39:21.96ID:???dev版だけど、多少軽くなってるみたいだな
0446nobodyさん
2012/01/09(月) 00:29:39.74ID:pfm1AGOc'order' => array('Person.secondname ASC')
のようにしているんですが、複数のorder条件をつけるのはどうしたらいいですか?
具体的には苗字順に並べるようにしてるんですが、苗字がない人は下の名前(Person.firstname)を参照して五十音で並べたいです
0447nobodyさん
2012/01/09(月) 00:37:51.69ID:???$options['order'] = array(
'Person.secondname, Person.firstname ASC'
);
で$optionsをうしろにくっつければいけました
0449nobodyさん
2012/01/09(月) 01:58:03.73ID:???0450nobodyさん
2012/01/09(月) 06:19:15.24ID:???function index($param){
とアクションを作っていて、URLで
コントローラー名/index/パラメータ
と呼ばすに
コントローラー名/パラメータ
とやっても動くようにするにはどうすればよいでしょうか
ぐぐるとRoutesを使う例が出てきましたが、それだと他のアクションが使えなくなるようでした
アクションとして存在しない時のみ、indexのパラメータとして扱うことはできないでしょうか
0451nobodyさん
2012/01/09(月) 08:57:47.96ID:???$paramが数値なら、ルーティング規則でその部分に(数値であることの)正規表現を書けば
いける。詳しくはぐぐって。
だめだったらカスタムルートオブジェクトを作成してひーこらするしかない。頑張って。
0452nobodyさん
2012/01/09(月) 08:58:56.35ID:???Router::connect()の第3引数で指定するってこと。
0453nobodyさん
2012/01/09(月) 09:04:31.25ID:???ちなみに$paramは文字列で、複数ある場合もありますが大丈夫でしょうか
0454nobodyさん
2012/01/09(月) 09:46:49.44ID:???0455nobodyさん
2012/01/09(月) 23:29:06.48ID:???0456nobodyさん
2012/01/09(月) 23:34:27.49ID:SU3KFcHv0457nobodyさん
2012/01/09(月) 23:37:13.69ID:???これは実際に200件実行してるということでしょうか
すると問題ありますかね
■ このスレッドは過去ログ倉庫に格納されています