【PHP】フレームワーク CakePHP 8ホール目【1.3】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/03/18(木) 10:00:59ID:6+kHM8kHCakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※sage推奨
テンプレは>>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
0583nobodyさん
2010/06/23(水) 13:58:09ID:???cake\basics.phpに追加する以外に
何か方法はありますか?
0584nobodyさん
2010/06/23(水) 14:11:23ID:???0586nobodyさん
2010/06/23(水) 18:19:33ID:???Authコンポーネントを使い基本的なログイン機能を作っていたのですが
core.phpを書き換えてセッションをDB管理したら
ログイン出来なくなりました。
エラーメッセージも出ず、auth.phpを上から見ていってるのですが
どこでつまづいてるのかわかりません。
セッションをDB管理し、authを使うには何か設定が必要でしょうか
0587nobodyさん
2010/06/23(水) 18:20:11ID:???それを使わずmysql_connectやpear::DBを使ってDB接続することはありますか?
0590nobodyさん
2010/06/23(水) 23:04:49ID:???こんなもんいらね
0591nobodyさん
2010/06/23(水) 23:10:47ID:???ていうか開発者から、取るのを推奨されているんだっけ?
何のためかは良く知らないけど
改行が入ったりの予防くらい?
0592nobodyさん
2010/06/23(水) 23:24:38ID:???でも最初からあるコードは基本的に放置だな
むしろ手を加えることで何か不具合出してしまいそう
0595nobodyさん
2010/06/24(木) 00:29:11ID:???0596nobodyさん
2010/06/24(木) 01:10:16ID:???0597nobodyさん
2010/06/24(木) 02:10:58ID:???何いってんの?
0598nobodyさん
2010/06/24(木) 08:28:24ID:???ちげぇよ愛だよ
0599nobodyさん
2010/06/24(木) 13:44:40ID:???coreに記述されているハッシュの種が変わったから、
違うパスワードが生成されているんじゃないの?
照会SQLを確認してみな。
0600nobodyさん
2010/06/24(木) 23:26:58ID:???そのうちPHPの仕様が変わって絶滅するだろうな。
ガハハハハハハハハ
0601nobodyさん
2010/06/24(木) 23:45:45ID:SNEZsqXVとcakePHPによる実践アプリケーション開発 という本に
例があり一部抜粋したのですが、この先頭のeとは何なんでしょうか?
0603nobodyさん
2010/06/25(金) 08:04:32ID:???Ajaxで使うときはエラーになって邪魔です。Ajaxで使うときは出力しないようにできませんか?
0604nobodyさん
2010/06/25(金) 08:55:39ID:???beforeRenderとかで
if ($this->RequestHandler->isAjax()) Configure::write('debug',0);
って感じ
0605nobodyさん
2010/06/25(金) 10:22:11ID:???照会SQL確認して、
セッションテーブルのIDをintにしていたのが間違っていました
ばーちゃーにしたらうまく動きました。
ありがとうございます!
0607nobodyさん
2010/06/25(金) 18:49:37ID:0V5oobxvありがとうございました。
0608nobodyさん
2010/06/25(金) 20:47:40ID:???0609nobodyさん
2010/06/25(金) 20:55:23ID:???0610nobodyさん
2010/06/28(月) 01:42:58ID:???0611nobodyさん
2010/06/28(月) 04:10:11ID:???何ができれば”既存案件で使える”になるんだ?
0612nobodyさん
2010/06/28(月) 10:41:06ID:???情報の引き渡しにsessionを多用してたら、複数のブラウザを立ち上げて
並行してオペレーションを行うと動作がおかしくなりました。
同じsessionを複数のオペレーションから参照してるので当たり前といえば
当たり前なのですが。
こんな場合はURIにsession idを含めるとか、そういう対処が一番ですかね?
0613nobodyさん
2010/06/28(月) 11:07:09ID:???でもどうなった
だからおかしいと思ってる
ってのが分らなけりゃ答えようがないと思わないかい?
はいかいいえで答えてくれ
0614nobodyさん
2010/06/28(月) 11:30:46ID:???0615612
2010/06/28(月) 11:56:53ID:???はい、その通りです。例をあげると
http://sample.sakushima.net/Cake/sessions/
ブラウザを2つ立ち上げて、このページをそれぞれ開きます。
2つのブラウザを順番にリロードすると、リロードした順に1,2,…と回数が上がります。
2つのブラウザで同じSessionを共有しているので、この動作は正しいと思います。
やりたいことは、上記の動作を行った際、2つのブラウザそれぞれで1,2,…と回数を上げたいのです。
実現方法ご存じの方お教えください。
0616nobodyさん
2010/06/28(月) 12:06:27ID:???認証済みのユーザーということじゃないんだよね?
そうすると、2つのブラウザのアクセスが同一人物だと判定しなきゃいけない
URLに埋め込むとセッションハイジャックされるリスクを負うんじゃまいか?
0618nobodyさん
2010/06/28(月) 15:17:05ID:???Diary.id Diary.user_id Diary.body
Comment.id Comment.diary_id Comment.body
というDB構成で作っているときに、
「最新のコメント10件がが誰の日記に向けて書かれたか」を表示させるとき、
$this->Comment->findで、recursiveを2にしてデータを取ってきてるんだけど、
CommentとDiaryがJOINされるんだけど、それとは別にUserのデータを
取ってくるのに10回もSQLを投げてしまうのはしょうがないものなの?
CakePHPが副問い合わせに対応していないせい?
表示させたいのは
>最新のコメント10件
> こんにちは → Aさんの日記
> お久しぶりです → Bさんの日記
> 面白いですね → Aさんの日記
> ...
という感じなんだけど
0619nobodyさん
2010/06/28(月) 19:53:05ID:qHDwmPz9<TABLE width="400px"> として表にしてもブラウザの幅に
あわせて伸び縮みしてしまいます。
デフォルトのCSSファイルより、優先されると思うのですが何故でしょうか?
CSKEPHPはver1.2です。
0620nobodyさん
2010/06/28(月) 20:02:50ID:???htmlはpxいらねーよ
てか悪いことは言わん。この業界あきらめろお前は
0621nobodyさん
2010/06/28(月) 20:26:44ID:???0622nobodyさん
2010/06/28(月) 20:27:47ID:qHDwmPz9なるほど、うまくいきました。
ありがとうございました。
0623nobodyさん
2010/06/28(月) 20:36:54ID:???HTML/CSS/PHP/CakePHPこれらを切り分けもできずに
こんなところで糞な質問しちゃう奴なんざやめろ今すぐ。
0624nobodyさん
2010/06/28(月) 20:44:55ID:???今後は気をつけるだろう
0625nobodyさん
2010/06/28(月) 23:42:04ID:???0626nobodyさん
2010/06/28(月) 23:52:38ID:???1セッション当たり、10MBくらいは普通かな?
0627nobodyさん
2010/06/28(月) 23:54:20ID:???優しい奴だな。ちょっともえ
0628nobodyさん
2010/06/29(火) 07:25:59ID:???あそこは世紀を超えての名サイトだ。
0629nobodyさん
2010/06/29(火) 08:46:43ID:???これをリアルで言われて
言われたヤツやめちゃって
やめたヤツの仕事が俺に回ってきて
言ったヤツ知らん顔
俺涙目
0630612
2010/06/29(火) 12:04:06ID:???結局やりたいことというのは
「同時にブラウザを複数立ち上げたときに、それぞれ別々に状態を保持しておきたい」
ということです。極端な話、ブラウザ1・ブラウザ2でそれぞれユーザー1・ユーザー2
で認証をしたら、それぞれのユーザーで独立して動作するイメージです。
実際に作っているアプリでは、認証情報・画面遷移情報・入力データなど、結構な量の
データを画面間で保持する必要があります。実現方法として考えているのは下記です。
1.URLにSession IDを埋め込み、それを基にServer側で使うべきSessionを切り替える
→携帯サイト向けのサンプルは見つかった。いまいち良いサンプルが見つからない
2.引き継ぐ情報をまとめてシリアライズ・暗号化してURL・POSTで渡す(極力Sessionは使わない)
→通信データサイズが結構な量になるかも・・・
こうしたほうが良い等ご意見ありましたらお教えください。。
0631nobodyさん
2010/06/29(火) 12:16:19ID:???ん?>>616だけど完全に逆だと思ってた。
っていうか、違うブラウザなら、別のセッションだと認識されるのが普通だが、どんな環境でチェックしてるの?
FFとChromeでやってみたが、ふつうにそれぞれ独立してインクリメントされるよ??
0632612
2010/06/29(火) 12:47:04ID:???こちらではIE8、FF、Chromeともに下記の動作となります。
時系列で書きます。
ブラウザ1を起動
ブラウザ2を起動
ブラウザ1で「http://sample.sakushima.net/Cake/sessions/」を表示→表示回数:1
ブラウザ2で「http://sample.sakushima.net/Cake/sessions/」を表示→表示回数:2
ブラウザ1でF5(リロード)→表示回数:3
ブラウザ2でF5(リロード)→表示回数:4
0633612
2010/06/29(火) 12:55:56ID:???補足で、ブラウザ1・2ともに同じ種類のブラウザです。
もしかしたら616さん、ブラウザ1:FF・ブラウザ2:Chormeとか、
別のブラウザを立ち上げてるんじゃないかと。
0634nobodyさん
2010/06/29(火) 16:46:35ID:???サーバ側で何らかの識別データをGET/POSTで埋め込むのしか思いつかない。。
0635nobodyさん
2010/06/29(火) 17:07:06ID:???うん。そうだよ。別のブラウザでやった。
同じブラウザのタブ別で別ユーザーだと認識させたいの?
そりゃまた無茶なことを、、、
0636nobodyさん
2010/06/29(火) 17:11:36ID:???0637nobodyさん
2010/06/29(火) 17:35:04ID:???セッションが切れちゃって確かに鬱陶しいけど、まあ開発中の一時的なもんだしなあ。
0638nobodyさん
2010/06/29(火) 23:52:30ID:???0639nobodyさん
2010/06/30(水) 00:49:39ID:???データをmysqlに移行する以外は意外とめんどくさくない
0641nobodyさん
2010/06/30(水) 19:52:27ID:???Fatなコントローラーをmodelに集約しようと思い、
新しく scrape というモデルを作って、動かしてました。
ローカルでは普通に上手く行くのですが、
いざWEB上で動かすと、
Database table scrapes for model Scrape was not found.
というエラーメッセージが。。
0643nobodyさん
2010/06/30(水) 20:11:23ID:???modelで
var $useTable = false;
だったかをするとテーブルなくても怒られないけど?
0644nobodyさん
2010/06/30(水) 20:13:05ID:???すまそ
0646nobodyさん
2010/07/01(木) 04:37:27ID:???一応チュートリアルにもあるが、Cakeで始めにはまる落とし穴。
あと>>643とか使えないヤツだから気にするな。
0647nobodyさん
2010/07/01(木) 10:24:02ID:???モデルAのpaginate()の中で
SELECT * FROM a, b, c WHERE a.b_id = b.id AND b.c_id = c.id;
という形のSQLを発行しているのですが、
<th><?php echo $paginator->sort('c.name');?></th>
のリンクをクリックしてもソートされないのです。
モデルAとCはリレーションがないため、
paginate()の$order引数に 'c.name' => 'asc' が入ってこないようです。
どうすればいいでしょうか?
0648nobodyさん
2010/07/01(木) 13:01:04ID:???二度と来るな
0649nobodyさん
2010/07/01(木) 16:03:56ID:???cakeを動かした例はあるでしょうか。
同業者からの依頼でcakeを使う予定なんですが、再利用される恐れがあるため
なんとかできたらと考えてます。
0652nobodyさん
2010/07/01(木) 18:58:02ID:???そのファイルのソース中にリンク、例えばhote.htmlがあると出力したときに
hoge.html?CAKEPHP=681a529c456e8da3f6a2e39219c8f4ca
と言う文字列が必ず付くのですがこれはどうすれば消せますか?
と言うか何のためにリンクに文字列が付いて出力されてるんでしょうか?
0653nobodyさん
2010/07/01(木) 20:23:40ID:???それセッションIDだろ
session.use_trans_sid = 0にするか、セッション使わない設定にしたら?
0655647
2010/07/01(木) 22:49:41ID:???で動的に関連をセットすることでできました。
0656nobodyさん
2010/07/03(土) 02:07:02ID:???ffmpegもインストールしてやってるんだけど
初期から入ってるvideoのサムネイル設定なのに
Medium::make - Invalid instruction `VideoMedium::fitCrop()`.
とかなって死ぬ
なんか設定が足りないのかサポートされてないのか
というかMediaPluginと動画の話題が全然ぐぐってもヒットしないんだけどみんな使わないのかな
0657nobodyさん
2010/07/03(土) 02:44:20ID:???一応書いておくと
filterの指定を↓見たいにしてたんだけど
array('fitCrop'=>array(100, 100), 'convert'=>'image/jpeg')
するとvideoのClassをよむからメソッドがなくて怒られる
まさかとは思ったけど順番変えて最初にconvertおくと
array('convert'=>'image/jpeg', 'fitCrop'=>array(100, 100))
ちゃんと変換してくれました。
スレ汚しすまんです。
0658nobodyさん
2010/07/03(土) 04:16:09ID:???ついでに汚します。寝たかったのにはまって一応解決?したんで
wmvをアップして画像とかflvとかに変換したかったけどできない。
mpgならできたのに・・・ってなって四苦八苦
で、MediaPluginのソースいじることになるんだけど
vendors/......../ffmpeg_video.php
で最初に定義されてるrequire['mimeTypes']の
mswmv
ってのを
ms-wmv
に変更したら動いた。
同じ階層にあるgetid3_video.phpでも同じように定義されてあるんだけど、
そこではms-wmvになってるんだよね。揃えてみたら動きました。
なんかよくわからんが一応解決です。
0659nobodyさん
2010/07/03(土) 07:41:45ID:???PHP自体は理解しており、MVCも理解しているつもりです。
とりあえず学習の定番と言えそうな本家(日本語)のチュートリアルをやってみました。
でもこれだけでは、その後独力でCakePHPの学習を推進していくチカラが得られませんでした。
チュートリアルのつぎのステップとしてお勧めな学習方法を教えてください。
(マニュアルを理解するには、チュートリだけでは知識が浅すぎると感じました)
よろしくおねがいします。
0661nobodyさん
2010/07/03(土) 09:36:37ID:???実際の開発プロジェクトで、みんなadmin routingとか使う?
0662nobodyさん
2010/07/03(土) 09:49:14ID:???チュートリアルをやれば、あとは独力ということですね。
でも、チュートリアルを一通りやっただけで、独力で解決策を見出しながら開発を
進めていくチカラが付いたとは思えないんですけど・・・
CakePHPは習得が簡単だと思っていましたけど、実はかなり敷居が高いのでは
ないかと思ってしまいます。
0664nobodyさん
2010/07/03(土) 10:33:21ID:???何でひっかかってるんだい?
チュートリアル+入門書だけでスタートアップは十分だと思うけどな・・・
0665nobodyさん
2010/07/03(土) 12:03:57ID:???app/tmp/
の中に適当なディレクトリを作って保存する方法で構わないんでしょうか。
他に適切な配置場所があれば教えていただきたいです。
0666nobodyさん
2010/07/03(土) 16:09:42ID:???代替の書き方ってあるんでしょうか?
0667nobodyさん
2010/07/03(土) 16:49:44ID:???cakeの実践アプリケーションの本でも買ったら?
あとはcakeの開発陣の人たちはgitとかで他人のコードを読みまくるのが大切と言ってたと思う
>>665
app/tmp/の中は基本的に消えちゃってもかまわないキャッシュファイルとかの置き場なので
作成したテキスト(がどんなものなのか知らないけど)がそういうたぐいのデータならそこでいいと思う
誰か>>618答えてくれー・・・
0668nobodyさん
2010/07/03(土) 17:39:44ID:???PHPのサンプル本とかで「○○の作り方」ってのを一個一個おさらいしていったらいい
それができれば、あとはcakeの中でそれらをくっつけていくだけでしょ
0669nobodyさん
2010/07/03(土) 21:12:12ID:???チュートリアルをそのまま殆ど写しただけで「終わりました」とか言ってないか?
そりゃ身に付いてるはずがない。
コピペすれば動くんだから、エラーの時の問題解決なんか出来るようになるわけないわな。
1から作るのがまだ辛いなら、チュートリアルアプリをなにか改造してみれ。
画面を増やすとか、レコード(テーブル)にカラム追加するとか、入力チェック追加するとか。
0670nobodyさん
2010/07/04(日) 17:29:17ID:???マニュアルがうんこだから。
非公式のチュートリアルもロクなもんがないしな。
0671nobodyさん
2010/07/04(日) 17:46:20ID:???0672nobodyさん
2010/07/04(日) 18:30:42ID:???お前にとってCakePHPがはじめて使うフレームワークだからだろ。
0673nobodyさん
2010/07/04(日) 19:01:49ID:???0674nobodyさん
2010/07/04(日) 19:19:56ID:???0675nobodyさん
2010/07/04(日) 19:30:42ID:???0676nobodyさん
2010/07/04(日) 19:38:11ID:???と、
フレームワークを既に知っている人向けのチュートリアル
があると、普及が促進されるかもね。
0677nobodyさん
2010/07/04(日) 19:43:15ID:???バッドノウハウ的なもんがちょっと多いかなとは思う
0679nobodyさん
2010/07/04(日) 23:19:50ID:???チュートリアルを終えて、実際のアプリを作っていくうえで
「ここはどうやるんだろう」ということを何回も調べなければならない。
ま、どんなフレームワークでもそうだが、Cakeはチュートリアルが薄すぎる。
>>662が言っているのもそういうことだろう。
0680nobodyさん
2010/07/04(日) 23:39:54ID:6la4DkIe実際に開発通じての経験から言うと
フレームワークの設計の難に由来してる問題点も少なくないなと思った
よく知られてる大きなプロジェクトとかが
他のへ移行してしまうのは
やっぱそういった事も関係してるだろうなと思ったよ
0681nobodyさん
2010/07/05(月) 00:27:13ID:???遠回りかもだけど、それぞれの似ているようで違う仕組みだから、より理解しやすいかも。
そして、CakePHP以外に合うものが見つかるかも。
0682nobodyさん
2010/07/05(月) 01:12:10ID:???Javaの何かと比べると、覚える事が意外と少ないな、という印象なんですが・・・
■ このスレッドは過去ログ倉庫に格納されています