【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
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から自分で作ればいいじゃん
そんなこともできないの?
バカなの?死ぬの?
0422nobodyさん
2009/05/30(土) 22:03:05ID:???classもidもないただのspanが勝手につくの?
prevとかnextはspanなんてつかないのに
なんか気持ち悪いから消したいんだけど、第2引数にarray('tag'=>false)を
入れても<span>〜</span>が<>〜</>になって消えないし
0423nobodyさん
2009/05/30(土) 23:09:09ID:???0425nobodyさん
2009/05/31(日) 17:48:45ID:???確かにRouter::url()使わないでURL指定するライブラリを公開されると苦労するが
421や423や424の言う通り、ここで叩くお前がおかしい
バカなの?死ぬの?
0426nobodyさん
2009/05/31(日) 18:26:41ID:???0428420
2009/06/01(月) 12:36:50ID:???ここで本当に俺の言ってることがあってるかどうか確かめたかったんだ。
やっぱりRouter::url()使うのが正解なんだね。死なないよ
0429nobodyさん
2009/06/01(月) 13:38:40ID:???0431nobodyさん
2009/06/01(月) 16:46:42ID:???専門板できもい言い回し使うから叩かれるんだろうが
普通に
Router::url()使ってないからルートに置かない場合に
不便なんだけど、修正提案出した方がいいかな?
とか聞けばいいものを
0433nobodyさん
2009/06/01(月) 18:57:16ID:QwyjBfuLarray("Post.created > DATE_SUB(NOW(), INTERVAL ? WEEK)" => "2"))
とかやるより、あらかじめPHP側で
array("Post.created >" => date('Y-m-d H:i:s', strtotime("-2 weeks"))
とやった方がいいの?
今までDATE_SUB使ってたんだけど、cookbookを見たら下の方を使っていたので
下の方にかき方変えようか迷ってるんだけど・・・
0434nobodyさん
2009/06/01(月) 19:22:13ID:???http://blog.ecworks.jp/archives/691
だそうですよ。よかったね修正してくれるって。でも直接言ってくれって。
0435nobodyさん
2009/06/01(月) 19:28:19ID:???ktailibraryの作者さんの大人な対応ぶりにはさらにビックリ。
やっぱりできるプログラマーは、違いますね!
0440nobodyさん
2009/06/02(火) 10:02:44ID:???それ以外のフォルダには以前からあるCMSのファイルやHTMLファイルがあります。
この状態で、calendar以外の場所、つまりappの外からcakeのモデルにアクセスすることは可能ですか?
0442440
2009/06/02(火) 19:04:30ID:???レスありがとうございます。
/calender にcakeをインストールしてイベント情報などを入れていて、
そのイベントのリストを別のディレクトリにあるページに表示したいんです。
feed経由やcakeを通さずに直接DBにクエリを投げる方法は思いつくのですが、
コントローラ内のアクションを通せば抽出も楽だし、
更に可能ならヘルパーやエレメントもそのまま使えないかな、と。
0443nobodyさん
2009/06/02(火) 19:33:15ID:???なんで別ディレクトリから読む必要があるのかわからないけど
cakeでcron動かす時の応用でなんとかなるんじゃない?
$_GET['url'] = "event/view/1";
require_once( "/home/hoge/www/calendar/index.php" );
ってしたらexample.com/calendar/event/view/1にアクセスしたのと同じことになるから
それで何とかならないのかな。
0444nobodyさん
2009/06/02(火) 20:09:02ID:???0445440
2009/06/02(火) 23:08:37ID:???サイト全体は既存のCMSで管理されているため、まるっとcakeにしちゃうことはできず、
/calendar 以下にappを構築して、他のディレクトリから必要に応じて使えればと考えました。
もしかすると何か根本的に考え方を間違えているのかもしれませんが…
>>443
お、なるほど。そんな手があるんですね。
画面遷移があるとまた一工夫必要っぽいですが、今回はこれでいけそうな気がします。
>>444
Ajaxで読み込むなら結構自由に何でもやれそうですね。
ただやっぱりクライアント環境に依存しないに越したことはないので、
まずは>>443の方法を試してみようと思います。
ありがとうございました!
0446nobodyさん
2009/06/02(火) 23:10:34ID:???0447nobodyさん
2009/06/03(水) 11:59:46ID:???0451nobodyさん
2009/06/04(木) 00:33:50ID:???0452nobodyさん
2009/06/04(木) 09:04:20ID:???0453nobodyさん
2009/06/04(木) 09:07:40ID:???↓
なまあたたかい
↓
ぞんざい
0454nobodyさん
2009/06/04(木) 19:04:13ID:???きれいに並べたいんだけどなんかないのですくわ
0455nobodyさん
2009/06/04(木) 20:16:55ID:???http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1874&forum=9
0458nobodyさん
2009/06/05(金) 16:59:50ID:???条件付の paginate したいときはコントローラー内で書くしかないのでしょうか。
何となく、SQL の発行とはかモデル内でやった方が良いかなぁと思うのですが、、
0460458
2009/06/05(金) 19:17:20ID:???ありがとうございます。
>>198-208
コンポーネントでやってみることにします。
私は何でもコントローラーに詰め込んでしまう傾向があるので、
MVC の基本から学んでみることにします。
0461nobodyさん
2009/06/05(金) 20:41:11ID:???0466nobodyさん
2009/06/05(金) 21:44:01ID:???http://www.infinity-blue.jp/archives/58
とっくの昔についてるわ
0468nobodyさん
2009/06/07(日) 23:06:58ID:IWMv9X2i回帰的にHABTMってできるんでしょうか?
例えばpostsなんてテーブルがあって、
posts_postsなんて結合用のテーブルを用意して、
一つのテーブルを回帰的に多対多にするとか。
無理?それとも不幸になる?
0469nobodyさん
2009/06/08(月) 00:56:23ID:???リンク押すとすぐに表示される場合もあれば、10秒くらいかかることもある。
キャッシュは使ってるんですが、なにかもっと速くする方法ないでしょうかね?
0470nobodyさん
2009/06/08(月) 01:10:18ID:???0471nobodyさん
2009/06/08(月) 13:14:53ID:???ttp://www.tonttu.net/tec/cakePHP/cakephpHABTMwith.html
これじゃね?試してないが
0472nobodyさん
2009/06/08(月) 15:41:57ID:???なんかネックになってるSQLがあって、10秒くらいかかってるんじゃね?
キャッシュが効いてる時はすぐに表示されると言うだけで
0474nobodyさん
2009/06/09(火) 19:13:55ID:???ビヘイビアで設定しても呼び出し方が分からず困ってます。
TreeBehaviorとか決まった名前のビヘイビアしか作れないのでしょうか?
0475nobodyさん
2009/06/09(火) 20:07:13ID:???0476nobodyさん
2009/06/09(火) 21:20:39ID:???複数のモデル内 => ビヘイビア
複数のコントローラ => コンポーネント
です。
名前は hoge ビヘイビアでも abesouri ビヘイビアでも何でも作れますよ。
あなたはコントローラー内でのモデルの使い方がいまいちわかっていないと思います。
0477nobodyさん
2009/06/10(水) 09:41:54ID:???>>476のようにcomponentで実装するのが良いでしょう
より簡単なやり方としては。
app_controller.phpで共通する処理を書いてあげると、すべてのcontrollerで利用できます。
※ただし、URLでアクセスされないように、function _hoge() のように _ をつけてね
0478nobodyさん
2009/06/10(水) 13:01:47ID:???テキストフィールドに文字列を入力してエンターを押しても候補が表示されず、
1文字削除すると、候補が表示されます。
どうすれば直るのでしょうか?
0479478
2009/06/10(水) 13:28:23ID:???何か対処法はないでしょうか・・・
0480nobodyさん
2009/06/10(水) 14:28:19ID:???レスありがとうございます。
呼び出し方として
モデル->ビヘイビア
ではなく
コントローラ->{モデル,ビヘイビア}
ということでしょうか?
おんなじ処理(たとえばPV集計など)を書くのにコンポーネントだとMVC的に間違っている気がするのですが
0481nobodyさん
2009/06/10(水) 14:29:41ID:???core.php内で設定する以外でお願いします。
0483482
2009/06/10(水) 15:39:30ID:???0484nobodyさん
2009/06/10(水) 15:44:47ID:???まだいまいち状況がつかめていないが。
共通の処理というのが特定のモデルを使うようなものであれば、
そのモデルを各コントローラーから呼んであげればよい
モデルを使わないのであれば、各コントローラーで処理する
各コントローラーの処理を共通化するのは>>476-477
0485nobodyさん
2009/06/10(水) 16:28:13ID:???どういう場面で使えばいいのかわかんなくて、一度も使ってないんだけど
0486nobodyさん
2009/06/10(水) 20:31:17ID:???必要無いものを無理に使う必要はないと思う。
■ このスレッドは過去ログ倉庫に格納されています