【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/
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:???0453nobodyさん
2011/09/22(木) 18:50:40.25ID:???要は使ってる人が減ってるって事だろ、だから新しい情報がないと
どの程度のものなんじゃね
俺は、まあ、これで作っちゃったシステムがあるから仕方なくそのまま使ってる
0454nobodyさん
2011/09/22(木) 18:51:03.02ID:???0455nobodyさん
2011/09/22(木) 19:34:23.65ID:WQS0mmbwrequire_once('Net/UserAgent/Mobile.php');
$agent = Net_UserAgent_Mobile::singleton();
と書いて、switchで
case ($agent->isDoCoMo()):
$carrer = 'docomo';
というふうにやったんですが、
これを書いたファイル内では$carrerは使えるんですが、
このlayoutを利用しているviews側のctpファイルでは$carrerが未定義ってなってしまいます
どうやったら利用できますでしょうか
ご教示くださいますようよろしくお願いいたします
0456455
2011/09/22(木) 20:44:02.48ID:WQS0mmbwお騒がせしました
0457nobodyさん
2011/09/23(金) 18:23:45.86ID:???誰も擁護しないw
0458nobodyさん
2011/09/23(金) 23:56:56.15ID:???0459nobodyさん
2011/09/24(土) 00:01:50.33ID:???0460nobodyさん
2011/09/24(土) 00:02:48.61ID:???0462nobodyさん
2011/09/24(土) 01:28:56.78ID:???0463nobodyさん
2011/09/24(土) 02:54:17.08ID:eksj+xv1でもCakePHPのが日本語情報多いですし、仕事も多いです。
0464nobodyさん
2011/09/24(土) 04:35:56.69ID:???0465nobodyさん
2011/09/24(土) 05:02:05.78ID:???COBOLとか年中募集している。
0466nobodyさん
2011/09/24(土) 06:06:20.47ID:???0467nobodyさん
2011/09/24(土) 09:00:49.62ID:???0468nobodyさん
2011/09/24(土) 09:43:13.69ID:???初心者向けの本が多く出てるってこと?
0469nobodyさん
2011/09/24(土) 10:13:39.17ID:???なにかつまったら、検索してみると大抵、同じところで詰まってた人のブログから解決方法が見つかる。
0470nobodyさん
2011/09/24(土) 20:17:12.55ID:???0471nobodyさん
2011/09/24(土) 20:41:37.90ID:???俺はそれで困った
0472nobodyさん
2011/09/24(土) 21:26:46.36ID:???1.2系の、1.3系には使えないネタが多くてちょっと苦労した。
0473nobodyさん
2011/09/24(土) 21:48:18.36ID:???テンプレートの拡張子が違うのに気づかなかった事あったし。
でもまぁ、「こういう風にする、こういう風にしたい」ってゆーか、あやふやだが、そういった雰囲気がつかめればあとはマニュアルとブログを交互ににらめっこしてればなんとか分かるっつーもん・・・かな。
0474nobodyさん
2011/09/24(土) 22:44:31.20ID:???実際使ってみて困った問題は、他人のブログなどを頼りにせざるを得ないね
回数は少ないが、このスレで助けられたこともある
海外の掲示板に頼ったこともあった
ひとまずCakeに関しては、>>417のバグでテーブル全部消された恨みは一生忘れん
0475nobodyさん
2011/09/25(日) 02:27:45.92ID:???メール送信プログラムですが、シンプルにして
もどうも上手くいきません。
orz
コントローラーのプログラム内容が間違って
いるのは確実なのですが、どのように直したら
よいのかわかっていません。
公開処刑を覚悟でその部分のコードを書きます
ので、愚かな私に、どうか、お知恵を貸して
いただけないでしょうか?
よろしくお願いします。
に渡してメールを送信する形です。
プログラム部分はcakephpでない自作phpプログラム
で上手くいったときのものを入れました。
以下、問題と思うプログラム部分です。
どうか、お力をお貸しいただけますよう、お願いします。
(メール送信部分L31〜L58)--
function soushin(){
//文字コード設定
mb_language("ja");
mb_Internal_encoding("UTF-8");
//件名
$subject = "お問い合わせ";
//宛先
$to = "〇〇〇〇@yahoo.co.jp";
//POST受取
//差出人メールアドレス
$header = "From:".$_POST["mailaddress"];
//本文
$body. = "名前:".$_POST["name"]."\n";
$body. = "内容:".$_POST["naiyou"]."\n";
if(mb_send_mail($to,$subject,$body,$header)){
echo "メール送信成功しました。";
}else{
echo "メール送信失敗しました。";
}
$this->redirect("./index");
}
Undefined index: mailaddress[app/controller/〇〇_controller.php,line45]
Undefined index: name[app/controller/〇〇_controller.php,line47]
Undefined variable: body[app/controller/〇〇_controller.php,line48]
Undefined index: naiyou[app/controller/〇〇_controller.php,line48]
メール送信成功しました。(文字化け)
cannot modify header information - headers already sent by 〜
[CORE/cake/libs/controller/controller.php,line744]
------------------
L743〜L745
function header($status){
header($status);
}
この程度のプログラムが組めない情けない人間
ですが、どうか、お力をお貸し下さいますよう
お願いします。
0480nobodyさん
2011/09/26(月) 00:20:55.39ID:???Undefined ??は変数未定義。前レスくらい読め。
cannot modify header information - headers already sent by 〜
はredirectの前に文字が出力されている(Undefinedの表示)ので
redirectできないっていう意味。これもググれば頻出の現象。
mb_send_mailはtrueを返しているんだから
引数が間違ってるか、送信先のメールアドレスで弾かれているとか。
引数の$to,$subject,$body,$headerくらいはvar_dumpして狙いどおりの
値が入っているか追ってみろ。
よくあるのは、Fromとサーバのドメイン違いで迷惑メール扱いされるパターンとか。
0481nobodyさん
2011/09/26(月) 00:44:04.02ID:???viewからポストされたデータの受け取り方ぐらいは知っときましょうや。
http://book.cakephp.org/ja/view/963/
あとデバッグも済んでないのにいきなりsendmailに流すのは止めた方がいいわ
■ このスレッドは過去ログ倉庫に格納されています