【PHP】フレームワーク CakePHP 17ホール目【v3α】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2014/08/02(土) 21:57:41.01ID:LI0DdohH質問するときはCakePHPのバージョンを書きましょう
※他フレームワークとの比較等はスレ違いです
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
cookbook(マニュアル)
[3.x] http://book.cakephp.org/3.0/
[2.x] http://book.cakephp.org/2.0/ja/
[1.3] http://book.cakephp.org/1.3/ja/
https://twitter.com/cakephp
https://www.facebook.com/CakePHP
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
※前スレ
http://kanae.2ch.net/test/read.cgi/php/1393661004/
0314nobodyさん
2015/02/27(金) 05:01:23.09ID:YC5Ps1qe半角英数字です。
0315nobodyさん
2015/02/28(土) 14:46:39.93ID:IfvfAmZV以下の様なエラーが出ます。
何が原因なのでしょうか?
UID of script is smaller than min_uid
0316nobodyさん
2015/02/28(土) 14:56:54.33ID:IfvfAmZV自己解決しました。
0317nobodyさん
2015/03/02(月) 20:14:31.17ID:/EFmk8QSvalue serverが糞過ぎです。
cronを設定しても動きません!!もしvalue serverで正常に動作させる方法が載っているHPを
ご存知の方がいらっしゃいましたら教えてください。
0318nobodyさん
2015/03/02(月) 22:25:23.88ID:???0319nobodyさん
2015/03/03(火) 07:45:40.08ID:???どうせ設定ミスだからまず最初にローカルで動作確認してから
同じ設定をvalueserverに張り付けた方がいい
レンタルサーバーでいきなりcron動かすのは問題点特定しにくいから鬼門
0320nobodyさん
2015/03/03(火) 09:37:28.36ID:???今ならビルトインサーバで一発だし今回みたいなケースもxampp使えばすぐなのに
0321nobodyさん
2015/03/06(金) 00:22:12.48ID:???saveallがやってた動きがどうにも再現できん、難しいこと全然やってないのになあ
0322nobodyさん
2015/03/06(金) 01:05:40.10ID:???3ヶ月かけて作ったサイトなんだけど
2でリニューアルすべき?
みんなならどうする?
0323nobodyさん
2015/03/06(金) 07:38:23.90ID:???CakePHP以外にもPHPのバージョンを5.x系の最新にする手間もあるし
バージョン上げるなら、3がRC版がリリースされたので3に上げたい、
だけど上げるとしても機能追加とバージョンアップ作業は別々にした方が安心、
同時だとCakePHP、PHPのバージョンアップ、機能追加とやる事多過ぎで混乱すると思う
0325nobodyさん
2015/03/07(土) 00:01:00.07ID:4wJwCx0Bhttp://fox.2ch.net/test/read.cgi/poverty/1425651890/
0326nobodyさん
2015/03/12(木) 11:53:15.78ID:???セッション使うから嫌って変数を作ってたんだが、setFlashだけで良いことに気づいた。
elementも指定できるから、処理が成功/失敗のHTMLを出力することも出来るし、ビューに無駄な箇所が減る。
0327nobodyさん
2015/03/12(木) 14:39:44.54ID:???0328nobodyさん
2015/03/13(金) 13:31:35.39ID:qp4/hKaLFooControllerのAuthでは'FooCookie', BarControllerのAuthでは'BarCookie'のように
クッキーの名前だけ分けたいのですがどこで指定すればよいのでしょうか。
お願い致します。
0329nobodyさん
2015/03/13(金) 20:39:40.33ID:???あえてやるなら各コントローラーのbeforefilterかな
0330nobodyさん
2015/03/14(土) 12:38:08.43ID:???3使うのってまだ早いですかね?
公式ドキュメントも日本語訳まだ整備されてないですよね
0331nobodyさん
2015/03/14(土) 15:21:12.60ID:???使ってみたいわ
0332nobodyさん
2015/03/14(土) 17:04:29.47ID:???ドキュメントに書いてないことが多いのはいつものことなんだけども
0333nobodyさん
2015/03/14(土) 18:33:04.60ID:FIB+Mu1Tアソシエーション構成について悩んでいます。
テーブルは以下になります(重要な箇所以外省いています)
■ユーザーテーブル(users)
id|username|password|email
■プロフィールテーブル(profiles)
id|user_id|name|gender|comment
■店舗情報テーブル(shops)
id|user_id|name|address|tel
■広告主のテーブル(clients)
id|user_id|company|tantou|tel
■アソシエーションのパターン
一般会員の場合は、ユーザー+プロフィール
店舗会員の場合は、ユーザー+店舗情報
クライアント会員の場合は、ユーザー+広告主
となります。
それぞれ会員登録するページでは上記の組み合わせで登録します。
ユーザーに3つのテーブルをhasOneしてContainで
どのテーブルを取得するか選ぶ方法も考えたのですが、
その設計が正しいのか否か分かりません。
どういうモデル構成でどうアソシエーションを組めば良いか
アドバイスください。お願いします。
0334nobodyさん
2015/03/15(日) 22:01:54.15ID:???自分ならusersに会員タイプ判断用のtypeフィールド追加して、その値によって動的にcontainさせる
hasoneアソシエーション自体は三つとも設定しておく
あと実際の運用でこの程度のフィールド数なら
タイプごとにテーブル分けなくてもいい気がするけど
省略してるフィールドが多いならこのテーブル構成でいいと思う
0335nobodyさん
2015/03/16(月) 08:32:28.20ID:???newEntities()で一発変換できるって書いてたんだが、それだとformのcreateには何渡せばいいんだ?まずnewEntityしたのを渡してからpostが飛んできたらpatchEntitiesって感じにすると返り値が変な配列になるし
0336333
2015/03/16(月) 10:52:24.28ID:???やっぱりContainする方法がベストですかね。ありがとうございます。
あと、省略しているフィールドは多いですね。
1テーブル20ぐらいありますし、後に増える可能性もあります。
パスワード再設定用のテーブルや退会した理由をを保存するテーブルなど
ユーザー+共通テーブルがいくつかあるため、分ける形を採用しました。
03371/2
2015/03/16(月) 14:25:07.97ID:???◆ Model
-------------------------
AAncestor
BAncestor
AParent
BParent
Item
◆ Association
-------------------------
AAncestor hasMany AParent
AParent belongsTo AAncestor
AParent hasMany Item
BAncestor hasMany BParent
BParent belongsTo BAncestor
BParent hasMany Item
Item belongsTo AParent
Item belongsTo BParent
◆ 目的
ItemsをAAncestorとBAncestorで絞り込みたい
続く
03382/2
2015/03/16(月) 14:26:08.03ID:???'conditions' => array(
'AAncestor.id' => 1,
'BAncestor.id' => 1
)
));
上記のようにすると、SQLエラーが出ます。
=> Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'AAncestor.id' in 'where clause'
当面の解決策として
$this->Item->find('all', array(
'conditions' => array(
'AParent.a_ancestor_id' => 1,
'BParent.b_ancestor_id' => 1
)
));
とし、それぞれ祖先ではなく、親のforeign_keyにて対応しています。
例えばconditionsに [AAncestor.name, BAncestor.name] を使いたい場合
一度それぞれでfindを走らせIDを取得することで一応は解決しましたが、
あまりスマートに見えませんし、更に離れたアソシエーションだと難儀しそうです。
上手いやり方もしくは根本的な考え方の違いがあるのでしょうか?
シンプルそうなのに検索しても解決策がみあたらず、困っています。
よろしくおねがいします! 👀
0339nobodyさん
2015/03/16(月) 18:24:40.64ID:femzn5eLという関係性の時、メッセージを追加・編集する時に
どういうコントローラー・アクションにすればいいか悩んでいます。
A)メッセージ用のコントローラーを作り、掲示板IDを持ちまわる
/messages/index/bbs_id:1
/messages/add/bbs_id:1
B)掲示板のアクションに追加する
/bbs/message/bbs_id:1
/bbs/message_add/bbs_id:1
/bbs/message_edit/bbs_id:1&message_id:1
どちらにしろメッセージを投稿する時はbbs_idを保持しなければいけないので、
Aパターンでも良い気がしますが、Bの方が関係性は明確です。
どの形で良いかご意見ください。
0340nobodyさん
2015/03/16(月) 23:44:21.41ID:L8XNWzC11個先のアソシエーションで条件指定する場合はJOINしてるから
そのままのconditions指定でいけるけど
2個先以上のテーブルは別のSQLを投げて情報をとってくるので
そのままconditionsに条件指定しても取ってこられなかったはず
cakephp contain deep associations
cakephp conditions deep associations
とかでググると解決策出てくる
>>339
ルーティングとコントローラー/モデルを切り分けて考えた方がいい
BBSという機能を実装したいのなら、まず親のTopic(スレッド)と子になるComment(レス)を想定して
TopicsController / TopicModel
CommentsController /CommentModel
とかを作って、それぞれにindexとかaddとかeditを実装する
(名前は別にbbsとmessagesでもいいけど)
最終的にユーザーに見せたいURLとかSEO的に設定したいURLがあるなら
ルーティングで
/bbs/add/topic_id:1
/bbs/topic_id:1
/bbs/topic_id:1/message_id:1
/bbs/message/edit/message_id:1
とかで好きなURLでアクセスできるようにするのがいい
0341339
2015/03/17(火) 00:48:50.89ID:???>ルーティングとコントローラー/モデルを切り分けて考えた方がいい
という一文でハッとしました。
確かにURLはルーティング次第でどうとでもなりますよね。
1つのコントローラーでまとめるのではなく、
シンプルに目的に応じたコントローラー・アクションを作ります。
ありがとうございました!
0342nobodyさん
2015/03/19(木) 14:00:57.78ID:???佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦
佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦
佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦
佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦
佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦 佐藤伸弦
0343nobodyさん
2015/03/20(金) 01:10:50.26ID:ScoidpU5現在
php で mkdir コマンドを実行してもディレクトリがなぜか
作成出来ません。
mkdirの戻り値が false になってしまいます。
何が原因なのでしょうか?
0344nobodyさん
2015/03/20(金) 14:15:11.15ID:???元のソースを追っかける癖をつけとくと捗るぞ
マニュアルでピンと来なくてもソース見れば、なーんだってことは良くある
0345339
2015/03/20(金) 16:27:02.68ID:fjnzAr64Class名をキャメルケース、関数をキャメルバックで書くのは分かるのですが、
変数もキャメルバックで書くのは抵抗があって、
スネークケース($foo_bar)にしています。
0346nobodyさん
2015/03/20(金) 23:35:07.93ID:???権限
>>345
2系まではわりと適当だけど3系になってからPSR準拠になってるし少しずつ従っていった方がいいよ
俺はmysqlとかjsとの連携を考えるてずっと変数はスネークケースでやってきたけどそろそろ潮時かもしれん
phpcsでたくさん例外作るのも面倒だしね
でもインデントがスペース四つなのは未だに納得できない
0347345
2015/03/21(土) 01:58:13.22ID:???1つのサイト作るのに色んな命名規則使うから悩みますよね。
CSSやJavascriptでもそれぞれ必要とされる規則は違うし。
ただ、変数にキャメルバックはどうも違和感があるんですよね・・・
キャメルバックにする分、文字数が減って見やすくなるとは思うんですが。
あと、インデントはスペース4つではなく2つにしてます。さすがに4つは長いかと。
という事を考えると、色々とCakeの規則から逸れてしまいますね・・。
0348nobodyさん
2015/03/21(土) 14:40:09.68ID:???経験が足りないってことなんだよw
0349nobodyさん
2015/03/21(土) 14:58:23.21ID:???PSR通りにコーディングするのは今日からプログラム始めた素人にもできる
みんなが疑問持ちながら好き勝手に書くと良くないから
グループ開発の指針としてコーディング規約があるにすぎない
0350nobodyさん
2015/03/21(土) 15:14:19.63ID:???大勢が使う何かの規約を責任持って作ったことがあれば
それからわざわざ逸そうなんて思わないってこと
0351nobodyさん
2015/03/21(土) 16:42:25.47ID:???0352nobodyさん
2015/03/21(土) 20:42:49.66ID:???グループ開発ならコーディング規約は大切だけどcake使ってるからcakeの規約を必ず採用しなければいけないわけじゃないと思うけどな
もちろんコアは必ず規約に従うべきだけどapp以下は規約推奨という程度だよ
>>351
タブインデント支持なんだろ
0353nobodyさん
2015/03/22(日) 00:28:55.54ID:???Cakephp-codesnifferのバージョンでインデントの検知(警告)がなぜ、違うのでしょうか?
Ver2.0.2だと タブで警告...スペース使え
Ver0.1.3だと スペースで警告...タブ使え と真逆になります。
ちなみに
Ver2.0.2は composerで設置 https://github.com/cakephp/cakephp-codesniffer
Ver0.1.3は pearで設置し、
netbeansのPHPCSMDの設定を
Ver2.0.2 を使うときは C:\php\vendor\bin\phpcs.bat
Ver0.1.3 を使うときは C:\php\phpcs.bat を指定すると切り替えて使えます。
※WindowsのPathは、両方通します
CakePHPは「タブインデントが正解」で良いのですよね?
0354nobodyさん
2015/03/22(日) 01:51:28.83ID:???cakephpcsは最新版だとcakephp3の規約準拠なので2系使ってる人はこっちの古いバージョン使ってね
ってREADMEに書いてあった
cakephpは2系はタブインデントで3はスペースインデントに変わってる
0355353
2015/03/22(日) 05:08:44.10ID:???感謝です。3で逆になるんですね。
言われる通り、3.0の規約の英語版には
「Four spaces will be used for indentation.」 となって、「4スペースを使え」ってなってました。
http://book.cakephp.org/3.0/en/contributing/cakephp-coding-conventions.html
ちなみに2.0は「One tab will be used for indentation.」
http://book.cakephp.org/2.0/en/contributing/cakephp-coding-conventions.html
3.0の日本語版が間違ってます。これって大混乱を招きます
「インデントには単一のタブが用いられます。」
http://book.cakephp.org/3.0/ja/contributing/cakephp-coding-conventions.html
「過去の継承」って意味や、本家本元の大間違い有りって、CakePHPって大丈夫なのでしょうか。
何を信じて良いんだろ〜
0356nobodyさん
2015/03/22(日) 14:35:05.61ID:???正式リリースもまだだしそんなもん
0357nobodyさん
2015/03/22(日) 16:16:39.32ID:???Found an issue? Submit a correction on GitHub
0358nobodyさん
2015/03/24(火) 21:25:37.75ID:???0360nobodyさん
2015/03/24(火) 22:51:32.29ID:???今回は1から2のインパクトより大きい
0361nobodyさん
2015/03/25(水) 10:40:02.23ID:???新規案件とはいえ、なかなか変えられないわな
0362nobodyさん
2015/03/25(水) 22:03:40.40ID:nkhbQP1fこういう関係のテーブル構成でfindをrecursive=>2でfirst取得すると、
array(
[Bbs] => array()
[User] =>Array(
[Profile] => Array()
))
こんな感じの配列になるのですが、Userの中に入れない方法って無いでしょうか?
つまり、$data['User']['Profile']['name']ではなく、
$data['Profile']['name']だけで参照させたいです。
0363nobodyさん
2015/03/25(水) 23:13:38.47ID:???全部アソシエーションで出来たらと思ったのですが無理なので、
joinsを使って対応します。
0364nobodyさん
2015/03/26(木) 21:56:46.58ID:???それともsave時点でエスケープします?
0365nobodyさん
2015/03/26(木) 23:26:01.65ID:???0366nobodyさん
2015/03/27(金) 00:53:05.30ID:???何に使うことになるかわからんからな
0367nobodyさん
2015/03/27(金) 12:05:56.79ID:???入力時点でエスケープやサニタイズしなくても
Cake使ってる上ではセキュリティ的には問題ないんだよね?
0368nobodyさん
2015/03/27(金) 20:44:33.33ID:???Laravelが流行だどうこう言ってますけど
結局、cakeとcodeigniter学んでおけばいいっしょ
0369nobodyさん
2015/03/27(金) 22:21:52.83ID:/GK6nVHiPHPを実行し、日本時刻を表示しようと以下のコードを書きました。
【PHP】
//ローカル時刻にGMTとの時差を引く
$time = time() - date("Z");
echo date("Y/m/d H:i:s (D)", $time);
//ついでに日本時間を表示
$time = $time + 9*3600;
echo "<BR>";
echo date("Y/m/d H:i:s (D)", $time);
【実行結果】
2015/03/27 05:22:14 (Fri)
2015/03/27 14:22:14 (Fri)
実行した結果、時刻が日本時間とかなりずれているのですがどこが間違っていますか?
0370nobodyさん
2015/03/27(金) 22:27:30.43ID:???0371nobodyさん
2015/03/27(金) 22:39:55.31ID:???教えてください。。。
0372nobodyさん
2015/03/28(土) 11:31:26.66ID:???そのサーバーの現在時刻を表示させる
時刻計算してGMTを表示させる
時刻計算してJSTを表示させる
この手順でうまくいかなければ諦めろ
はい、この話は終わり
0374nobodyさん
2015/03/28(土) 15:56:09.33ID:???init.js というスクリプトがデバッグされていますが
なぜこんな自分で読込もしていない様なスクリプトが読み込まれているのでしょうか?
※javascriptのスレッドが見つからなかったので人が一番多そうなここで
質問させてもらっています。
0375nobodyさん
2015/03/28(土) 17:42:04.24ID:???はい、この話は終わり
0376nobodyさん
2015/03/29(日) 01:04:03.61ID:???みたいな煽りをするための材料作りに来たような感じ
0377nobodyさん
2015/03/29(日) 16:04:33.31ID:???0378nobodyさん
2015/03/29(日) 19:57:31.43ID:???0379nobodyさん
2015/03/29(日) 20:26:31.18ID:???0380nobodyさん
2015/03/30(月) 23:11:34.93ID:???どうすればPHPが使える様になりますか?
マニュアルが古すぎて設定が出来ないです。
http://www.serverqueen.jp/cs/startup/zoomimg/shared_php01.html
0381nobodyさん
2015/03/30(月) 23:42:44.98ID:???なんで最近こういうのが増えたんだ?
0382nobodyさん
2015/03/31(火) 02:02:19.81ID:???いまのとこ誰も賛同してくれてないけどな
でもあると思うんだよなぁ
0385nobodyさん
2015/03/31(火) 11:14:53.43ID:???1:初心者がタダでプログラミングを学ぼうとする
2:ドッドインストールというサイトを見つけて勉強する
3:しかし、基本的なことをちょっと紹介してるだけなので、何が必要か分からない。
4:知恵袋や教えてgooで質問するのは手間がかかる
5:「そうだ!2ちゃんねるなら会員登録が必要ないし、大勢居るから教えてくれるだろう!」
6:適当に板名を見てWebProg板を探すも、どのスレに質問していいかわからない
7:「ま、スレタイにPHPってついてるし、上の方にあるからこのスレでいいやろ」
って感じだと予想
0387nobodyさん
2015/03/31(火) 15:33:31.65ID:???動画学習系のあるけど、やってみてわかったけど動画学習は効率悪い
気分的にやった感はすごいあるけど
0388nobodyさん
2015/03/31(火) 15:53:01.22ID:???そこが作ったDVDを再生しながら同じように入力する程度で、全く身に付かなかった。
あれなら3000円ぐらいの初心者本買って、その通り作る方がマシだわ
0389nobodyさん
2015/04/01(水) 00:49:18.74ID:???知識豊富すぎだろ
0391nobodyさん
2015/04/01(水) 10:37:36.77ID:???毎回、動作テストの度にフォーム入力していくので面倒です。
こういう時ってCakeのテスト機能を使うのでしょうか?
いまいち、テストの使い方がよくわからないので教えて下さい。
0392nobodyさん
2015/04/01(水) 17:00:09.59ID:PiSv1kDp馬鹿まるだし
0393nobodyさん
2015/04/01(水) 21:48:03.44ID:PiSv1kDpaiueo<br><br>
,
&
0395nobodyさん
2015/04/01(水) 23:37:29.02ID:???ちゃんとやりたいのですが、どうやってテストを作ればいいか分かりません。
せめてググり方だけでも教えて下さい
0396nobodyさん
2015/04/01(水) 23:56:21.88ID:PiSv1kDpとりあえず舌をおもいっきりかめばいいと思うよ
0401nobodyさん
2015/04/03(金) 18:37:35.13ID:???かと言ってコントローラーで設定するのも悩む。
0403nobodyさん
2015/04/03(金) 23:32:55.11ID:???海外サーバを希望です。
0404nobodyさん
2015/04/03(金) 23:37:54.15ID:???どういうこと?例えば
ホーム > ネット関係 > WebProg
だとして、この流れをコントローラーから配列を作成してsetし、
ビューでヘルパーから読み込むとか?(俺はそうしてた
でも、ページ毎のタイトルをDBで管理しない限りは、
コントローラーに直接書かなきゃいけないからなぁ
DB管理していないページもあるし。
0405nobodyさん
2015/04/03(金) 23:53:39.12ID:???そんな感じ
二階層までならコントローラー名とアクション名に準じたタイトルでパンくず作ってあげてもいいかも
それ以上の階層はdbなりconfigure使うしかないんじゃないかなー
>>403
AWSっていう海外サーバーならお金払えば払っただけ無制限にディスク使わしてくれるらしいよ
0406nobodyさん
2015/04/04(土) 00:40:37.59ID:???404だけど、やっぱりそうか。ページ名をどこで管理するかが問題なんだよなぁ。
DB使うと、簡単なページを追加した時でも、DBに追加する必要もあるし。
0407nobodyさん
2015/04/04(土) 15:50:08.18ID:???インストールするのにComposerとかみんな使ってんの?
色々知らないことが増えてる…
0408nobodyさん
2015/04/05(日) 01:16:56.44ID:???やっぱりリスキーだよね?
0409nobodyさん
2015/04/05(日) 02:17:41.58ID:???0410nobodyさん
2015/04/05(日) 04:14:01.43ID:???おれならお断りする案件だな
0411nobodyさん
2015/04/05(日) 15:06:11.90ID:???いや、結構ガチガチの会員サイト
安定しているシステムなのにこれをcake3に置き換えてボコボコになりそうで怖いです。
VB6.0→VB.net へのリプレースみたく大変な事になりそう。
0412nobodyさん
2015/04/05(日) 17:50:15.66ID:???0413nobodyさん
2015/04/06(月) 12:01:41.30ID:???プライマリーキー以外で結合する必要があるから
アソシエーションじゃなくてjoinsに書いてるけど、その点だけが困る。
■ このスレッドは過去ログ倉庫に格納されています