【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/
0101nobodyさん
2014/11/15(土) 22:46:51.55ID:???【複数形の英単語】Controller.php
という名前にするのがルールなのでしょうか?
必ず複数形にする必要があるのでしょうか?
0102nobodyさん
2014/11/16(日) 02:51:08.67ID:???ルールではない、規約だ
規約にのっとっていれば色々とフレームワークが自動でやってくれる部分が多いが、
規約から外れたとしてもなんとかする方法は(面倒臭い方法だが)用意されている
そういう面倒臭さが嫌なら大人しく規約に従っておくのが吉
0103nobodyさん
2014/11/16(日) 11:29:55.49ID:88uIuRDd了解です。
thank you
0104nobodyさん
2014/11/16(日) 11:31:49.43ID:QtKRF6/y(開発の出来る人を想定)閲覧者にばれない様に作り込む事は可能ですか?
幾らやってもばれるものでしょか?
セキュリティ的に開発に使用しているFWは隠蔽した方が良い気がしております。
0106nobodyさん
2014/11/16(日) 13:04:20.46ID:rzwbZ1qv一から開発するの凄く手間じゃないか
0108nobodyさん
2014/11/16(日) 15:00:53.86ID:???そしてなにを満たせばセキュリティ的に合格なFWなのだろう?
セキュリティがーとかいう人間に限って知識が薄っぺらい。
0109nobodyさん
2014/11/16(日) 15:33:17.44ID:I3T4ePm6アセットディレクトリを /wp-contents/themes/*** にして、/wp-admin/ の振る舞いを偽装して
WordPress っぽくつくる。
これであまり熱心ではない開発者はWPだと思うだろ。
あとは Router というか $routes の設定をいじって、URLのパターンから推測できないようにする。
エラーメッセージの文言をすべて変更する。
まぁでも、既知の領域では隠蔽できるだろうけど、いつ何時新しい状態が現れるか分からないから完全に隠すのは難しいと思われる。
0110nobodyさん
2014/11/16(日) 19:46:24.87ID:???零細企業のサイトで、たった数件の検索に毎回15秒かかってるとこがあって理解できん
作った人間が下手なだけならいいが、Cakeの問題なら仕事で使いたくない
MVCやルーティングだけFW、DBやSQLカスタマイズでセキュリティ自力対応じゃダメかね
Cake案件が多いので、企業が使いたがってるのかは知らんが、気になってしょうがない
0111nobodyさん
2014/11/16(日) 21:26:26.08ID:???開発者もサーバの性能も糞すぎるとかじゃねえの
0112nobodyさん
2014/11/16(日) 22:24:01.26ID:???だったら15秒くらいかかる。
0113nobodyさん
2014/11/16(日) 22:36:50.85ID:???非表示状態のレコード含めても1000行はこえないでしょ
過去テーブルに移してなきゃ、ID番号が4万台だから最大4万行のはず
0114nobodyさん
2014/11/16(日) 22:40:15.89ID:???0116nobodyさん
2014/11/17(月) 20:32:45.39ID:???何使っても一緒だわな…
0117nobodyさん
2014/11/17(月) 23:14:10.85ID:84kAq3ioありがとうございます。
0118nobodyさん
2014/11/18(火) 07:26:12.45ID:BXcgCvPC<td style="width:100px"></td>
という風に列幅を指定しているにも関わらずサイズが適用されません。
なぜでしょうか?また、どうすればcakePHPを使用していても
指定したサイズに列幅調整を行う事が出来ますか?
0119nobodyさん
2014/11/18(火) 16:42:48.64ID:???0120nobodyさん
2014/11/18(火) 18:42:27.17ID:???それはcakeじゃなくてDBの問題。MySQLなら
ALTER TABLE テーブル名 AUTO_INCREMENT=1001
とか実行すればいいよ
まあphpmyadminとか使ってGUIでやったほうが楽だけどね
>>118
まちがいなくcakeは無関係
出力された後のことはHTMLとブラウザの解釈の問題
とりあえずは簡単なサンプルでタグの不整合だのCSSだのをチェックし直すといい
0121nobodyさん
2014/11/18(火) 19:07:45.09ID:???0122nobodyさん
2014/11/18(火) 20:13:46.51ID:???インデックス貼ってないんじゃないの?
mysqlってインデックス貼らないと遅くなるの俺は最近知ったね。
0123nobodyさん
2014/11/18(火) 23:18:16.68ID:72ycgRPS次の呼び出しをしているのですがなぜか
Google Analytics に認識されません。
サイトにアクセスした直後にリアルタイムを見ていますが
アクセスが一向にカウントされないのですがなぜでしょうか?
<?=$this->element("google_analytics")?>
</head>
0124nobodyさん
2014/11/18(火) 23:24:02.50ID:8pS7TyyMだけど分かりました。単なるタイムラグでした。
0125nobodyさん
2014/11/18(火) 23:27:49.19ID:???0126nobodyさん
2014/11/18(火) 23:34:44.64ID:???その遅さじゃindexどころか、innodbで↓やってるとしか思えないな
「総件数(○○件)」 SELECT count(*) FROM テーブル
「検索項目A(○件)」 SELECT count(*) FROM テーブル WHERE カラム = 'A'
「検索項目B(○件)」 SELECT count(*) FROM テーブル WHERE カラム = 'B'
「検索項目C(○件)」 SELECT count(*) FROM テーブル WHERE カラム = 'C'
0127nobodyさん
2014/11/20(木) 18:21:53.44ID:CTsz5JQbシステムを組んでいます。
hogeuser/apps/test_app
→アプリ本体
hogeuser/cake
→cakePHPのモジュール群
hogeuser/www/test_app
→最初にアクセスされる基本ファイル等(index.php)
hogeuser/www/image/****
→ここにAuth認証でログインしたユーザのみが画像等をアップロード出来る様な
システムを組みたいのですが、cakePHPで実現可能でしょうか?
様にしたいのですが
0128nobodyさん
2014/11/21(金) 01:55:20.21ID:???アセットのパスは CakePHP に依存せず自由だよ。
ほかの原因で権限が無いとかはあるかもしれないけど、Cake側では制限はない。
0129nobodyさん
2014/11/27(木) 14:38:07.68ID:???テーマを作るってやり方を見たのですが、
他に良い方法があれば教えてください。
0130nobodyさん
2014/11/27(木) 22:10:45.74ID:???あるいは何がしたいのか書かないとレスしようがないんじゃないかな
0131nobodyさん
2014/11/28(金) 06:59:13.03ID:???Model(ロジック)の方は、特別にスマホ対応をする場合もあるかもしれんが。
0132129
2014/12/01(月) 13:39:14.91ID:???「テーマが使えない」ではなく、他に方法があれば教えてくださいという質問です。
>>131
レスポンシブデザインならCSSだけで良いのですが、
スマホ専用サイトの場合、ビューが変わるし、必要なモデルも変わります。
PC版と同じコントローラーを使って同じだけモデルを呼び出すのは
無駄な要素が大きいと思い、テーマの変更だけで良いのかな?と思いまして。
0133nobodyさん
2014/12/01(月) 23:10:19.10ID:???俺はテーマ以外考えられんな。
レスポンシブでPC、スマホの両方対応というのも無駄な処理がコントローラーに増え、重くなるし。
テーマ一択で。
0134nobodyさん
2014/12/02(火) 00:51:09.72ID:???アクション共通ならビューにサブディレクトリ作るだけでもいい気が
0135nobodyさん
2014/12/02(火) 01:45:31.11ID:???横レスだけどレスポンシブデザインにしたらサーバーサイドの処理は基本的には変わらないんじゃないの?
俺の勘違いかな。
0136nobodyさん
2014/12/02(火) 02:25:29.44ID:???おっしゃる通り。確かに変わりませんね。
僕のミスです。失礼しました。
レスポンシブデザインって、ちゃんとしたサイトだとPCとスマホは分けるべきだと思うんだけどな。
0137nobodyさん
2014/12/02(火) 06:43:53.62ID:???Modelが変わるなら、Viewも応じて変えた方がいいに決まってる。
0138nobodyさん
2014/12/04(木) 15:36:33.40ID:R0j+bkTkCakeで出力されるHTMLのCSS部分はローワーキャメルケースですが、
HTMLヘルパーを使用しない箇所はどうしていますか?
同じようにローワーキャメルケースで書いてますか?
それとも独自の書き方を採用していますか?
0141nobodyさん
2014/12/10(水) 12:16:09.19ID:D9PtQRCXサーバからコマンドでシェルを実行させる場合について質問です。
シェルを実行させるパスを
/usr/local/bin/php /home/hoge/public_html/app-admin/Console/cake.php Hello
みたいにすると、「Shell class Hello Shell could not be found」というエラーになります。
上記パスのapp-adminをappにすればエラーが出ないのですが、
appの名前を変えても実行するにはどうすれば良いのでしょうか?
0143nobodyさん
2014/12/10(水) 14:37:49.96ID:???app の名前を指定するパラメータは確か -app じゃなかったかな。
-app app-admin
みたいなのをくっつければいいかもしれない。
そもそも、そんな呼び出し方する理由が分からんがな。
普通は app-admin のディレクトリに移動して Console/cake を呼び出すんだぜ。
0144nobodyさん
2014/12/10(水) 15:23:03.23ID:???0145名無しさん@そうだ選挙に行こう
2014/12/14(日) 19:10:29.85ID:R4VgTAzM毎回結合が走っている様です。
この条件の時には結合を走らせるけれども
この場合には、結合せずにfindする
といった事をコントローラー側で制御する事は可能でしょうか?
毎回、結合してクエリ結果を返していると、テーブルのレコード件数が大きくなってきた場合に
パフォーマンスに影響が出る事が予想れます。
0146nobodyさん
2014/12/14(日) 21:01:50.73ID:???bindModel()やunbindModel()で動的に変更するか
検索時にjoinsを使えばいい
詳しい使い方は↓に載っている
http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html
このスレの質問のほとんどはこのドキュメントで解決できるので
開発者なら他のページも一通り読んでおくことを薦める
0147nobodyさん
2014/12/14(日) 21:34:57.75ID:R4VgTAzMthanks
見てみます!
0148nobodyさん
2014/12/15(月) 10:55:13.83ID:???対して変わらないような気がする。
どっちもとんでもないクエリ吐き出すんだけどね。
joins 使えばそこそこまとも。
CakePHP3 ではかなり改善される模様。
0149nobodyさん
2014/12/15(月) 11:30:36.76ID:???0150nobodyさん
2014/12/15(月) 19:02:35.15ID:Hxt+g1uLさせた方が楽な気がするのだが俺だけ?
0151nobodyさん
2014/12/15(月) 20:40:41.52ID:???0152nobodyさん
2014/12/15(月) 21:02:08.37ID:???0153nobodyさん
2014/12/15(月) 22:12:11.75ID:UqCW5FKLアソシエーションは好かん
0154nobodyさん
2014/12/16(火) 03:08:27.79ID:???SQLをPDOとかで直に書いた方がいいの?
それともZendとかで最小限のライブラリ読み込んだ方がいいの?
何で日本人はCake使いたがるの?
英文サイト解読してlaravelとか使えないの?
0156nobodyさん
2014/12/16(火) 10:38:29.65ID:MEG1C3Vrしらなんだ!!
0157nobodyさん
2014/12/16(火) 17:04:45.60ID:???0159質問�@
2014/12/18(木) 00:17:48.32ID:ZHBfn1LO原因不明のエラーが出ます。
以下のコードを実行したところ投入データに一意成約違反などない筈なのに
エラーが出てしまいます。
気になるのは、エラーメッセージに「'30-1-2014-12-17'」こんな文字列がどうやらSQLで
発行されている様です。
全く原因が分かりません。お助けくださいm(_)m
$insert_data = array(
'tableTests' => array (
'user_id' => $user_id,
'sequence_number' => $sequence_number,
'confirm_date' => $executed_date,
)
);
debugprint($insert_data);
0160質問�A
2014/12/18(木) 00:19:48.09ID:ZHBfn1LOarray(1) {
["tableTests"]=>
array(4) {
["user_id"]=>
string(2) "30"
["sequence_number"]=>
string(1) "1"
["confirm_date"]=>
string(10) "2014-12-17"
}
}
$this->tableTests->create();
$this->tableTests->save($insert_data);
なぜかエラーメッセージが出てしまいます。
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '30-1-2014-12-17' for key 'PRIMARY'
#0 /home/maxnko/cake/lib/Cake/Model/Datasource/DboSource.php(460): PDOStatement->execute(Array)
#1 /home/maxnko/cake/lib/Cake/Model/Datasource/DboSource.php(426): DboSource->_execute('UPDATE `uxnko...', Array)
0161質問�@�A
2014/12/18(木) 00:39:30.54ID:ZHBfn1LO0162nobodyさん
2014/12/18(木) 10:51:48.08ID:???0163nobodyさん
2014/12/18(木) 16:27:33.17ID:IJydX9LXアソシエーションのプライマリキーが邪魔してました。
アソシエーション使わない方が小回りが利いて良いですね。
0164nobodyさん
2014/12/19(金) 19:52:59.80ID:BHq08Q5j毎度、ブラウザのみならずJSデバッガーを開いてJSを毎度開いてデバッグする必要があり手間なので
全てpostを行い、サーバ側でバリデーションその他を行う様にしました。
開発の生産性はAjaxと比べてどちらが早いですかね?
0166nobodyさん
2014/12/19(金) 23:20:57.71ID:???サーバ側でバリデーションは必須じゃないのか……
0167nobodyさん
2014/12/21(日) 15:17:01.54ID:kDlJPF64そもそもだけど、Ajaxで is_post"ajax")って感じで
バリデーションをするとcrome上でデバッガーを開いてやらないといけないでしょ?
それが面倒なんです。
普通にPOSTで全てリクエストを行っていれば
簡単にデバッグ出来るけど、Ajaxにするとサーバからの戻り値をJavaScript側でもデバッグを
する必要があるでしょ?
それが本当に面倒に感じるんです。
0168nobodyさん
2014/12/22(月) 22:18:50.23ID:???クライアント側でのバリデーションはオマケ
クライアント側でバリデーションをやろうがやるまいが、サーバ側でのバリデーションは必須
0169nobodyさん
2014/12/23(火) 21:07:58.32ID:???バグの原因にならんの?不安で仕方ない。
アップデートしたくないのをjsonで削除するとファイルまで削除されるし。
0170nobodyさん
2014/12/23(火) 21:31:44.30ID:???0171nobodyさん
2014/12/24(水) 01:58:44.52ID:???例えばcake2.4使ってて、中身を少し変えるとするじゃん。
で、2.4を指定してcomposerしたらどうなる?
1 同じ2.4なので何も起きない
2 同じ2.4だけどファイルが少し違うので新しい2.4を、上書きする
どっちなんでしょうか?
0172nobodyさん
2014/12/24(水) 08:56:59.50ID:???composer.jsonにcakephp/cakephpを2.4.*と指定したということでいいかな?
https://packagist.org/packages/cakephp/cakephp
基本的にリポジトリに登録されているバージョン情報を利用するわけなので
開発中のバージョンを指定しなければ問題無いだろう
●composer install
- composer.lockファイルがある → composer.lockファイルに記録されたものと同じバージョン
- composer.lockファイルがない → Packagistに登録されている2.4系の最新バージョン
●composer update
Packagistに登録されている2.4系の最新バージョン
自分で開発していてアップデートしたくないパッケージがあれば
composer.jsonに2.4.8などとバージョンを決め打ちで指定してupdateすれば影響はほぼない
ソースを配布するならcomposer.lockを残しておいてupdateは自己責任でやれよってことで良くないか?
0174nobodyさん
2014/12/26(金) 14:52:05.09ID:y17exSu4<?php echo
$this->Form->input(
'Fuga.fuga_id',
array(
'label' => false,
'legend' => false,
'div' => false,
'type' => 'radio',
'options' => $hogeArray,
'default' => $hogeDefault));
?>
optionsに指定している「$hogeArray」はコントローラ側からセットしている配列。
defaultに指定している「$hogeDefault」はデフォルト選択値。
やりたいことは「$hogeArrayがn個毎に改行を入れて表示」なのですが、上手くいきません。
separatorに例えば「<br />」などを指定すれば項目1つずつ改行されるのですが、
個数指定をしてseparatorを入れるようなことはできたりしないでしょうか?
0175nobodyさん
2014/12/26(金) 22:05:31.40ID:???IE8? 知らないブラウザですね
0176nobodyさん
2014/12/26(金) 22:20:14.73ID:???そういうのは出来ないと思う。
javascript で挿入するか >>175 の言うように CSS でやるか、
レンダリング結果をパースして変換。
今なら :n-th セレクタ使えるから CSS が一番手っ取り早いだろうね。
0177nobodyさん
2014/12/27(土) 09:59:18.74ID:???レスありがとうございます。
やっぱりできないんですね。
仰る通り、見た目の問題ですのでCSSで制御しようと思います。
ありがとうございました!
0178nobodyさん
2014/12/30(火) 14:19:54.96ID:9yoyGP6/サーバにポストした場合、サーバサイドでは
入力項目においてdisabled を付けている項目は $this->request->data で取得出来ない
のは仕様なのでしょうか?
0180nobodyさん
2015/01/01(木) 14:03:44.77ID:qSREffE+ありがとうございます。解決しました。
0181nobodyさん
2015/01/02(金) 09:29:55.89ID:jgbndoA2デバッグモードが2もしくは1の時は問題なくログイン・ログアウトできるのですが、
0にするとできなくなります。
http://www.msng.info/archives/2010/12/cakephp-error-only-when-debug-level-is-0.php
にある$this->autoRender = false;
は入れてあるのですが、他に解決策はありますか?
0182nobodyさん
2015/01/06(火) 01:58:05.89ID:???けどIE8は効かないということなんで、
IE8を対象外にするわけにもいかず結局開発では使えなかった・・・
181はもうちょっと具体的にどんな実装をしたのかとか
どんなエラーが発生しているのかとか報告しないと答えようがないんじゃないかな
0183nobodyさん
2015/01/06(火) 20:15:42.85ID:???0184nobodyさん
2015/01/06(火) 21:00:09.97ID:???IE8はまだ15〜20%ぐらいあるから、簡単には切れないよね
0185nobodyさん
2015/01/06(火) 21:26:44.31ID:???0186nobodyさん
2015/01/07(水) 14:32:26.18ID:???0187nobodyさん
2015/01/07(水) 20:54:00.88ID:???開発側にブラウザを選ぶ権利はなくて顧客側の要望次第だろう
今まで対応していたブラウザを切りたければうまく交渉するしかないね
IE8は全然許せるけどIE6はブラウザ界のガン細胞だと思う
0188nobodyさん
2015/01/09(金) 12:45:51.25ID:NOQO6qeZ保存した物をforeachで取り出したいけどエラー地獄だわ・・・
0189nobodyさん
2015/01/11(日) 14:25:23.64ID:???0190nobodyさん
2015/01/14(水) 16:05:28.03ID:FY0jfzBqhttp://www.hagehage.com/tururi/index.html
のような形にしたいのですが。
0191nobodyさん
2015/01/15(木) 00:37:14.38ID:HkjxQN1G多分この辺の情報が役に立つと思われ
http://stackoverflow.com/questions/3410611/how-can-i-append-html-to-all-my-urls-in-cakephp
昔調べたときは、あぁ簡単にできるんだな、ぐらいに思って一度も使ったことがないからよくわからないや。
0192nobodyさん
2015/01/15(木) 00:39:51.88ID:???http://book.cakephp.org/2.0/en/development/routing.html#file-extensions
0193nobodyさん
2015/01/15(木) 08:59:40.27ID:gSrUDeROありがとうございます!
見てみます!
0194nobodyさん
2015/01/15(木) 16:42:24.08ID:+TbruyRA0196nobodyさん
2015/01/16(金) 00:22:26.90ID:???意味不明
0197nobodyさん
2015/01/16(金) 01:25:11.15ID:K/pOgg26どうやってやるんですか?
Ajaxだと余裕ですがcakePHPでPOSTした場合にどうしても取得出来ません。
>>196
Viewのレンダリング時にhiddenに設定した内容を登録ボタンを
押した際にサーバ再度でhidde項目の値を取得したいのです。
0199nobodyさん
2015/01/16(金) 12:44:01.48ID:GWt4KHXH≪View≫
<input type="hidden" name="name_hidden" value="komaneti">
≪Controller≫
$this->request->data["name_hidden"];
⇒issetで値があるかを判定するとfalse(つまり存在しない)となります。
はたして(PHP単独ではなく)本当にcakePHPでhidden項目の
値の取得をサーバ側(Controller)でする事は出来るのでしょうか?
0200nobodyさん
2015/01/16(金) 13:29:28.04ID:???正しくはこう
<input type="hidden" name="data[name_hidden]" />
普通はフォームヘルパーで書くもんだよ
<?php echo $this->Form->hidden('name_hidden'); ?>
どうしてもnameを変えたくないなら$_POSTか$_REQUESTでどうぞ
あまりにも基本レベルで理解できてないようなんで、
まずはブログチュートリアルを実際にやってみたほうがいいよ
ブログチュートリアルって何?って人はそもそもマニュアル読んでない証拠なんで問題外
0201nobodyさん
2015/01/16(金) 14:51:16.48ID:???name="data[model_name][field_name]"
じゃないの?
どっちにしてもチュートリアルやってないような奴に何言っても時間の無駄だが
■ このスレッドは過去ログ倉庫に格納されています