【PHP】フレームワーク CakePHP 12ホール目【笑】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/07/01(金) 16:33:46.28ID:???CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※sage推奨
※質問時も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
前スレ
【PHP】フレームワーク CakePHP 11ホール目【v1.3】
http://hibari.2ch.net/test/read.cgi/php/1297860755/
0353nobodyさん
2011/09/12(月) 00:27:18.43ID:???0354nobodyさん
2011/09/12(月) 00:38:16.74ID:???0358nobodyさん
2011/09/13(火) 22:55:23.32ID:???コンソールアプリからWWW_ROOTを参照すると、
アプリケーションディレクトリ配下のwebrootが返ってきてしまいます。
web画面からアクセスした場合は、ちゃんと設定した通りのパスが返ってきています。
コンソールアプリからはWWW_ROOT参照できないというような制約でもあるんでしょうか?
0359nobodyさん
2011/09/13(火) 23:07:43.48ID:???0360nobodyさん
2011/09/13(火) 23:36:20.60ID:???それがあらぬところを指し示してしまっているため困っています。
defineなので上書きも効かず。
0361nobodyさん
2011/09/14(水) 05:25:27.50ID:MD6DgTpSこのようにアクセスして、imagesコントローラのviewアクションで
サムネイルを生成して画像を表示させているんだけど、
なぜかCakePHPを介してこのようにアクセスすると、ファイルサイズが小さくならない。
viewアクションの動きは、上記を例にすると、
12345.jpgを縦135pxのサイズでimgejpg()を使って表示させる(横幅は比率維持)というものです。
/images/view/12345?height=1
このようにアクセスすると、縦幅1ピクセルの小さい画像が生成されるんですが、
ファイルサイズは17KBとかになってしまいます。
アクションの中身をそっくりそのままphpファイルにして、CakePHPとは無関係の場所でアクセスすると、
ファイルサイズも縮小分小さく(700Bぐらい)なっている。
誰か原因教えてくださいorz
0362nobodyさん
2011/09/14(水) 08:44:52.62ID:???0363nobodyさん
2011/09/14(水) 10:57:44.62ID:???0365nobodyさん
2011/09/14(水) 12:58:26.16ID:???function index(){
$hoge = 0;
$this->set('hoge',$hoge);
}
function ajax(){
$this->autoRender = false;
$this->uses = null;
Configure::write('debug',0);
$hoge = $hoge + 1;
$this->set('hoge',$hoge);
}
view側
<div id="div">
echo "$hoge";
</div>
<?php echo $ajax->link('ajax',ajax,array('update'=>'div')); ?>
ってやるとajaxで「$hoge空っぽなんだけど^^;」って言われるんですけど
ビュー側からコントローラー側へ変数を渡すにはどのようにすればよろしいのでせうか?
0366358
2011/09/14(水) 13:04:29.36ID:???コンソールアプリの場合、web画面からのアクセスとは異なり、
WWW_ROOTはcake.phpで定義されており、
アプリケーションディレクトリ配下のwebrootが指定されてました 。
cakebooksの応用インストール手順片手落ちじゃん。
それともcakeのバグなのかな?
どっちにしてもorz
0368nobodyさん
2011/09/14(水) 13:57:54.28ID:???何も値を渡して無いじゃないw
普通のリンクと同じ。$ajax->link(’title','ajax/1'.......)みたいにすればいい。
http://book.cakephp.org/view/1362/Methods
でもAjaxヘルパーはdeprecatedだからそろそろJsヘルパー使おうよ。
0369365
2011/09/14(水) 14:20:00.53ID:???<?php echo $ajax->link('ajax',null,array('update'=>'div','url'=>'ajax')); ?>
です
ここに書いたのは簡略化してるけど、ページネーションしたいだけなんです。
でもSQLが命名規則に適してないから$this->Dammy->query("$sql");みたいに直打ち
で、直打ちしたらページネーションが使えなくなった
だから何とか再現したいと、とりあえずAjaxでカウントアップ作ろう
って事になりました。
function indexで入れた$sqlと
ページ数出してる$nowpageさえ取り出せればいいんですけどね。
>>368
「Ajax使え」と、お上からのお達しやでぇ…
0370368
2011/09/14(水) 14:40:37.39ID:???後半はどうでもいいけど、
一旦Ajaxの事は忘れて、普通のリンク($html->link)でコントローラーの$hogeに値を入れる方法を考えて。
どういうURLを渡したら$hogeに値が入るか。
それがわかったらviewの$html->linkの所を$ajax->linkにすればいい。
0371361
2011/09/14(水) 14:47:07.01ID:MD6DgTpSすいません、今は問題をシンプルにしようと、引数は受け取っていないのでした。
http://phpspot.org/blog/archives/2007/02/phpphpthumbnail.html
これを使って、
$tn_image = new Thumbnail("sample.jpg", 0, 1, 0);
$tn_image->show();
こういうサイズ・画像を決め打ちにしています。
ちなみに最初は上記のクラスライブラリを使わずに自分のコードでサムネイルを作っていました。
自分で書いたコードのせいかと思い、上記のライブラリを使ったのですが、結果は変わらずです。
上記の単純なコードをphpファイルとして単純にアクセスすると
サムネイルが表示され、ファイルサイズも小さくなってくれます。
このことからコードは正しく動いていると思います。
なぜかCakePHPのコントローラにするとファイルサイズが小さくならないのです。
0373365
2011/09/14(水) 15:09:54.34ID:???わからんっ
なるほど、自分の場合は基礎ができてないんだな
いきなりCakePHPから入るんじゃなくて
ちゃんとPHPから勉強する事にする
0374361
2011/09/14(水) 15:10:19.72ID:MD6DgTpSおおおお!!
Cakeで生成した画像にCake の出すエラーのビューHTMLが含まれていました!
ありがとうございます!!!!
こんなバイナリでも見た目は全く正常な画像出してくれるんですね。。。ややこしい。。
0375nobodyさん
2011/09/14(水) 16:33:07.35ID:???さすが秀和…
変数の受け渡しなんて全くと言っていいほど出てこない
ギブアップ 答えください
0376nobodyさん
2011/09/14(水) 16:55:54.59ID:???0377nobodyさん
2011/09/14(水) 17:10:44.90ID:???ビューからコントローラへの受け渡しって無くない?
HTMLヘルパー使う記述なんて全然出てこないわ
0378nobodyさん
2011/09/14(水) 17:16:59.34ID:???0379nobodyさん
2011/09/14(水) 17:21:12.04ID:???みんなどんな本読んでんの?
0380nobodyさん
2011/09/14(水) 19:38:49.94ID:???難しく考えないでいいって。
CookBookのチュートリアル程度の基礎知識はあるとしてだけど。
http://book.cakephp.org/ja/view/1528/
ビューからコントローラへの受け渡しって言うけど、
ブラウザのURL欄に http://example.com/コントローラ/アクション/パラメータ
って手で入れるのと同じことだから。
そしたらコントローラー側では
function アクション($hoge) {......)
で$hogeにパラメータが入るでしょ。
0382nobodyさん
2011/09/15(木) 07:16:07.93ID:???サンプル探そうと検索したんですが出てこないし・・・
出来れば使い方も教えてもらえると助かります。
0383nobodyさん
2011/09/15(木) 10:15:18.66ID:???0384nobodyさん
2011/09/15(木) 11:10:47.97ID:???<?php echo $ajax->link('ajax',null,array('update'=>'div','url'=>"ajax/$hoge")); ?>
function ajax($hoge){ echo "$hoge"; }
これで$hogeの内容が出力される
こうなる
0386nobodyさん
2011/09/15(木) 16:20:43.36ID:???<?php echo $ajax->link('ajax',null,array('update'=>'div','url'=>"ajax/$hoge")); ?>
↓コントローラーの一部
function ajax($hoge){ echo "$hoge"; }
だろJK
0387nobodyさん
2011/09/17(土) 01:22:15.55ID:???■usersテーブル(会員データを保存)
id、name、created
■photosテーブル(会員が投稿した写真を保存)
id、user_id、name
こういうテーブル構成になっているとします。
users→photosはbeLongsToの関係です。
Authでログインした後、$this->Auth->user();を参照しても
結合しているphotosのデータが取得されません。
どうしたらいいのでしょうか?
0388nobodyさん
2011/09/17(土) 10:02:38.89ID:???0389nobodyさん
2011/09/17(土) 12:29:19.70ID:???全テーブルに年月日を保持するcreated、modifiedを作った方がトラブル時に確認しやすいよ。
0390nobodyさん
2011/09/17(土) 15:06:11.30ID:???photosテーブルのuser_idにキーを宣言し忘れとか
単純なミスじゃないの?
あと全テーブルにcreated、modifiedをいれるって。。
余計なカラムをいれると負荷かかるじゃん
トラブル時の解決はqueryログ追え
0391nobodyさん
2011/09/17(土) 21:35:18.42ID:???入れ忘れじゃないです。
Authのログインだとアソシエーションが反映されないようで、
ログインを手動にして、認証後に>>388してセッションに保存しています。
しかし、なにか違和感があるので、他に出来ないかと思い、質問しました
0392nobodyさん
2011/09/17(土) 23:04:06.83ID:???$this->Auth->user()
したあとに
$this->Photo->find()
0393nobodyさん
2011/09/17(土) 23:23:51.64ID:???0394nobodyさん
2011/09/18(日) 00:28:32.69ID:???0395nobodyさん
2011/09/18(日) 01:37:22.47ID:???0396nobodyさん
2011/09/18(日) 05:29:34.33ID:???0397nobodyさん
2011/09/18(日) 08:56:11.27ID:???そもそも認証系にテーブル結合するような設計が間違いと思う。
認証系て
■userテーブル
ID
名前
ログイン時間
登録時間
でいいじゃん。
photosテーブルてカラム内容からして
認証と関係なさそうだし。
一度認証したら
memchachedでIDと名前をもたせとけばいい
認証系にテーブル結合する意味がないし
セキュリティ的にも負荷的にもよくない
0398nobodyさん
2011/09/18(日) 09:46:57.95ID:???>そもそも認証系にテーブル結合するような設計が間違いと思う。
と言う事は、あとから必要になったら
その都度findしてデータを持ってくるのが正しいやり方なんですね。
Cake使う前も認証時には画像(プロフィール画像とか)を
ログイン時に保存していました。毎回参照する物なので。
でも、やり方が間違っていたのだと気づきました。
みなさん、アドバイスありがとうございます。
0399nobodyさん
2011/09/18(日) 10:30:05.38ID:???そもそも
users->photosがhasOneで
photos->usersがbelongsTo
0401nobodyさん
2011/09/19(月) 07:28:38.94ID:???いや、やりかたは間違ってるとは思わないよ。
ただAuthコンポーネントは結合されたテーブルの中身は
持ってこないというのが現状の仕様だからとしか言いようがない。
Authコンポーネントはリクエスト毎に呼び出されるから
結合させると重くなるとかが理由じゃないかな。
0402nobodyさん
2011/09/19(月) 11:28:37.42ID:???左右2カラムのサイトを作成時、左側のカラムが固定で特に変更しなくて良い場合に
レイアウト機能でうまく対応できないでしょうか?
入門書には以下のように書かれていますが
<body>
<?php echo $content_for_layout; ?>
</body>
たとえば以下の、左カラムにユーザ作成のコンテンツを表示できるでしょうか?
<div id="leftcolumn">
<?php echo $???????????; ?>
</div>
<div id="rightcolumn">
<?php echo $content_for_layout; ?>
</div>
0403nobodyさん
2011/09/19(月) 11:48:51.45ID:???cakephpでフォームからデータベースに保存と
同時にメール送信をしたいと考えてます。
テストでビュー、コントローラー、モデル、
それからコンポーネントにQdmailを入れてみて
起動させてみたのですが、メール送信ができて
いません。
去年、自作でphpを書いたときは、PCのphp.iniを
いじって送信が出来たのですが、今回はそれでも
上手くいきません。
どなたか、フォームからデータベースに保存と
同時にメール送信するサンプルプログラムなど
をご存知の方は見えませんでしょうか?
私自身、プログラムの知識はかじった程度で
今も手探りで作っております。
プログラムひとつまともに動かせない情けない
人間ですが、どうか、お願い致します。
0406nobodyさん
2011/09/19(月) 17:33:50.70ID:???CakePHPじゃなかったらメール送信できてるの?
cakephpを入れる前の自作メールは上手くいきました。
mb_send_mailでヘッダー情報などと一緒に
送っていました。
ただ、今はこちらも動きません。
元々htmlのフォームからphpプログラムにゆく
形でした。
cakephpを入れるとルートがおかしいのか、MVC
の形にしてないのが問題かわかりませんが
「そのhtmlコントローラーが無い」とエラーに
なって確認が出来ません。
0408nobodyさん
2011/09/19(月) 18:23:55.03ID:???0409nobodyさん
2011/09/19(月) 18:32:59.67ID:???しました。
プライベートアドレスはスパムばっかり来る
ためメールソフトが使えなかったので、web上で
確認できるYahooとGmailでテストしました。
php.iniをいじったのは、Yahooで受信する設定
をするためmail functionの項目SMTPサーバーの
設定をするためだったと思います。
0411nobodyさん
2011/09/19(月) 19:41:41.50ID:???「サーバにアップしてテストした」の意味が違くね?
>Yahooで受信する設定
>をするためmail functionの項目SMTPサーバーの
>設定をするためだったと思います。
Yahooのサーバーで、CakePHPという意味でサーバにアップしてテスト・・・という意味だと思うのだが。
すみません、しっかりと書いておりませんでした。
YahooやGmailを使って上手くいったのは、自作
phpプログラムの方です。
cakephpでのメール送信のテストはまだしておりません。
localでテストした段階までのところです。
一度、サーバーに上げて試してみます。
申し訳ありません。
0414nobodyさん
2011/09/19(月) 23:57:31.64ID:???localでやっていたものそのままで、フォーム→
確認→データベース保存・メール送信→完了
画面の順に移行する内容です。
エラーは無く、データベースに保存(日本語文字
化け)されてメールは送信されてません。
コントローラーのメール送信のプログラムに
問題があるのでしょうか?
0416nobodyさん
2011/09/20(火) 09:34:49.14ID:???0417nobodyさん
2011/09/20(火) 11:47:17.94ID:???状況次第でDELETE xxxx WHERE 1=1というSQLを発行する、恐ろしいバグがあるなんて…
お前らも気を付けろよ、新しいVerでは直ってるらしいが
0418nobodyさん
2011/09/20(火) 12:18:50.41ID:???元々JSPとかで直接書きだったから独自の書き方が非常に面倒くさい。
0419nobodyさん
2011/09/20(火) 23:57:00.98ID:???0420nobodyさん
2011/09/21(水) 08:48:21.43ID:???それよくあるね。
怖すぎだわ。
一度、本番のデータ死んで、
おれも死のうかと思ったけど、
バクアッブから復元して、
うやむやにしてまだバレてないわ、。
0421nobodyさん
2011/09/21(水) 08:55:03.71ID:???みたいに「全消し」が動作する場合は何か確認が欲しいよね
0422nobodyさん
2011/09/21(水) 10:17:39.13ID:???ものすごいバグじゃね?もっと騒がれても良いはずなんだが
0423nobodyさん
2011/09/21(水) 10:23:30.12ID:???俺も本番のデータ飛ばした
バックアップ先にも反映されて消えちゃったから、バイナリログ漁って新しめのデータだけ復旧したわ
涙目になりながら
ちなみにこれな
http://cakephp.lighthouseapp.com/projects/42648/tickets/250-model-delete-bug
なんか見てると対応もグダグダ
今は直っているはずだが、怖いのでDELETE発行する時は直接query書いてる
0424nobodyさん
2011/09/21(水) 10:33:05.33ID:???0425nobodyさん
2011/09/21(水) 10:44:39.71ID:???rm -rf /
0426nobodyさん
2011/09/21(水) 14:15:39.58ID:???だから問題ないって話じゃないな
前代未聞の糞フレームワーク
0427nobodyさん
2011/09/21(水) 14:47:49.22ID:???オレオレだと最低限、自分で把握してるから、こういうミスは無いけども
0428nobodyさん
2011/09/21(水) 16:23:32.55ID:???今のバージョンsmartyの対応もしてないんだぜ?
0429nobodyさん
2011/09/21(水) 16:36:42.58ID:???0430nobodyさん
2011/09/21(水) 16:56:15.40ID:???0431nobodyさん
2011/09/21(水) 17:25:51.23ID:???smartyはどう見てもオワコンだろ
0432nobodyさん
2011/09/21(水) 17:52:48.56ID:???Smartyはオワコンったらオワコン!
うわああああああああああああああ
0433nobodyさん
2011/09/21(水) 18:37:25.48ID:???それともテンプレートエンジン自体がオワコンなのか?
0434nobodyさん
2011/09/21(水) 19:30:49.47ID:???0436nobodyさん
2011/09/22(木) 01:15:30.77ID:???じゃ、仕事で「自分でテンプレの文章変更したい」
とかクライアントが言い出したらどうするの?
変更させないようにするの?
それともブログみたいに一部のみにするのか?
0437nobodyさん
2011/09/22(木) 11:37:15.86ID:???クエリでテーブル渡すという機能がありながら
ページネーションは規則に沿わないといけないとか
page(SQLで取り出したテーブル,項目数)とかそんなシンプルなんでいいんだYO
0438nobodyさん
2011/09/22(木) 12:04:27.46ID:???0439nobodyさん
2011/09/22(木) 12:06:09.72ID:???悔しいです
0440nobodyさん
2011/09/22(木) 12:12:01.17ID:???0441nobodyさん
2011/09/22(木) 12:14:58.36ID:???オレオレの仕様を覚えるのって、そんなに時間かからないだろうし。
一人で作ってる奴なら別にFW意識しなくても良いだろうしな。
0442nobodyさん
2011/09/22(木) 13:34:41.12ID:???作る時間がないから仕方なくFW使ってるだけ
作れるならオレオレが一番良い
0443nobodyさん
2011/09/22(木) 13:36:52.81ID:???なんか使用者多そうだから使ってみたけど、どうやらそうでもないし
バグはあるし、使いにくいし
昔の自分にアドバイス送れるなら、Cakeはやめとけ、と言う
0444nobodyさん
2011/09/22(木) 13:47:24.08ID:???だから、オレオレでもCake風のコーディングが出来るように作ってるし。
0445nobodyさん
2011/09/22(木) 13:49:12.50ID:???0446nobodyさん
2011/09/22(木) 14:07:15.81ID:???メンテナによほど恨みがあるらしいな
0447nobodyさん
2011/09/22(木) 14:17:33.00ID:???配列で各部分が。findの結果を連想配列で取得できるけど
俺にはこれがわかりやすい。どのテーブルのデータか判断付くし。
0448nobodyさん
2011/09/22(木) 14:17:49.44ID:???0449nobodyさん
2011/09/22(木) 16:28:49.56ID:???他のシステムで使ってたテーブルがそのままじゃ使えないって不便すぎる
0450nobodyさん
2011/09/22(木) 16:52:37.81ID:???モデルで変更できるんだし。
0451nobodyさん
2011/09/22(木) 18:29:48.82ID:???と使用してきたけどCakeだけは2度と使わないだろうと思う。
余計なおせっかいが多すぎ
使いこなせたら強力なんだろうけど
0452nobodyさん
2011/09/22(木) 18:50:18.02ID:???■ このスレッドは過去ログ倉庫に格納されています