【PHP】フレームワーク CakePHP 15ホール目【v2.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/12/04(火) 13:06:36.87ID:ExCLhBiPCakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※他フレームワークとの比較等はスレ違いです
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.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
前スレ
【PHP】フレームワーク CakePHP 14ホール目【v2.1】
http://kohada.2ch.net/test/read.cgi/php/1335859124/
0154nobodyさん
2013/01/22(火) 08:01:00.25ID:???そもそもオブジェクトである必然性は全くないし。
0155nobodyさん
2013/01/22(火) 11:06:56.11ID:???わざわざ配列の方を採用しているところに「なんでオブジェクトにしないの?」
ってお前の主張を押し付けるのはおかしいだろ
0156nobodyさん
2013/01/22(火) 11:45:09.75ID:???議論があるってことは両方にメリット・デメリットがあるってことだろ。
配列を採用するフレームワークもあるし、オブジェクトを採用するフレームワークもある。
コストが低いだけで、配列がベストって状況じゃないから、
理解を深めるために、過去にあった議論を見たいと思って何かおかしいのか?
0157nobodyさん
2013/01/22(火) 13:18:25.40ID:???0158nobodyさん
2013/01/22(火) 13:22:15.41ID:???0159nobodyさん
2013/01/22(火) 13:22:42.68ID:nr2JMr7ehttp://gp48.net
0161nobodyさん
2013/01/22(火) 14:04:59.92ID:???事と何が問題なんだ?
オブジェクト指向だからって絶対その通りしなきゃいけない決まりなんて無いだろ。
お前は頭が硬すぎるんだよ
0162nobodyさん
2013/01/22(火) 14:53:37.91ID:???findの戻り値がオブジェクトだったら、そのオブジェクトは具体的にどんなメソッドを持っていて
配列よりどう便利なの?
0163nobodyさん
2013/01/22(火) 16:45:51.69ID:???戻り値はオブジェクトの場合とオブジェクトの配列の場合があるだろ。
オブジェクトの利点だが、人に聞かなきゃ分からんの?
Fat ModelとかDRYの原則とか理解してれば分かるはずなんだがねぇ。
0165nobodyさん
2013/01/22(火) 16:57:32.71ID:???なるほどねえ
いまだとafterFindでやらざるを得ないような処理をEntityオブジェクトでやらせたり出来るって感じかな
多分便利なんだろうな
0166nobodyさん
2013/01/22(火) 20:52:44.17ID:???ほれ
http://www.1x1.jp/blog/2006/09/cakephp_array_based_ar.html
ただ、もっと詳しいエントリがあったはずなんだが見つけられなかった
確か開発者のブログだったんだけど、何年も前のことで忘れてしまったわ
0167nobodyさん
2013/01/22(火) 21:37:05.39ID:???そもそもPHPって時点でとてつもないデメリットがあるのに
0168nobodyさん
2013/01/22(火) 22:04:06.66ID:???0169nobodyさん
2013/01/23(水) 10:42:04.53ID:???http://book.cakephp.org/2.0/_downloads/en/CakePHPCookbook.pdf
の 8ページ目、
public function view($id=null) {
と書くべきところを、
public function view($id) {
と書いてしまいましたが、動作するように思われます。
「=null」にはどのような意味があるのでしょうか?
0170nobodyさん
2013/01/23(水) 11:07:55.88ID:???0171nobodyさん
2013/01/23(水) 13:24:10.39ID:???0172nobodyさん
2013/01/23(水) 13:41:16.62ID:???知らなければ分かりにくいし、検索しにくい文法じゃないか。
http://php.net/manual/ja/functions.arguments.php#functions.arguments.default
0173nobodyさん
2013/01/23(水) 14:11:39.31ID:???それはセンスが無いかと
関数の引数の所に=が付いてるのは何でかな?と思ったら「関数」について調べる
それだけのことだよ
0174nobodyさん
2013/01/23(水) 14:14:57.82ID:???呆れるほど基本的なことがわかってない時点で読む必要ありありなんですが
0175nobodyさん
2013/01/23(水) 17:28:27.81ID:???センスといえばそうだけど、思い当たらなかった人に、
ドキュメントのURLを貼ってやってもいいと思うんだ。
まぁphpのドキュメントはかなり充実してるから、大抵の事はあたりをつけて読めば書いてあるし、
読めばいいとは思うけど、それも知っていてこそ、だと思うんだよね。
0176nobodyさん
2013/01/23(水) 17:46:32.01ID:???せっかくゆとり教育終わったのにゆとりの再生産したいのかw
0177nobodyさん
2013/01/23(水) 18:05:08.20ID:???Cakeとかフレームワーク使ったりする?
例えば、テーブル1つのメールフォームとかアクセスカウンターとか。
ちょっとしたPHP+MySQLを使うとき、みんなどうしているのかな?と思って。
0178nobodyさん
2013/01/23(水) 18:49:28.47ID:???さすがにそれでは使わねえなw
0179nobodyさん
2013/01/23(水) 19:40:37.06ID:???というかアクセスカウンターを作る状況がもう想像つかないけど。
テーブルあるならメールフォームには使うかな。
バリデーター使いたいし、入力内容をDBに入れるなら、
見たりする管理画面的なものも入ってきそうだし。
長く稼動すれば、検索したいだの、対応状況を付けたいだの、
要望が出てきそうだし、最初は極小規模でも、
なんだかんだ増えるんじゃないかと思った。
0180nobodyさん
2013/01/23(水) 20:06:13.82ID:???特定ページのアクセス数を管理画面で見たいって要望は割りとあるよ。
極小規模でもCake使うのか。
確かに後々必要になるケースは多々あるけど、
サーバにファイルを転送する時、
「こんなにファイルアップする必要あるかな」って感じるんだよねw
0181nobodyさん
2013/01/23(水) 20:42:29.21ID:???> 特定ページのアクセス数を管理画面で見たいって要望は割りとあるよ。
そなのか。言われたことないなぁ。
アクセス解析でかってにやってるみたいだし。
> サーバにファイルを転送する時、
> 「こんなにファイルアップする必要あるかな」って感じるんだよねw
その感覚はまぁわかるw
0182nobodyさん
2013/01/23(水) 22:04:32.97ID:???よくあるDBに問い合わせを行ってログインを行う処理の実装なのですが、
authコンポーネントを使用せずにAES暗合を使用したログインにしようと思っています。
入力値を
$id = Security::rijndael($id, Configure::read('Security.key'), 'encrypt')
で、バイナリ型に変換した後に以下のように問い合わせを行っています。
$conditions = array(
'conditions' =>
array('id' => $id, 'pass' => $pass);
find('all',$conditions);
この方法でDBに同じ文字列のbinaryデータがあった場合はfindする事ができるのでしょうか?
DB側の型はblob型で、格納されているデータはbinaryです。
散々詰まっていて、ふとfind関数でバイナリって検索できるのだろうかと疑問を感じたので質問します。
0183nobodyさん
2013/01/23(水) 23:17:54.00ID:???とりあえずCakePHPが発行してるSQLを出して、
それが動くものなのかどうかじゃないの?
0185nobodyさん
2013/01/24(木) 12:28:57.76ID:???イベントシステム(CakeEvent)の使い方というか利点ってどんなんですか?
http://book.cakephp.org/2.0/en/core-libraries/events.html
マニュアルの例でいくと、注文処理の後、メールを送るとかを別のコントローラーに
やらせるって感じ?
0186nobodyさん
2013/01/24(木) 13:18:11.29ID:???オレオレサイトならいいけど、そんなもん業務に持ち込まれた日にはブチ切れ間違いない!
0187nobodyさん
2013/01/24(木) 13:25:19.15ID:???一つのメソッドにガッチガチにコーディングした方がいい場合と、
その反対にロジックの順番やら処理の是非なんかを
柔軟な可変状態にした方がいい場合とを分けないと利用価値がわからないだろうな。
用途が完全に限定されていてロジックの更新を考慮しないんならイベントシステムは無意味。
そのドキュメントにも、普通はこんなものいらないって書いてあるよ。
0188nobodyさん
2013/01/24(木) 14:31:07.70ID:???どこに処理させるかってのを切り離せるっていうのが利点だから、
'Mode.Order.afterPlace' で何をどうアタッチるかは
実装に応じてそれぞれ良きに計らってくれってことじゃないか?
処理状態をイベントオブジェクトにカプセル化して
処理を回していくっていうのはとても便利な時がある。
使い方をわきまえれば実装も楽だしメンテも楽になるとても良いツール。
ただ、どんなコーラブルをどこにアタッチさせているのかを把握できないと
最悪になると思われる。
0189nobodyさん
2013/01/24(木) 15:04:16.44ID:???例えばECCUBEみたいな、
ECサイトパッケージを作って配布するようなことをするなら、使えるんじゃない?
決済モジュールとか、CakeEventListenerの実装クラスで作れば入れ替えできるし。
0190nobodyさん
2013/01/27(日) 01:02:37.34ID:0HsM0LlWpublic $uses = array('Foo','Bar');
となっているところに単数形頭文字大文字でテーブル名を追加したら500エラーを吐くんですが
なにが原因かわかりますでしょうか?
同じ環境のxampp(テーブルを追加+コントローラにテーブル名追加)で正しく動いてます
サーバー側にも同じテーブル(sqlでエクスポートしたものをsqlで追加)とコントローラはあります
サーバーはさくらです
ご教示お願いいたします
0192nobodyさん
2013/01/27(日) 01:48:40.75ID:0HsM0LlWありがとうございます
500 Internal Server Error
が出力されるだけで、cakephpのエラーでみるような「何行目になにエラー」のような表記は出ませんでした
0193nobodyさん
2013/01/27(日) 02:18:55.23ID:???0194nobodyさん
2013/01/27(日) 02:36:49.72ID:???0195nobodyさん
2013/01/27(日) 02:40:52.81ID:???0196nobodyさん
2013/01/27(日) 20:24:52.00ID:0HsM0LlWありがとうございます
debugを2にしたら動きました
0197nobodyさん
2013/01/27(日) 20:34:48.06ID:???キャッシュが消えたから動いたんだと思うんだけどねぇ
まさか2のまま運用しないよね
まぁいいか
0198nobodyさん
2013/01/27(日) 20:39:28.54ID:???あれ、そのまま運用してた気がする…まあいいか
0199nobodyさん
2013/01/27(日) 21:26:58.92ID:0HsM0LlW0に戻してあります
お気遣いありがとうございます
debugレベルって警告の有無だけではなくて、デバッグもしてくれるってことなんでしょうか?
0200nobodyさん
2013/01/27(日) 21:37:02.82ID:0HsM0LlWすみませんありがとうございました
0201nobodyさん
2013/01/28(月) 11:19:46.93ID:???0202nobodyさん
2013/01/28(月) 14:06:38.93ID:???$insertData = $this->data['insert'];
foreach($insertData as $key) {
echo var_dump($key);
}
とした場合
array
''id'' => string '1' (length=1)
''name'' => string '名前' (length=6)
''flg'' => string '0' (length=1)
と出ます。
そこで
foreach($insertData as $key) {
echo var_dump($key['name']);
}
とすると、
Undefined index: name
null
で、中身が入ってないと言われるのですが…。
cakeの仕様で特別な処理入れないといけないとかありますか?
0204nobodyさん
2013/01/28(月) 14:11:53.53ID:???0205nobodyさん
2013/01/28(月) 14:30:18.84ID:???本来はここにsave関数入れてupdate文投げたいんですが…。
postで渡ってきた値が取れないので今は外してあります。
0206nobodyさん
2013/01/28(月) 14:36:24.17ID:???cake以前の問題
0207nobodyさん
2013/01/28(月) 14:45:17.93ID:???var_dump()は、それだけで出力する関数だよ。
連想配列をforeach($namedArray as $value)とした場合、$valueには値しか入らない。キーは無視される。
http://jp.php.net/manual/ja/language.control-structures.php
とりあえずCakePHPの前に、言語の基本の制御構造は一通り知っておいたほうが良い。
あ、gotoは覚えなくて良い。
0208nobodyさん
2013/01/28(月) 14:46:38.64ID:???それで作ったシステムがあんだよ、今から始めるなら2系にするけど
0209nobodyさん
2013/01/28(月) 14:50:32.59ID:???解決したので〆ます。
>>207
ありがとうございます。echoいらないですね。知りませんでした。
原因はinput側のnameにクォート使ってたせいでした。
0210nobodyさん
2013/01/28(月) 14:51:02.60ID:???いやそういう意味で言ったんじゃなくて、
質問からして初心者丸出しだったんでつい
自分もmigrationという罰ゲームから日々逃れているので
1.3系からは縁は切れそうにないです
0211nobodyさん
2013/01/28(月) 22:12:15.69ID:swjDhI9Oやっぱり Controller の中でやるべきなのかな。
0212nobodyさん
2013/01/28(月) 23:09:06.99ID:???0213nobodyさん
2013/01/28(月) 23:13:46.62ID:???きったねー穴だな
0214nobodyさん
2013/01/29(火) 12:10:09.53ID:???どのフレームワークも、フレームワーク自体を良くしていく修正って
入るもんじゃないのかなって思うんだけど、どうなんだろう。
確かに、CakePHPのバージョンをマイナーでも上げてみたら、
困ったことは経験あるけど。
他のフレームワークってそういうことないの?
あ、Smartyのとこはスルーで。
0215nobodyさん
2013/01/29(火) 12:35:50.82ID:???> 困っている人いっぱいいそうですが、人気があるのが正直不思議です。
え、人気なんてねーだろ
てのが個人的な印象なんだがどうなんだろ
0216nobodyさん
2013/01/29(火) 14:21:01.52ID:???0217nobodyさん
2013/01/29(火) 14:25:59.76ID:???0218nobodyさん
2013/01/29(火) 14:28:58.07ID:???サイトも沢山あったし本も出てた、俺もその頃に使い始めたクチ
その後中身ボロボロなことに皆気が付いて、去っていったのかな
未だにぐぐっても出るのはその頃の解説ばかりだね
ところで今更Smartyは使いたくないな
0219nobodyさん
2013/01/29(火) 14:31:45.92ID:???PHP入のHTMLを変更させるよりも、割と需要あるし。
0220nobodyさん
2013/01/29(火) 14:36:42.45ID:???バージョンしらんけど
$this->passedArgsからpageとってきて
$title_for_layoutだか$pageTitleだかに追加しろよゴミクズ野郎
0223nobodyさん
2013/01/29(火) 22:58:58.76ID:???>>216
多くのPHPerが使ってるって、人気あるってことじゃないの?
>>218
確かに、最近は盛り上がってない感じはするよね。
でも、初心者が目立つような気もするけど。
>>221
ああミグラチオンガイドね、読んでる、読んでるよ、うん。
0224nobodyさん
2013/01/29(火) 23:16:10.75ID:???0225nobodyさん
2013/01/30(水) 01:35:49.79ID:???0226nobodyさん
2013/01/30(水) 02:06:54.48ID:???0227nobodyさん
2013/01/30(水) 09:27:59.12ID:???さらりと重要なことが書いてある。
2.3正式版リリース直前で、core.phpのSecurity.levelが無くなった。
0228nobodyさん
2013/01/30(水) 11:26:29.76ID:???0229nobodyさん
2013/01/30(水) 11:56:15.29ID:???未設定状態だと low が適用されちゃうね。
0230nobodyさん
2013/01/30(水) 12:20:15.33ID:???0231nobodyさん
2013/01/30(水) 14:10:32.14ID:???なら無くなってもどうでもいい。
0232nobodyさん
2013/01/30(水) 14:38:58.77ID:???変に数値を隠蔽すると逆に分かりにくい。
0233nobodyさん
2013/01/30(水) 14:44:27.19ID:???Cakeみたいに長い期間過去からいろいろ引きずってると、
初心者にしてみればなんでこんな仕様になってるのか
理解できないものだらけになってくる。
ってか、PHP自体がそんな感じだが
0234nobodyさん
2013/01/31(木) 09:50:24.92ID:???存在しないページナンバーを指定すると例外になる。
0235nobodyさん
2013/01/31(木) 09:52:46.37ID:???なんでそんなにガタガタなの
0236nobodyさん
2013/01/31(木) 10:25:45.07ID:???>>234で書いたとおり、2.3にするとpaginateコンポーネントで、存在しないページナンバーを
指定するとNotFoundExceptionの例外が発生します。
Searchプラグインとpaaginateを組み合わせると、例えば5ページ目までページングした後に
検索を行い、結果が5ページに満たなかった場合にはこの仕様ではエラーとなります。
検索ボタンを押したときにpost先のURLからpageパラメータを消すのが根本的な
解決だとは思うのですが、既に作ったシステムということもあり変更個所が多すぎるのです。
・paginateコンポーネントの例外処理を削除
・Searchプラグインに手を入れる
できればこれ以外で解決したいのですが、何か策はありますか?
とりあえずpaginateコンポーネントに直接手を入れることで考えてますが・・・。
0237nobodyさん
2013/01/31(木) 11:24:17.48ID:???2.3.0の話以前に、再検索してるのに5ページを示すパラメーターがついたままっておかしくね?
で、まぁpagenateコンポーネント見てないけど、
例外ならキャッチして復帰させるコード書けばいいんでないの?
0238nobodyさん
2013/01/31(木) 11:31:42.14ID:???もっといい手法あるかもだけど、とりあえず検索のFormに
$this->Form->hidden('page', array('value' => 1));
を持たせるだけで再建策の際はトップページに固定ってできる。
ただ、2ページ目のときにソートを変更した場合もトップに来てほしいのにページ保持してんだよな
paginateにパラメータ渡してなんとかできそうかなと思ってるけど後回しになってるわ。あと質問の件とは関係ないなすまん
0239nobodyさん
2013/01/31(木) 14:18:38.44ID:???直接コアのライブラリに手を入れるのはやめといたほうがいいんじゃない?
俺なら少なくともPaginatorComponentを継承した
オレオレコンポーネントを作って、
コントローラからそれをPaginatorとして利用するとかだけど。
コントローラの書き換えが出てくるけどな。それはまぁしゃあない。
オレオレコンポーネントに該当のメソッドの部分だけラッパー被せればいいからメンテもしやすい。
0240nobodyさん
2013/01/31(木) 20:33:43.81ID:???元のコンポーネントとして使う方法があったような・・・
昔の事すぎてよく覚えてないけど。
0241nobodyさん
2013/01/31(木) 21:34:40.55ID:???皆さまありがとうございました。
取り急ぎの対処で、CakePHP側で無く、Search plugin側を直接修正
(PrgComponentでリダイレクトされる前にpageパラメータ削除)を行いました。
ただ根本的な対策は>>239のようにすべきかと思います。
なおCookBookにもあるのですが
public $components = array(
'Auth' => array(
'className' => 'MyAuth'
)
);
という感じで「className」を使えば継承したオレオレComponetを元のComponentと
置き換える形で使えるような気がするので、時間があれば試したいと思います。
0242nobodyさん
2013/01/31(木) 22:14:42.24ID:RjbL5w0X0244nobodyさん
2013/01/31(木) 23:41:35.62ID:???pageパラメーターの削除とかしてるようには見えなかったけどなぁ。
Searh pluginて再検索でpageパラメーター引き継がれる仕様だったっけ?
0245nobodyさん
2013/02/01(金) 02:48:40.88ID:???0246nobodyさん
2013/02/01(金) 04:35:41.32ID:???さー、よー分からん。
0247nobodyさん
2013/02/01(金) 17:37:08.52ID:YUuc+gXX同一のcakephp上に複数のappフォルダを用意して複数サイトを作成しているのですが、
片方にアクセスが成功した後に、もう片方のサイトにアクセスするとDBのエラーが起こります。
どうやら先にアクセスした方のテーブルを読み込みにいってしまっているようなのですが、
解決方法がおかわりになる方、いらっしゃいますでしょうか。
0248nobodyさん
2013/02/01(金) 19:11:34.11ID:???modelのキャッシュかぶりが原因。core.php の下の方、Cache の設定のprefixをアプリ毎に書き換えてみ。
これで治らなかったらわからん。
0249nobodyさん
2013/02/01(金) 20:30:28.36ID:???0250nobodyさん
2013/02/02(土) 05:07:38.15ID:???0252nobodyさん
2013/02/02(土) 10:24:39.71ID:???■ このスレッドは過去ログ倉庫に格納されています