【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/
0773nobodyさん
2012/03/13(火) 12:48:03.37ID:???0774760
2012/03/13(火) 13:20:03.94ID:???ビューが条件分岐だらけになりませんか?
if (!empty($post['Post']['image_filename']):
....
else:
こんな風に。
$post->getImageUrl(array('mobile' => true));
みたいに書けたらいいんですけどねぇ・・・
0776nobodyさん
2012/03/13(火) 13:45:55.38ID:???そうなんですけど、
モデルの返り値が配列じゃなくてエンティティなら、
もっとスマートに書けるのに、と思いまして・・・
これがCake流なんですかね
0777nobodyさん
2012/03/13(火) 13:53:09.13ID:???その考えはありませんでした。勉強になります!
ビット演算の事を>>770さんから教えていただき勉強しましたが、
数学が苦手な私の頭ではさっぱりで、
単純にテーブルを分ける(Cake的にhasMany)を考えていました。
テーブルを分けて正規化する方法も一般的なようですが、
正直、チェックボックスを使用するカラムが必要な度に
テーブルを生成するのもどうかと思い、悩んでいました。
772さんの方法も視野に入れて設計面を工夫してみます。
みなさん、ありがとうございました。
0778nobodyさん
2012/03/13(火) 22:24:16.17ID:???遅くなるだろw
0780776
2012/03/14(水) 03:34:06.02ID:???今はYiiを調べてる。
0781大便
2012/03/15(木) 08:30:03.53ID:UhuckWxP早速ペニーオークションで破産しました。
0783nobodyさん
2012/03/15(木) 16:11:21.14ID:???お問い合わせフォームとか会員専用ページとか
どのサイトでもよく使うファイルをプラグインにまとめるべきか否か悩みます。
0786nobodyさん
2012/03/15(木) 21:56:56.36ID:???0787nobodyさん
2012/03/16(金) 00:00:22.47ID:???0788nobodyさん
2012/03/16(金) 09:41:57.89ID:???俺はまとめてるよ。
ログイン
リマインダー
新規会員登録
アフィリエイト機能とか。
うまく作れば使いまわし効く。
全部プラグインでやれるから
最近やることなくなった。
0790nobodyさん
2012/03/16(金) 10:41:05.32ID:pS4d35yuログインすると
$this->Session->write('user',$user_id);
のようにコントローラ内のSessionに情報を保存していますが、これが数時間でread()しても値が取れなくなるようです。
core.php内で
Configure::write('Session.save','cake');
Configure::write('Session.timeout', (24*60*60*7));
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1000);
ini_set('session.cookie_lifetime', (24*60*60*7));
ini_set('session.gc_maxlifetime', (24*60*60*7));
Configure::write('Security.level', 'low');
としているので、1週間持って欲しいのですがダメみたいです。
何か方法はありますでしょうか。
0791nobodyさん
2012/03/16(金) 20:57:57.62ID:???具体的にいうと、
プラグインの中に
ビヘイビアと、コンポーネントを作る。
それをusercontrollerとmodelに読み込ませる感じ。
0794nobodyさん
2012/03/17(土) 19:37:12.80ID:???または修正版のサイトとかあれば
0795nobodyさん
2012/03/19(月) 15:45:40.35ID:???これって結局安いの高いの
0796nobodyさん
2012/03/19(月) 16:50:34.02ID:???さくらインターネットのメールサーバにQdmail使ってSMTP AUTHでメール送信してるんだけど、
何回か(4,5回が多い)に1回だけメール送れないんだよな
QdSmtp error: No Responce SYSTEM TIME OUT line -> 603
QdSmtp error: getMessage error line -> 543
QdSmtp error: Error From setting line -> 488
QdSmtp error: Send Data Error or Auth Error line -> 415
Qdmail error: Qdmail Version 1.2.6b ,PHP Version 5.2.11
Qdmail error: OS WINNT ; PHP Version 5.2.11 ; Qdmail version 1.2.6b
php.ini status: mb_language = Japanese ; mb_internal_encoding = UTF-8 ; mb_detect_order = ASCII,JIS,UTF-8,EUC-JP,SJIS
Qdmail Status debug: 0, log: 3, errorlog: 0
Qdmail error: No send . Because SMTP mail method replied error line -> 2190
Qdmail error: Send Error line -> 2115
Qdmail error: Error happen, see upper line -> 2194
Qdmail error: Send Error line -> 2115
画面にこんなエラーが吐き出されてメール送信されない。
エラー行だって言われてるところを見てもエラー行を出力する処理しか書いてなくて
どういうエラーが起こったのか全然わからない・・・。
同じような事になった人いないかな?
0797nobodyさん
2012/03/19(月) 17:26:02.77ID:???0798nobodyさん
2012/03/19(月) 17:27:57.85ID:???すまん、一応CakePHPのコンポーネントとして使ってるし、
Cake使ってる人でメール送信する人はこれ使ってる人多そうだからここで聞いてみた
PHP質問スレで聞いたが、そこでもスレ違いだとさ・・・。
ライブラリの質問できる場所無いみたいなんだよな
0799nobodyさん
2012/03/19(月) 19:02:54.22ID:???そうじゃなくて、ライブラリ自体、公式でサポートしてるんだから
そっち行けってことっでしょ。エラーメッセージすら読めてないし。
フレームワーク以前の問題だ
0800nobodyさん
2012/03/20(火) 05:09:01.21ID:???エラーメッセージもいいかげんだし。
0802nobodyさん
2012/03/20(火) 22:24:51.38ID:???メール送信なんて今まで作っていたのあるだろ。
0803nobodyさん
2012/03/20(火) 23:14:24.46ID:???・HTMLメール
・添付ファイル
こういうの対応しようとすると結構自作でやるのはな、、、
0804nobodyさん
2012/03/21(水) 12:11:52.99ID:???フレームワーク使う前に作っていたものがあるだろ。それ使えよ。
0805nobodyさん
2012/03/21(水) 18:27:13.50ID:???0806nobodyさん
2012/03/21(水) 20:09:46.98ID:???0808nobodyさん
2012/03/21(水) 23:19:44.62ID:ZAI6cSPi'fields' => array(
'Foo.id',
'Foo.firstname'
)))));
とすると、
$form->select("Foo.bar", array($select), 0, array('empty' => null))
で
select要素の中に
<option value="Fooのid">Fooのfirstnameの中身</option>
というのができるんですが、
これを
<option value="Fooのid">Fooのsecondnameの中身 Fooのfirstnameの中身</option>
としたいんですが、find('list')は一対でしか使えないんでしょうか?
やり方をご教示いただけたら幸いです
0809808
2012/03/21(水) 23:27:53.96ID:ZAI6cSPiallで読んで、
foreach ($select as $value) {
$talent_data[$value['Foo']['id']] = $value['Foo']['secondname'] . ' ' . $value['Foo']['firstname'];
}
$this->set('select', $select);
でlistで作ったoption群と同じ形式のリストデータが生成されました
0810nobodyさん
2012/03/22(木) 00:13:00.01ID:???urlが空でもよくて、入っていれば正しいURLか判定する、という風にするやり方がありましたらお教えください
0811nobodyさん
2012/03/22(木) 00:20:23.77ID:???0814nobodyさん
2012/03/22(木) 10:58:28.03ID:???煽る意味がわからん。他人のライブラリは使えないと言い、
自分でも自作できないとかワガママすぎるだろ。
0816nobodyさん
2012/03/23(金) 00:01:31.13ID:???自分でコンポーネントやヘルパー作れるようになってるんだから。
0817nobodyさん
2012/03/23(金) 10:24:37.19ID:???0818nobodyさん
2012/03/23(金) 11:50:45.97ID:???0819nobodyさん
2012/03/23(金) 13:36:50.00ID:???いきなりフレームワーク使い出したというのか?
大体は参考書やらネットの情報やらで適当なプログラム作って、
慣れた後に効率化を求めてフレームワークを使い出すと思うんだが。
0820nobodyさん
2012/03/23(金) 13:42:01.91ID:???文字化けしたり、上手く送れなくてネットで調べながら
自分なりの「メール送信ライブラリ」を作ると思うんだが。
で、その後に添付ファイルやらHTMLメールやらを送信したくなって
qdmailのような他人が作ったライブラリを探すというのなら分かるよ。
でも、いきなり上記の部分すっ飛ばしてCake使って
「上手く動きません><」とか言われても、勉強不足以外の何者でもないだろ。
0821nobodyさん
2012/03/23(金) 16:25:24.36ID:???0822nobodyさん
2012/03/24(土) 15:01:00.43ID:oSWZUaYy0823nobodyさん
2012/03/24(土) 18:51:05.67ID:???0824nobodyさん
2012/03/25(日) 01:08:52.69ID:???$paginator->options(
array('url' => array('?id=' . $id))
);
とやったんですが、
foo/?id=100/page~1
みたいなurlになってしまってうまく動作できません
foo/page~1?id=100
となるようにしたいんですが、optionsをどう書き換えたらいいんでしょうか?
0826nobodyさん
2012/03/25(日) 23:49:03.03ID:???みたいな事をしてURLを生成しているのですが、
パラメータ部分を予め設定しておく事は出来ないのでしょうか?
0828nobodyさん
2012/03/26(月) 18:44:48.32ID:+fypSFERformタグのidが重複しちゃうけど、どうやって回避するのがスマートかな
今はform->createでid指定して別名にしてるけど、あまりスマートに思えない
0829nobodyさん
2012/03/26(月) 19:11:54.92ID:???最初は便利なのかなと思ったけどしばらくいじって思い通りにいかないから
ないものとして普通にformタグ書くようにしたら能率上がったわ
0832nobodyさん
2012/03/27(火) 01:42:43.77ID:J3nZuwJgエラーが出たフォームの上(下だっけ?)にメッセージが表示されるけど
任意の場所に表示したい場合はどうしてる?
0833nobodyさん
2012/03/27(火) 03:37:14.44ID:???0834nobodyさん
2012/03/27(火) 14:05:24.25ID:???は使えないのでしょうか?使える場合は書き方を押してください
0835nobodyさん
2012/03/27(火) 14:37:07.94ID:???0836nobodyさん
2012/03/27(火) 17:57:15.57ID:???cakephpのコミュニティで質問すれば。
http://cakephp.jp/modules/newbb/index.php
0838nobodyさん
2012/03/28(水) 22:39:25.33ID:???編集でidが2つある場合、URLが/post/edit/1/2
みたいになるけど、これってわかりづらいよね。
ピュアPHPの、edit.php?parent_id=1&id=2の方が分かりやすい気がする。
まぁ、Cakeでは/edit/parent_id:1/id:2 というURLにはなるんだけどさ・・・
0839nobodyさん
2012/03/28(水) 22:40:41.18ID:???ID=一意に表すもの
だし1つで表せないとしたらそれはIDじゃない
1つで表せるならURLに含ませる必要ない
0840nobodyさん
2012/03/28(水) 23:05:18.11ID:???別々のものに同じidが割り振られているのはおかしいが、
ひとつのものに二つ以上のidが振られているのは問題なくね?
0841nobodyさん
2012/03/28(水) 23:10:52.27ID:???問題ないけど、2つ持たせる意味がわからないし、
仮に持たせたとしてもそれをURLに含ませる意味もわからない
0842nobodyさん
2012/03/28(水) 23:15:51.51ID:???管理画面があったとして、
ユーザID・1が投稿したお知らせのID2を見たいとする。
ピュアPHPなら、edit.php?user_id=1&id=2だよな?
Cakeなら/edit/1/2か/edit/user_id:1/id:2だな。
セッションに含めて持ち回る方法もあるけど、
毎回セッションに入れるのはおかしくないか?って思うからさ。
0843nobodyさん
2012/03/28(水) 23:24:56.61ID:???じゃだめなの?
0844nobodyさん
2012/03/28(水) 23:32:10.02ID:???Cakeの書き方で言えば、
/news/add/1 この1はuser_idの1
/news/edit/2 この2はidの2
URLを見ただけでは混乱する
0845nobodyさん
2012/03/28(水) 23:46:26.83ID:???0846nobodyさん
2012/03/28(水) 23:58:08.70ID:???0847nobodyさん
2012/03/28(水) 23:59:20.33ID:???ほんとに?自分だけで分かるからOKって考え方なの?
ちなみに、/edit/1/2みたいな書き方はBaserCMSでもやってた
0848nobodyさん
2012/03/29(木) 00:03:50.49ID:???Router::url('/news/edit/' . $data['Newsr']['userid'] . '/' . $data['News']['id'])
になるわけだし。単なるURL上での事ならこだわる必要ないかな。
外部に公開するわけでもないし。
0851nobodyさん
2012/03/29(木) 00:19:24.06ID:???URLでなんのページかわかりやすくしようというのは、ユーザビリティの面からも正しい考え方だけど
この件に関しては>>844の書き方で充分わかりやすいといえる範疇だと思う
0852nobodyさん
2012/03/29(木) 04:02:59.81ID:???>Cakeなら/edit/1/2か/edit/user_id:1/id:2だな。
誰がこんなこと決めたの?
Cakeだって/edit?id=1&id=2ってやるだろ。
0853nobodyさん
2012/03/29(木) 10:57:51.78ID:???0854nobodyさん
2012/03/29(木) 22:50:57.56ID:???0855nobodyさん
2012/03/29(木) 23:14:23.59ID:???usernameなら/news/tanaka_ichiro/123みたいな感じで含めてもいいと思うけど
どうしてもuser_idもidも含めたいのならnamedパラメータ使って/news/user_id:1/id:2とかにする
0856nobodyさん
2012/04/01(日) 00:45:58.67ID:OiSFrCKx1.x系の場合コントローラに
function beforeFilter(){
//携帯なら
if($this->Ktai->is_ktai()){
Configure::write('App.encoding', 'SJIS');
$this->layout = "mobile_layout"; //charset=shift_jis"
}else{
って書けばブラウザのエンコードが既存の「UTF-8」から「SJIS」に切り替わるのに2.x系だと「UTF-8」のまんまだ。。。
かなり嵌ってるんだけど分かる人いるかな?
てか俺の環境がおかしいのかな??
0857nobodyさん
2012/04/01(日) 02:38:57.47ID:???設定したことないから知らないが
ヘッダーはutf8とsjisどっちなの?
0858nobodyさん
2012/04/01(日) 03:16:24.89ID:OiSFrCKxPCと携帯でエンコードを分岐したくて
PC -> UTF-8 携帯 -> shift_jis
core.php自体に記述しているのは
Configure::write('App.encoding', 'UTF-8');
なんだけど、携帯のページを表示するときは
beforeFilterでConfigure::write('App.encoding', 'SJIS'); に変更してます
cakephp1.3だとこの設定でブラウザのエンコードはshift_jisに変更されるんだけど
2.x系だとUTF-8のまま。。。
core.php自体をConfigure::write('App.encoding', 'UTF-8');に書き換えると
ブラウザのエンコードはshift_jisに代わるんだけどcore.phpだと分岐処理書けないから困っています。
2.x系だと別の処理が必要なのかな?
0859nobodyさん
2012/04/01(日) 03:18:29.30ID:OiSFrCKx>core.php自体をConfigure::write('App.encoding', 'UTF-8');に書き換えると
上記は
Configure::write('App.encoding', 'SJIS');の間違いです。
誤植すいません。。。
0860nobodyさん
2012/04/01(日) 17:58:24.58ID:???ケータイ対応したいならこういう感じに書いたら?
http://webengineerlife.com/2012/02/08/cakephp-pc-mobile/
0861nobodyさん
2012/04/02(月) 00:51:25.23ID:ZyijX88yありがとう
ちょっと試してみます。
携帯ライブラリとか使って複雑になってるのも原因の1つかもです。。。
0862nobodyさん
2012/04/03(火) 18:18:51.92ID:???そしてhavingってめちゃくちゃ便利だな。
これのお陰でDBの設計が楽になった。
0863nobodyさん
2012/04/04(水) 18:16:19.49ID:???表示(コントローラからset)の場合は、個別でサニタイズしなきゃいけないんだな
この点忘れてた・・・
0864nobodyさん
2012/04/05(木) 00:28:36.65ID:???ローカルのxampp環境でmodelがbake出来ないんですけど。。
cliのphpが「問題が発生したため・・・」になる
0865nobodyさん
2012/04/05(木) 23:35:57.76ID:???テーブルFoosのflagがonのものだけ取り出したいとき、
'conditions' => array(
'Foo.flag' => 'on'
),
と書いてできたんですが、
Foosのflagがonでかつ、
Foosのlawと同じ値のBarsテーブルのidの、deleteがoffのもの、というのを条件にしたい場合どう書けばいいでしょうか?
具体的には、
Foosのテーブルには商品リスト、Barsには業者データがあり、
取り扱っている商品、でかつ、倒産していない業者、の商品リストだけ取り出したいのです
よろしくお願いします
0866nobodyさん
2012/04/06(金) 01:33:16.23ID:???面倒なのでレンタルサーバにリモートプロジェクトとしてEclipseでバンドして
作業してるんですが、こういった開発手法ってNGでしょうか?
0867nobodyさん
2012/04/06(金) 11:00:58.23ID:???0868nobodyさん
2012/04/06(金) 11:22:58.85ID:???ローカルとサーバで2度設定をする手間を考えるとやはり
直接サーバ上でコードをいじった方が効率が良いと思うんだよね。
0870nobodyさん
2012/04/07(土) 00:51:33.09ID:4OZyxrY6さくらインターネットに設定しようと思っているのですがどうしてもうまくいきません。
http://mori.moripower.jp/eqwip/cakephp/370.html
どの部分でエラーが起きているか追いかけてみたところ
/home/user_name/www/app1/index.php
において、下記判定処理でインクルードに失敗していました。
if (!include(CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'bootstrap.php')) {
bootstrap.php自体のパスは下記が正の筈なので
直接(べた)書きで試してみましたがやはりダメでした。
(bootstrap.phpの権限を 755に設定してもダメ)
/home/user_name/cake/lib/Cake/bootstrap.php
どなたか同じ様な体験をされた方はいませんでしょうか?
0871nobodyさん
2012/04/07(土) 01:04:14.05ID:ET0rgidW■ このスレッドは過去ログ倉庫に格納されています