トップページphp
985コメント290KB

【PHP】フレームワーク CakePHP 5ホール目【v1.2】

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2008/12/19(金) 15:52:19ID:ylogT+7c
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
cookbook(マニュアル)
http://book.cakephp.org/ja
the Bakery
http://bakery.cakephp.org/

■日本語フォーラム
http://cakephp.jp/


■過去スレ
【PHP】フレームワーク CakePHP 4ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1213892680/
【PHP】フレームワーク CakePHP 3ホール目【本命】
http://pc11.2ch.net/test/read.cgi/php/1205475360/
【PHP】フレームワーク CakePHP 2ホール目
http://pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/
0935nobodyさん2009/02/26(木) 14:24:14ID:???
>>933
>1app=1店舗
そうです。
DBに入れるのが楽ですか。

>>934
DBからデータを読み出すのは、bootstrapじゃなくて、
app_controllerからってことでしょうか?

confモデルとかを、app_controllerで、App::importで
インスタンスにして読み出して、$Controller::set()で
適当な変数(例えば、$this->data['confs'])にセット
して(viewに渡して)おけば、どこからでも使える?

あ。なんとなくダメっぽい気がする。
0936nobodyさん2009/02/26(木) 14:31:11ID:???
>>935
それでいいと思います。というかやってみようぜ。すぐ結果わかるんだから。
0937nobodyさん2009/02/26(木) 14:35:36ID:???
>>935 for example
# app_controller.php
# beforeFilter() or beforeRender()
$this->set('shop' ,$shop = $this->Shop->find('first' ,$options));
0938nobodyさん2009/02/26(木) 14:38:58ID:???
Configure::storeでファイルに書いちゃってもいいんじゃないの?
マニュアルには出てないからAPIの方を見てください。
0939nobodyさん2009/02/26(木) 14:48:53ID:???
>>938 へえこのメソッド知らなかった。勉強になるわ
0940nobodyさん2009/02/26(木) 15:04:17ID:???
>>938
Configure::loadとConfigure::storeのパスを
app/config以外に変更できればいいのですが。
0941nobodyさん2009/02/26(木) 15:14:22ID:???
Configure::load('../../appconfs');
とかなら可能だけど・・・あんまりお勧めできないわな。
0942nobodyさん2009/02/26(木) 15:56:30ID:???
http://unkar.jp/read/pc11.2ch.net/php/1194976228
の258に出てた。

>・Configure::store('AAA', 'a', array('data'=>'123'));で値保存。
> /app/temp/cache/persistent/a.php ができる。
> Configure::load('a'); でa.phpファイル読み込み
> pr(Configure::read('AAA')); で保存した値表示。

確かに、その場所に保存されてた。うーむ。
09439382009/02/26(木) 16:01:56ID:???
あーごめん、Configure::storeはキャッシュ的な使い方用なんだね。
じゃあ設定自体はDBに入れといて、
storeしておけばどこからでもConfigure::readで使えるってぐらいかな。
0944nobodyさん2009/02/26(木) 17:11:49ID:???
>>943
なるほどね。expiresが長いけど、cacheファイルが無くなる可能性を考えると
bootstrapでConfigure::loadして、読み込めなかったらapp_controller等でfind & Configure::store
あとは、afterSaveでConfigure::storeする感じか
0945nobodyさん2009/02/26(木) 18:02:14ID:/EQHTY5K
すいません質問させてください。

アソシエーションされたモデルのビヘイビアって動作しないのでしょうか?
何か動作させる方法があれば教えてください。

ModelAに
hasMany=>ModelB
とあるとして、
ModelA,ModelB両方にactsAsで同一ビヘイビアを呼び出している場合、

ModelA->find等とした場合に、ModelAはビヘイビアが効いていますが
ModelBには効きません。

これは正常動作ですか?何とか回避する方法はありますでしょうか?
0946nobodyさん2009/02/26(木) 18:18:14ID:???
>>945
ビヘイビアによると思うのだが。何使ってる?
0947nobodyさん2009/02/26(木) 18:22:59ID:/EQHTY5K
どれというより、基本的にmodelBから呼ばれてないので
自作してる途中に気付きまして。
ビヘイビア側で対応する必要があるんですかね??

ただ、ちょっと今配布物みてそれがきちっと動くなら参考に・・と思って
AttributeBehavior
http://bakery.cakephp.org/articles/view/attributebehavior-dry-and-powerful
これやってみたんですが、
やはりアソシ先には効いてないですね。

動作するビヘイビアがあれば参考までに教えていただきたいです。
0948nobodyさん2009/02/26(木) 18:32:29ID:???
>>947
いやsettingがかぶらない処理がしてあるから動くのかと思っただけ。アソシエーションの場合じゃないんだな
アソシエーション先のModelにもattachするとか、アソシエーション先のModelの処理も元ビヘイビアに書いちゃうとか、だめかい?
0949nobodyさん2009/02/26(木) 18:38:25ID:/EQHTY5K
AttributeBehavior見てみましたが
 setupは両方のモデルから呼び出されていますね
 afterFindは親モデルからしか呼び出されないですね

当然といえば当然なんですかね。


>アソシエーション先のModelの処理も元ビヘイビアに書いちゃうとか、だめかい?
それしかないかなと思うんですよね。

09509452009/02/26(木) 21:46:08ID:/EQHTY5K
私は残念ながら英語が苦手なのですが、
おそらくまったく同じ質問を英語で見つけました。
coreを改変する云々言ってるようですね。


ModelA hasMany ModelB
ModelB actsAs SomeBehavior

SomeBehavior defines afterFind()

ModelAController::someAction() has:
$this->ModelA->recursive = 1;
$this->ModelA->findAll();

Will SomeBehavior::afterFind() be triggered for ModelB, since ModelB
will be retrieved via association to ModelA?

http://groups.google.com/group/cake-php/browse_thread/thread/5f3d90e3686f191b/c3bb61dfb902b8c9?lnk=gst&q=afterfind
0951nobodyさん2009/02/27(金) 01:00:21ID:???
IRCの#cakephp-jaって、フォーラムで見かける名前の人がけっこう常駐してるな。
そこで質問したらすぐ答えてくれるのかな。
0952nobodyさん2009/02/27(金) 04:38:34ID:???
Authを使う際の、Usersフィールドのusernameとpasswordって、
例だとvarcharになってるけど。これをBLOBとかにしても大丈夫?
(データベースはMySQL)
今は、varchar(100)で使ってるんだけど。phpmyadminで
ユーザー名とかが丸見えなんだよね。
気休めでしかないのは分かるけど・・・BLOBなら、phpmyadmin
では表示されないので、大丈夫なら変更したいんだけど。
0953nobodyさん2009/02/28(土) 01:34:16ID:???
beforefindでfindのタイプを知ることできますか?
allなのかfirstなのかlistなのかなどです。
0954nobodyさん2009/02/28(土) 08:09:52ID:???
なんか人のオーラが見えるとかいう何の役にも立たない糞サービスあるみたいだけど意味ないな
0955nobodyさん2009/02/28(土) 09:24:09ID:jSeVzlRv
モデルとか関係なくコントローラーでSQLを実行したいのですが、
ダミーのテーブルなしモデルを使う以外の方法はありますか?

App::import('Core', 'DboSource');
$data = DboSource::query($sql);
とかやってみたのですが、DataSourceクラスがないと言われ、
DataSourceもApp::importしてみたのですが、同様でした。
0956nobodyさん2009/02/28(土) 09:25:12ID:???
>>953
何のために知りたいか分からんから外してるかもだが、beforeFindではなく、Model::find()で判定すれば確実では?
0957nobodyさん2009/02/28(土) 20:25:45ID:???
>>955
$db =& ConnectionManager::getDataSource('default');
$result=$db->query('SELECT 〜');
0958nobodyさん2009/03/01(日) 21:42:51ID:???
Qdmailで複数宛先にメールが送れなくて困ってます。(5ヵ所に同じメールを送りたい)
↓ここを見て
http://hal456.net/qdmail/oopbase
$to = array('hoge@example.co.jp', 'foo@example.co.jp');
$this->Qdmail->to( $to );
としましたが、hogeにもfooにもメールが届きません。
$this->Qdmail->to('hoge@example.co.jp');
$this->Qdmail->cc('foo@example.co.jp');
にするとhogeとfooの両方に同じメールが届きQdmailが動いている事が確認出来ました。
解決のアドバイスをください。

さくらスタンダード、CakePHP1.2.1、Qdsmtp0.2.0a、Qdmail1.2.6b
0959nobodyさん2009/03/01(日) 22:01:11ID:???
>>958
自己解決しました。
$to = array('hoge@example.co.jp', 'foo@example.co.jp');
$toName = array('hoge', 'foo');
$this->Qdmail->to( $to, $toName );
のとおり$toNameで相手先名を設定する事で複数宛先へメールを送る事が出来る様になり
ました。お騒がせしました。
0960nobodyさん2009/03/03(火) 15:11:04ID:???
textareaにJavascriptのエディター
(たとえばNicEditとか)を付けるには、
どうしたらいいですか?
0961nobodyさん2009/03/03(火) 16:47:53ID:???
>>960
http://bakery.cakephp.org/articles/view/using-tinymce-with-cakephp
この辺が参考になるのでは。
つうかJavascriptをどっかで貼付るだけだけどね。
0962nobodyさん2009/03/03(火) 17:32:49ID:???
なるほど。思った以上に簡単そうですね。ありがとう。

あとは、CakePHPの変態cssを何とかしたい・・・
0963nobodyさん2009/03/03(火) 20:26:38ID:???
スタイルシート外しちゃえば?
0964nobodyさん2009/03/04(水) 13:58:49ID:???
CSSで苦労している人はこれを参考にすれば良いよ
http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&topic_id=1421&forum=7
0965nobodyさん2009/03/04(水) 16:22:08ID:???
こういうの見てていつも不思議なのは・・・
なんで横幅を固定するのかなぁ?
リキッドレイアウトにした方がいいのに。
0966nobodyさん2009/03/04(水) 20:19:52ID:???
横幅を固定にしたほうがレイアウトに苦労しないから。

背景ひとつにしてもリキッドレイアウトだと
横に広げても違和感ないような同じパターンの
繰り返しの絵しか使えない。

不自然な空白は見た目が悪い。
0967nobodyさん2009/03/05(木) 00:39:26ID:???
>>966
同意。リキッドレイアウトもいいけど、その時々で使い分けるのがいいよね。
0968nobodyさん2009/03/05(木) 00:47:12ID:???
横幅固定に肯定的な意見が続きますね。

さて。>964の様な追加のcssを適用するのは、
どうするのがCake流?
cake.generic.cssを書き替える、上書きする?
それとも、別ファイルにして読込む?
0969nobodyさん2009/03/05(木) 00:49:36ID:???
>>968
自分は cakephpのcss は完全に捨てる。
で、 blueprint.css という cssフレームワークを使ってデザインしてきます。
0970nobodyさん2009/03/05(木) 08:02:38ID:???
Cakeで国際化したいのですが、
データベースの内容を言語別に出力できる仕組みなどはあるのでしょうか?
それとも、自分でURLなどから振り分ける必要があるのでしょうか?

どなたかわかる方がいましたら、教えてください。
0971nobodyさん2009/03/05(木) 09:39:03ID:???
>>970
国際化の仕組みはある。
言語別に出力するのはぐぐれば出てくるよ。確かgooglebotの場合に気をつけなきゃとかはあったはずだけど。
0972nobodyさん2009/03/05(木) 09:43:56ID:???
>>969
>>964-965はあくまでFormHelper向けのCSSの話。それ以外はみんな独自でしょ。多分。
で、微妙にスレチついでに悪いけど、blueprintってネガティブマージンみたいなことできるの?
「左・メイン・右」のようにカラムがあるとき、できればメインから記述したいのだが。
0973nobodyさん2009/03/05(木) 13:24:47ID:???
>>972
あ・・・そうなんだ。フォームだけか。フォームヘルパー使わずベタ書きしてるから
気にもとめなかった。

ネガティブマージンとかわからない。わかれば教えたいけど。
にしてもblueprintは便利。
0974nobodyさん2009/03/05(木) 15:44:09ID:???
アクセス解析とかクリックカウンターって
プラグインやらなんやらないかと探したけど見つからないんですが
よく使う機能だと思うんですけどみなさんどうされてますか?
0975nobodyさん2009/03/05(木) 16:51:37ID:Oid1bNoJ
便利すぎ
0976nobodyさん2009/03/05(木) 18:57:33ID:???
ボタンが複数あるページからの submit を、どのボタンが押されたか判断するために、

$this->params['form'] を使えばいいのかな、と思ったんですが、
試しにコントローラで
pr ($this->params['form']);
を見てみたら、結果が
Array
(
)

となります。 $this->data には post された値は入ってきます。

post されたパラメータを取得するのにはどうしたらいいですか?
0977nobodyさん2009/03/05(木) 19:24:56ID:???
submitにvalueが入ってたら
$this->data['submit']でとれんでねーの?
0978nobodyさん2009/03/05(木) 23:13:28ID:???
hiddenかなんかで渡してるんじゃないの?
0979nobodyさん2009/03/05(木) 23:17:52ID:???
普通にbuttonのnameでボタン名が渡るでしょ
paramsに
0980nobodyさん2009/03/06(金) 12:18:30ID:6wpuU2ya
Emailコンポーネントで、添付ファイルを送りたいのですが、
サーバーにファイルの実態がないとだめですか?

PDFをFPDFで作成しているのですが、文字列でアウトプットして、
ファイル名をつけてそのまま添付したいのですが。
0981nobodyさん2009/03/06(金) 16:00:33ID:???
>>980
requestActionじゃだめかな?
09829812009/03/06(金) 16:01:39ID:???
ああ、ごめん。忘れて
0983nobodyさん2009/03/06(金) 20:35:07ID:???
実態作って添付じゃだめなの?
実態作りたくなければ、
バウンダリー云々して自分でメール組み立てればいいだろうけどめんどくさそう。
0984nobodyさん2009/03/07(土) 08:43:19ID:???
>>970
http://book.cakephp.org/ja/complete/92/%E7%BF%BB%E8%A8%B3
翻訳ビヘイビアというのがあってな
0985nobodyさん2009/03/07(土) 22:32:36ID:???
XSSの脆弱性が発見されたというのに、
なかなかバージョンアップこないね。
レス数が950を超えています。1000を超えると書き込みができなくなります。