【PHP】フレームワーク CakePHP 6ホール目【v1.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/03/09(月) 10:55:37ID:3PTy4GqZ※sage推奨
※日本語マニュアルURLを貼るときは、http://book.cakephp.org/ja/view/1/ のようにしましょう(末尾のエンコードされたタイトル部分は不要)
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
0322nobodyさん
2009/05/05(火) 01:20:41ID:???0323nobodyさん
2009/05/05(火) 04:40:42ID:???0324nobodyさん
2009/05/05(火) 07:40:55ID:???http://hide.maruo.co.jp/swreg/price.html
0325nobodyさん
2009/05/05(火) 09:59:08ID:???今はどうか知らないけど
0327nobodyさん
2009/05/05(火) 15:19:29ID:???「PHP統合開発環境 PDT2入門」320ページ \2,940- 09/04/23発売ホヤホヤ
http://www.shuwasystem.co.jp/products/7980html/2257.html
0328nobodyさん
2009/05/05(火) 22:42:19ID:???0329nobodyさん
2009/05/06(水) 06:49:04ID:???ttp://www.amazon.co.jp/dp/4798022578/
出版社のリンクにしたと思われ
ttp://www.shuwasystem.co.jp/products/7980html/2257.html
0330nobodyさん
2009/05/07(木) 14:52:11ID:???http://bakery.cakephp.org/articles/view/release-cakephp-1-2-3-8166
0331nobodyさん
2009/05/08(金) 18:31:50ID:???ビューキャッシュは使わないってか使えない?
0332nobodyさん
2009/05/09(土) 23:04:16ID:???0333nobodyさん
2009/05/09(土) 23:14:46ID:???http://www.amazon.co.jp/dp/4839930651/
これを買うのが今なら一番だろう。
0334nobodyさん
2009/05/10(日) 09:48:31ID:???ビデオで学ぶcake入門(ブログチュートリアル)(2時間半)
ttp://d.hatena.ne.jp/i_ogi/20090418/1240044385
>>333 ↓この本、「今なら一番」は納得だけど、中級者向けじゃない?
ttp://www.amazon.co.jp/dp/4839930651/
0335nobodyさん
2009/05/10(日) 14:59:55ID:???0336nobodyさん
2009/05/10(日) 16:00:15ID:???否定することはないよ
0337nobodyさん
2009/05/10(日) 16:35:21ID:???0338nobodyさん
2009/05/10(日) 16:40:40ID:???0339nobodyさん
2009/05/10(日) 16:53:22ID:???さて、今回はどちらに軍配が上がるだろうか?
メディアとしての紙
http://www.kamiseikatsu.com/medi-top/
紙メディアの優位性
http://www.amy.hi-ho.ne.jp/kido/display.htm
0340nobodyさん
2009/05/10(日) 17:12:44ID:???その情報に対して何の貢献もしてないのに
本書いてる奴は少なくとも貢献してるけど
0341nobodyさん
2009/05/11(月) 10:19:47ID:???これって、
たとえばtitleフィールドで検索するとき、すべての言語のtitleを対象にしてくれたりするのでしょうか?
それとも、自前でJOINする必要がありますか?
0342131
2009/05/12(火) 06:50:00ID:???paginator paginate を使ったページングに関して、
ハマった後に解決したのでメモ書きとして投稿させてください。
すいません、質問ではなくメモです。
cake_1.2.3.8166
・やりたい事
URLのパラメータを検索条件として、
← 1 2 3 ... 13 14 →
のようなページングを行いたい。
←→の矢印は"最初最後"ではなく、"前の次の"という遷移になります。
・準備
まずは基本的な事を学ぶために、ここを見ました。↓
http://www.cpa-lab.com/tech/Paginator%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9%e3%80%82CakePHP1.2
次に、サンプルが載ってるここを確認。↓
http://www.spokslog.com/book/paginator_tests/preview/
やりたい事は6番目。
思いっきりバグがあるとか書いてあるし、
確かにその通りやっても上手く出来なかった。
次に続く・・・
0343131
2009/05/12(火) 06:53:20ID:???コントローラ側
// BETWEENの値がURLパラメータより引き出した数字。
$this->paginate = array('conditions' => array(
'A.a BETWEEN ? AND ?' => array(5, 10),
'A.delflag = ' => 0,),
'limit' => 20,
'order' => array('A.modified' => 'DESC'),);
$this->set( 'list', $this->paginate );
ビュー側
$page = null;
$page .= $paginator->prev('←',array(), null, array( 'class' => 'blockToInline' ));
$page .= ' ';
$page .= $paginator->numbers( array(
'url' => $this->passedArgs,
'modulus'=>2,
'separator'=>' ',
'first'=>1,
'last'=>1,));
$page .= ' ';
$page .= $paginator->next('→',array(),null,array( 'class' => 'blockToInline' ));
echo $page;
後はlistで適当に。
矢印部分はページの状態によって、DIVタグが勝手に入って改行されてしまうため、
クラスをblockToInlineとして、CSSでインライン要素にしてます。
次に続く・・・
0344131
2009/05/12(火) 06:55:37ID:???ページリンク前半部、1 2 3 辺りはURLパラメータを引き回せるんだけど、
←や...以降の12 13 14 → などは引き回せずに、条件無しで全件になってしまう。
prev や next にnumbersと同じurlオプション付けても上手く動かず。
・調査
cakePHP paginator などで検索したあと、セッション使えとかなんか色々やってみたけど、結局出来ず。
・解決方法
numbersのurlオプションを、prev前に$paginator->optionsに設定する。
$page .= $paginator->options( array('url' => $this->passedArgs,));
numbersのurlオプションは外すが、modulusやfirstなどのオプションはnumbersのまま。
全部optionsに変更したら上手く動かなかったような気がする。
コントローラ側は特に変更なく、
最終的なビュー側のコードはこうなりました。
$page = null;
$page .= $paginator->options( array('url' => $this->passedArgs,));
$page .= $paginator->prev('←',array(),null, array( 'class' => 'blockToInline' ));
$page .= ' ';
$page .= $paginator->numbers( array(
'modulus'=>2,
'separator'=>' ',
'first'=>1,
'last'=>1,));
$page .= ' ';
$page .= $paginator->next('→',array(),null,array( 'class' => 'blockToInline' ));
以上です、長々と失礼しました。
私ほどのバカモノは居ないと思いますが、
似たような事でハマっていた方が居たら是非参考に・・・。
0345nobodyさん
2009/05/14(木) 00:10:00ID:???0346nobodyさん
2009/05/14(木) 00:55:00ID:???0347nobodyさん
2009/05/14(木) 02:03:18ID:???こんなとこに書いてもすぐdat落ちするし再利用性無い
0348nobodyさん
2009/05/17(日) 17:53:26ID:???モデル名で取得する方法ってありますか?
0349nobodyさん
2009/05/17(日) 18:51:58ID:oOtRNQgA吐かせるにはどうしたらいいんでしょうか?
http://www.syuhari.jp/blog/archives/168
この辺を参考にafterFilterで文字コード変換しているのですが、エラーページの場合は
app_controller通らないので、UTF8のまま表示されてしまいます
(html側のエンコード指定はSJISなので、文字化けした状態です)
0350nobodyさん
2009/05/17(日) 18:54:10ID:???どうしてもsjisにしたいならapacheで設定する
方法は2つ
1.404時の出力ファイルをPHPスクリプトにする
2.404時のヘッダのエンコード設定をsjisにする
検証はしていない
0351nobodyさん
2009/05/17(日) 21:26:25ID:???0352nobodyさん
2009/05/17(日) 21:40:34ID:oOtRNQgA>>350
1だと、ちょっとスマートではない気がするので、できればCake内で解決したいです
2のヘッダですが、ヘッダ自体はSJISにしているのですが、データの中身はUTF8なので
文字化けしているという状況です
>>351
app/error.phpの中でもafterFilterは効くのでしょうか?
ちょっと試しに書いてみたのですが、動かないようです・・・
error.phpのサンプルがあまり無いため、よくわからないのですが
function error($params)を書いて、その中に処理を書くべきなのでしょうか?
0353nobodyさん
2009/05/17(日) 22:18:17ID:???じゃあsjisにすればいいんじゃないの?
404ページはapacheがデフォルトで持ってるhtmlファイルが出てるだけでしょ
0354nobodyさん
2009/05/17(日) 22:38:31ID:oOtRNQgAcakephpの404ページはviews/layout/default.ctpの中に
views/error/error404.ctpが入ったモノが表示されるはずです・・・
0355nobodyさん
2009/05/18(月) 01:07:59ID:???if($this->RequestHandler->isMobile()){
echo mb_convert_encoding(parent::render( $action, $layout, $file ),"SJIS","UTF-8");
exit;
}
echo parent::render( $action, $layout, $file );
exit;
}
renderをapp_controllerで上書きすりゃえんじゃね。
0357nobodyさん
2009/05/18(月) 20:26:30ID:???そのアクション中でcontroller->set()されたものがビュー(エレメント)内で使えない。
これは元のコントローラでセットしろと言う事?
コードのまとまりが悪くなっちゃうと思うんだけど。
0358357
2009/05/18(月) 20:27:41ID:+BNQiVp5requestAction()の呼び出し元のビューでもそうだし、
そのエレメント内でもそう。
つまりrequestAction()で呼び出されたアクション中ではcontroller->set()が機能してないって事だと思う。
0359357
2009/05/18(月) 20:45:14ID:+BNQiVp5ビューから
View->element(hoge,array('hoge'=>View->requestAction()));
と言う形でエレメントを描画しようとしたら
この形で呼び出したrequestActionではエレメントでも呼び出し元ビューでも
set()された変数がundefinedになるというもの。
requestAction()はコントローラからも呼び出せるが
MVC的にはビューから呼び出すのが正しいはず。
0360357
2009/05/18(月) 20:51:41ID:???element()の引数で渡すか完全にレンダーして返せと言う事か
とりあえずやりたい事は出来そうお騒がせしました
0361nobodyさん
2009/05/18(月) 21:06:16ID:???0362nobodyさん
2009/05/18(月) 21:07:00ID:???0363nobodyさん
2009/05/19(火) 03:27:27ID:???0364nobodyさん
2009/05/19(火) 20:44:37ID:???cakeで作ったページにアクセスすると、表示されなくて、そのまま更新すると500エラーが出てしまう。
Apacheのログ見たら、最初表示されない時は304、更新した時は
PHP Fatal error: Cannot redeclare class debugger in 〜\\cake\\libs\\configure.php on line 302, referer: http://ローカルのアドレス
というのが出る。
debuggerの再定義をしてるよー、っていうエラーなのは判ったんだけど、
どう対応すればいいかわからん!!
Apc導入してる人いる?
0365nobodyさん
2009/05/19(火) 22:08:47ID:EQ1qWtUAhttp://www.1x1.jp/blog/2007/04/cakephp_sql_log.html
http://d.hatena.ne.jp/kusakari/20080903/1220429833
これ意外でもうちょっとスマートな方法はない?
デバッグモードで動くコンポーネントとかは結構あるけど、
本番環境でログとれるのは見つからなかった。
>>364
知り合いがcake + APC使ってたけど、特にそういう話は聞いたこと無いな。
今度このスレ見せてみるわ
0366nobodyさん
2009/05/20(水) 11:13:28ID:???なんかいいのないの?FileHandlerは2007年に作って更新とまってるっぽいんだけど。
0367nobodyさん
2009/05/20(水) 14:19:38ID:???0368nobodyさん
2009/05/20(水) 19:42:48ID:???app_modelにバリデーション処理を書いて、
コントローラーで普通にcopyすればいいんじゃない?
私はそうしてるけど。
0369nobodyさん
2009/05/20(水) 20:02:44ID:???何か合理的な意味があるんでしょうか?
使いにくくて仕方なかとですたい
0370nobodyさん
2009/05/21(木) 00:45:17ID:???0372nobodyさん
2009/05/21(木) 11:51:39ID:???コンディションっつうのはつまりプライマリキーのことです
find の感覚で、第1引数にIDを渡しちゃうんです。
まぁ、慣れればどってこと無いのかもですが。
それに、column を指定しないことはあっても id を指定しないことなんて
滅多と無いんだから、普通に考えたら id を第1に持ってきそうな
気がするんですよ。
だけど、それは私がよく知らないからであって、ひょっとしたら深い意味があるのかなと。
0373nobodyさん
2009/05/21(木) 12:31:53ID:???idは事前に$this->Model->id = xx とかで指定しておくと第2引数のidも省略可でしょ。
そうなるとreadメソッドにとって大事なのはむしろfieldの方である。
とかそんな感じなんじゃないすかね。
0375nobodyさん
2009/05/21(木) 23:32:33ID:???1.2と
めちゃめちゃ違うの?
1.1の本、買っちゃったんだけど?
0376nobodyさん
2009/05/22(金) 00:16:48ID:???実際使ったことないけど、その界隈のブログだとか、スレ読んでると、かなり違うっぽいけど。
RCと正式版とも結構違うとか書いてあったような。
1.1でアプリケーションを組みつつ、1.2の違いを調べながら、問題あるようなら1.2の本買えば?
0377nobodyさん
2009/05/22(金) 00:40:30ID:???まあ基本の動作はそんなに変わってないだろうけど、
1.1で普通にやってたことが1.2では非推奨になってたりとか、
一所懸命なんか作ったはいいけど、1.2なら最初っからその機能あるじゃん。みたいなことはあるから。
まあ動きは本で学んで、あとはオンラインマニュアルで。ってのでいいかもしれんけど。
0378nobodyさん
2009/05/22(金) 01:00:50ID:???0379nobodyさん
2009/05/22(金) 02:38:39ID:kpKonnkDお金に余裕あるのなら1.2の本を買って先に読んだ方がいい
1.1を最初に学ぶと、後から学びなおしの部分が多い
0380nobodyさん
2009/05/22(金) 06:46:23ID:???> 1.1の本、買っちゃったんだけど?
多分、これ買っちゃって悩んでるんだと思うけど
「CakePHPガイドブック」
http://www.amazon.co.jp/dp/4839924317/
1.1と1.2はだいぶ違うとおもう
まず、1.2の本を先に読んだ方が良いとおもう
今のお勧めはこれかな
「CakePHPによるWebアプリケーション開発」
http://www.amazon.co.jp/dp/4798022225/
1.2がある程度理解できてから「CakePHPガイドブック」のおいしい所を頂けば良いのでは
0381nobodyさん
2009/05/22(金) 06:50:42ID:???1.2ですらそう思う場面は出てくる
内容はかなり変わってるよ
0383nobodyさん
2009/05/22(金) 13:16:01ID:???0384nobodyさん
2009/05/22(金) 15:57:38ID:???0385nobodyさん
2009/05/23(土) 21:10:11ID:???CakePHPによる実践Webアプリケーション開発(毎日コミュニケーションズ)
どっちも上でおすすめされてるけど、1冊選ぶならどっち?
ネットで調べた感じだと、秀和→初〜中級向け 毎日→中級向け なイメージ。
毎日はサンプルにエラー多数っぽい。秀和はここ以外レビューとか全然見つからない、で悩み中。
今回フレームワーク初めてで、とりあえず本家チュートリアルは問題なく分かった。
ただ実際にアプリ組もうとするとわかんないことばっかりで
Cake使わなければ2日でできるようなものに1週間弱かかったり。なんで基礎からやり直すことにした。
ポケットリファレンスは買うつもりなんだけど、あと1冊
とくに両方読んだ人、どっちにするべきか教えてちょ。
0386nobodyさん
2009/05/23(土) 21:33:00ID:???実際に使えるアプリをサンプルとして挙げているので、サンプル開発の流れがきちんと追えれば
実際のプロジェクトにも十分応用できると思う。
逆に秀和の方、1回読んだきりだ。
0388nobodyさん
2009/05/25(月) 00:22:40ID:???ログイン用のフォームを複数画面のはじっこに出しておきたいんだけど、cakeだとめんどくさいでしょうか?
おとなしくuser/loginに飛ばすのが一般的でしょうか?
0389nobodyさん
2009/05/25(月) 01:01:07ID:???別にめんどくさくないですよ。
Authでログインされてなければフォーム表示させればいいだけだから。
エレメントでも作っておけばいいです。
0391nobodyさん
2009/05/25(月) 04:48:35ID:???0392nobodyさん
2009/05/26(火) 07:44:05ID:???こういう仕様?
0393nobodyさん
2009/05/26(火) 08:04:19ID:???loginactionをコントローラ別で振り分けてやればいのね。
便利なんだか不便なんだかいまいちだなぁ。
0395nobodyさん
2009/05/26(火) 13:30:49ID:SiC5Hm3yttp://3d.rokujyou.com/cake/sample7.html
<?php echo $html->input('Urllist/url', array('size' => '40'))?>
の部分を
{$form->input('Urllist/url')}
としたのですがinput内にURLが表示されません。
cakephpのみのテストでは表示されていたのでsmartyが変な処理をしている?ようなきがします。
ご教示お願いします。
0396395
2009/05/26(火) 14:11:09ID:SiC5Hm3y{$form->input('url',array('value'=>$urllist.Urllist.url))}
Smarty導入前は書かなくても表示されたので別の方法がありましたらご教示ください。
*array('value'=>$urllist.Urllist.url)の部分はエラーが出ますので実際はcall_user_func_arrayで加工してあります。
0397nobodyさん
2009/05/26(火) 17:38:03ID:EqLrLRVDfindでセッション情報を読みたいのですが、
dataカラムの、シリアライズされた文字列を、
アンシリアライズして配列に格納するにはどうしたらよいでしょうか?
unserialize()関数を使ってみましたが、Error at offsetというエラーが出て失敗します。
散々ググりましたが、良い手が見つかりません。
どなたか知恵を貸して下さい。
CakePHPのバージョンは1.2.2.8120で、PHPのバージョンは4.4です。
0398nobodyさん
2009/05/26(火) 19:36:17ID:???アンシリアライズできるんじゃね?
0399397
2009/05/26(火) 19:55:53ID:EqLrLRVDエンコードはUTF8で統一しています。
cake_sessionsテーブルのdataカラムから読み出した文字列を入れると、
下記のような関数の実行と結果になります。
unserialize('Config|a:4:{s:9:"userAgent";s:0:"";s:4:"time";i:1243350003;s:4:"rand";i:1783651587;s:7:"timeout";i:10;')
↓
unserialize() [function.unserialize]: Error at offset 0 of 102 bytes
0400nobodyさん
2009/05/27(水) 08:53:05ID:???いま、まともに動いているプロジェクトって wildflower ぐらい?
0401nobodyさん
2009/05/27(水) 15:15:10ID:???<?php echo $form->day('DATE', null, array("disabled"=>true));?>
などとして、読み取り専用で表示されるようにしたいのです。
このような書き方で、表示上は確かに読み取り専用になるのですが、
上記を含むformのsubmitを実行すると、真っ白な画面が表示されてしまいます。
何か書き方が悪いのか、代替案があるのか、ご指導いただければと思います。
0403nobodyさん
2009/05/27(水) 15:43:24ID:???エラーが何も出ていないんです・・・。
blackHoleメソッドが呼ばれている気がするのですが、別にrequireAuthも
設定していないんですよね・・・。
0404401
2009/05/27(水) 15:46:52ID:???textareaなど、readonly属性があるものは、
$form->textarea('aaa, array("cols"=>40,"rows"=>5,"readonly"=>true));
などと書いて問題なく実現できています。
selectだけが動作しない状況です。
0405nobodyさん
2009/05/27(水) 17:39:47ID:???Configure::write('debug', 0);
とかになってない?
0407401
2009/05/27(水) 20:12:40ID:???Configure::write('debug', 2);
となっています。
>>406
すみません。
表示→submitの一連の流れが実行できるかという話です。
そもそもやりたいことというのが、
入力→確認→save
という一連の流れで使用するviewを同一のもので使いまわしたく、
readonly,disabledを使って表示の制御ができればいいかなと思ったのです。
暫定的に確認用のviewを用意することで回避はしますが、可能であれば
同一viewでやりたいと思っていますので、もしも情報ありましたらお教え
いただければと思います。
0408nobodyさん
2009/05/27(水) 21:22:37ID:???controllerファイルとviewファイルで文字コードが食い違っとる
exit;の消し忘れ
bomの混入
...あたりを疑ってみれ
0409nobodyさん
2009/05/28(木) 17:57:49ID:???記事とタグは 多対多
記事とコメントは 一対多
これをContainable使ってあるタグに属してるニュースをコメントごと取ってきたいです。
$option['contain']['Tag']['conditions'] = array('id' => $tag_id);
$option['contain']['Comment']['fields'] = array('name', 'comment', 'created');
$option['fields'] = array('News.contents');
$data = $this->find('all', $option);
これだと、タグに属して居ないにもかかわらずTagの中身がEmptyになった状態で検索に引っかかってしまいます。
何かいい方法はないのでしょうか。
0410nobodyさん
2009/05/28(木) 17:58:51ID:???0 =>
array
'News' =>
array
'contents' => string 'テスト' (length=16)
'id' => string '1' (length=1)
'Comment' =>
array
0 =>
array
...
1 =>
array
...
'Tag' =>
array
empty
このような状態です。
0411nobodyさん
2009/05/28(木) 20:18:29ID:???$option['conditions'] = array('NewsTag.tag_id' => $tag_id);
にしてやればいいと思うよ。
0412nobodyさん
2009/05/29(金) 02:26:31ID:???って本。
なんのために存在するのか、
まったく意味がわからない。
なにこの本。
0413nobodyさん
2009/05/29(金) 02:42:09ID:???0414nobodyさん
2009/05/29(金) 10:26:09ID:???0415nobodyさん
2009/05/29(金) 18:13:09ID:???URLはhttp://example.com/hogehoge/
で、hogehogeコントローラが呼び出されるでおk?
今試してみたんだが、ページが真っ白orz
エラー設定もconfigでできるのかな
0416nobodyさん
2009/05/29(金) 19:36:41ID:???コントローラは複数形
真っ白なのはCake設置の段階で何かが間違ってる可能性が高い
とりあえずブログチュートリアルでもやれ
0417nobodyさん
2009/05/29(金) 21:43:45ID:???0418nobodyさん
2009/05/29(金) 23:54:37ID:???Xpath使えないんだったら、普通にSimpleXML使うよなぁ・・・
PHP4でも使えるのはでかいけど。
0419nobodyさん
2009/05/30(土) 16:05:50ID:???ケータイサイト向けだと使いにくすぎる
せっかくの自動生成なのに、ケータイのアホ仕様のせいで!
>>418
SimpleXMLが十分便利なのでそっちつかっちゃうな
0420nobodyさん
2009/05/30(土) 17:20:34ID:???ここで出されてるライブラリ使ってるんだけどさ、
画像表示おかしくない?
相対URL生成する時はちゃんとRouter::url()通してくれないと
/~hoge/hugaとかに置いてる時におかしくなるんだよね。
バカなの死ぬの
0421nobodyさん
2009/05/30(土) 21:33:58ID:???使えないライブラリだと思うんなら自分で修正するか、他を探すか
1から自分で作ればいいじゃん
そんなこともできないの?
バカなの?死ぬの?
■ このスレッドは過去ログ倉庫に格納されています