【PHP】フレームワーク CakePHP 7ホール目【v1.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/09/01(火) 16:12:06ID:XVdxsVut※sage推奨
テンプレは>>1-5くらい
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
thechaw
http://thechaw.com/projects
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
CakeMatsuriTokyo2009
http://matsuri.cakephp.jp/
0552nobodyさん
2009/12/05(土) 17:02:56ID:???0553nobodyさん
2009/12/05(土) 17:16:25ID:???0556nobodyさん
2009/12/05(土) 18:31:24ID:???0557nobodyさん
2009/12/05(土) 18:32:47ID:???ごめん。よく読み直した。
正攻法は、既定のControllerを列挙してRoutingで、それぞれのControllerに飛ばし、マッチしなかったらCategoriesControllerに飛ばす
(ちなみにResistControllerではなく、UsersControllerのregist アクションかな)
ただ、それだと、category登録時にURLとかぶってないかチェックする必要があると思うので、/a/regist のように固定のサブディレクトリを用意しておいたほうが良いかも
0559nobodyさん
2009/12/05(土) 18:56:21ID:???ありがとう。でも、rhacoがいいの。conveyor使ってみたくて。
http://conveyor.rhaco-users.jp/
0560nobodyさん
2009/12/05(土) 23:11:46ID:???0561nobodyさん
2009/12/06(日) 00:01:20ID:???0562nobodyさん
2009/12/06(日) 00:25:38ID:???0563nobodyさん
2009/12/06(日) 01:13:24ID:???0565nobodyさん
2009/12/06(日) 17:58:06ID:???adminで作ったら
admin用フィルター
admin_beforeFilter
普通用フィルター
beforeFilter
みたいに実行してくれないのですか?
自分で呼ばれたurlを解析して
beforeFilterの中で分岐させないと無理?
0566nobodyさん
2009/12/06(日) 18:15:52ID:???admin_beforeFilter の発想は無かったわ
でもurlを解析する必要はない
debug( $this->params ) せよ
0567nobodyさん
2009/12/06(日) 19:20:01ID:???なるほどっっっ!
$this->params['prefix']
で、取れるのねっ!!
でも、appをできるだけシンプルにしたいから、
cakeのdispatcherに
$controller->beforeFilter();
↓
$prefix = isset($controller->params['prefix']) ? $controller->params['prefix'] . '_' : '';
$controller->dispatchMethod($prefix . 'beforeFilter', null);
ってしてみちゃった!
どうなんだろうなぁ。
cakeに手を加えるのは・・・
自分の使いやすいようにcakeが進化していくのはいいけど、
cakeが新しくなったときに、大変だよなぁ。。。
0568nobodyさん
2009/12/06(日) 19:47:35ID:???[Message] => Array
(
[auth] => Array
(
[message] => ログインできません
[layout] => default
[params] => Array
(
)
)
)
が入るんですけど携帯用URLでログインNGの時は上記メッセージが入りません。
どうすればよいでしょうか。
0570ホクホクバカ ◆YMCgTirJag
2009/12/07(月) 01:15:39ID:???おれはmixi踏襲版
0572nobodyさん
2009/12/07(月) 12:42:06ID:???0573nobodyさん
2009/12/07(月) 13:35:03ID:???姉歯みたいにならないようにきっちり作り込んでおけばあとはそれをコピペで
サイト大量に作れて便利。
0574ホクホクバカ ◆YMCgTirJag
2009/12/07(月) 21:00:08ID:???これ作って意味があるのだろうか・・って
0575nobodyさん
2009/12/07(月) 21:19:56ID:???0576nobodyさん
2009/12/08(火) 00:35:07ID:???勉強になるよ。
完全オリジナルで作りたいのは技術者として当然だけど、
人のものをまねることにより、学ぶものが大きい。
0577nobodyさん
2009/12/08(火) 00:37:50ID:???業務でもそこそこ使われてるから、いいんじゃね
0578nobodyさん
2009/12/08(火) 00:38:19ID:???まぁ、フレームを踏襲しても中身がオリジナルだったらいいんじゃないか
0579nobodyさん
2009/12/08(火) 01:12:56ID:???irc#cakephp(注:英語)でどんなにコアな質問してみても答えが大抵1分以内に返ってくる。
あそこはヤバい
0580nobodyさん
2009/12/08(火) 01:22:23ID:???0581nobodyさん
2009/12/08(火) 01:34:37ID:???viewのエレメントからrequestActionするのが考え方としては一番スッキリするんだけど、
重くなっちゃいますかね?
0582579
2009/12/08(火) 01:35:24ID:???そんなの書けるわけねーだろ!英語だぜ、英語!
中一の英語を読むことすらできねーのによ!!
ニューホライズンは一冊目で挫折したよ!!
ちょっと格好つけたかっただけだよ!空気嫁!!ったくよ!!
0585nobodyさん
2009/12/08(火) 02:02:11ID:???なんでjoinモデルはAppModelのインスタンスで生成されるん?とか
とりあえずコアライブラリに突っ込んだ内容でも余裕。
0587nobodyさん
2009/12/08(火) 02:06:12ID:???http://www.google.co.jp/search?q=YMCgTirJag&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
だれ?
0588nobodyさん
2009/12/08(火) 02:10:21ID:???tyuushakusかな。
0589nobodyさん
2009/12/08(火) 03:27:02ID:???俺はrequestaction。ちょうど今、ブログ作ってます。
にしてもカレンダーがネックだね。
ライブラリがいいのがない。
0590nobodyさん
2009/12/08(火) 21:19:18ID:???アップロードするディレクトリをドキュメントルート外にしたりできるのかな?
0591nobodyさん
2009/12/09(水) 04:13:39ID:???0592nobodyさん
2009/12/09(水) 11:53:52ID:???プログラムを通すのかな?
画像を大量に表示するときなんか、
すごい負荷かかりそうだけど・・・
0593nobodyさん
2009/12/09(水) 12:15:39ID:???馬鹿か?
死ぬか?
0594nobodyさん
2009/12/09(水) 12:21:34ID:???> 画像を大量に表示するときなんか、
> すごい負荷かかりそうだけど・・・
大量って、どのくらいの数を言っているのか?
0595nobodyさん
2009/12/09(水) 12:27:26ID:???何をそんなに怒ってるのかわからないけど・・・
初回はプログラム通して、画像表示+キャッシュ生成
二回目からは直接表示、とか
mod_rewrite使えばできるでしょ。
>>594
アマゾンとかの検索結果くらい?
0596nobodyさん
2009/12/09(水) 12:36:16ID:???大量の画像表示といっても、人気無いサイトなら負荷も一過的であまり問題にならないのでは。
それより、大量画像表示で気をつけないといけないのは、回線に負荷をかけるという事だよな
0597nobodyさん
2009/12/09(水) 14:09:58ID:???回線負荷という意味では、etagとかHTTP304ステータスコード(Not Modified)とかを自前実装する必要があるよね
media pluginは使ったこと無いからどうなってるか知らんが
0598nobodyさん
2009/12/09(水) 15:07:13ID:???モデル名はcategory、プロパティでcategoriesテーブルを指定しないと駄目なんだよね。
0599nobodyさん
2009/12/09(水) 15:18:03ID:???0601nobodyさん
2009/12/09(水) 16:32:48ID:5lohRgzm0602nobodyさん
2009/12/09(水) 17:09:58ID:/sBQ8GaXError: Database table boards for model Board was not found.
と、boardの複数形boardsテーブルを探しに行ってしまうようです。
複数形じゃなくてboardを見に行かせるにはどうすればいいのでしょうか?
0603nobodyさん
2009/12/09(水) 17:13:16ID:???0604nobodyさん
2009/12/09(水) 17:13:56ID:???テーブル名をboardsにすべきじゃないかなぁ
0605nobodyさん
2009/12/09(水) 17:19:38ID:???糞な掲示板なんか作る前にマニュアル読むかシネ
0606602
2009/12/09(水) 20:35:39ID:???できました。ありがとうございます。
CakePHPってMS SQL Serverとあんまり愛称よくないですね・・・
改善してほしいな
0607nobodyさん
2009/12/09(水) 20:43:40ID:???0608602
2009/12/09(水) 20:51:30ID:???とか出たり。
lastError()のmssql_get_last_message()のとこコメントアウトしてreturn;しちゃいましたけど・・・
0609nobodyさん
2009/12/09(水) 20:57:19ID:???0610nobodyさん
2009/12/09(水) 21:09:35ID:???メディアをドキュメントルートから外すのは普通にやると思うよ。
そのため(ってわけでもないけど)にcakephpにメディアビューも内蔵されてるんだし。
0611nobodyさん
2009/12/10(木) 00:07:13ID:???メディアビューで、サムネイル画像50枚くらい一度に表示したら、
ちょっともっさりしてたよ。
やっぱキャッシュは必須かも。
0612nobodyさん
2009/12/10(木) 00:19:57ID:???サイトのポリシーにもよるだろうけど、
普通に画像を置くより明らかに重くなるのは目に見えてるしね。
俺はダウンロードのカウントが必要だったり、
ACLでアクセス制限したかったりそういう部分ぐらいしか使わないけど。
0613nobodyさん
2009/12/11(金) 11:26:59ID:???どこにまとめてますか?
シェルからコンポーネント使うのもバッドノウハウっぽいですし・・・
0614nobodyさん
2009/12/11(金) 12:57:55ID:???0615nobodyさん
2009/12/11(金) 13:15:32ID:???現在はその方法にしてます。
でもモデルに関係しない処理もあるので・・・
あと、コントローラからシェルを呼んだりすることもできるんでしょうかね?
何かの登録処理後、さっそく一回目のCRONを実行する、
みたいな処理を想定しているのですが・・・・
0616nobodyさん
2009/12/11(金) 13:27:46ID:???いや俺cakeのシェル使った事ないから専用の呼び方があるのかどうかは知らないけど。
0617nobodyさん
2009/12/11(金) 14:57:03ID:???って感じかねー普通に。
0618nobodyさん
2009/12/11(金) 17:51:36ID:???Cool!なやり方はありますでしょうか?
0619nobodyさん
2009/12/11(金) 18:14:38ID:???shellから使うときもあるかも。な処理はコンポーネント化しないようにしてる。
shell起動は、上にも書いてある用に``とかexec系だけど、
バックグラウンドで処理して欲しいと気が多いから(つまりshellの返答を待って欲しくない)
その時は/dev/nullと&使って呼び出してる
0620nobodyさん
2009/12/12(土) 04:39:04ID:???http://localhost/admin/host/modify/[ID名]
として、その中でformを
<?php echo $form->create('', array('method' => 'post', 'action' => 'regist', 'enctype' => 'multipart/form-data', 'url' => array('admin' => true))); ?>
こんな感じで指定すると、なぜか
actionが
/host/regist/admin:1
となってしまいます。
なぜか、$formの中の$option['action']['id']に、'admin' => trueが1として入ってしまい、
adminがprefix扱いでなくなってる。。。
[ID名]を入れなければ正常なんですが・・・
散々迷走して、
'url' => array('id' => '', 'admin' => true)
と追加すれば、
正常に動作することがやっとわかったんですが、
これは一体なぜ???
不可解です。。。
0621nobodyさん
2009/12/12(土) 12:42:02ID:???順調に開発が進んでいると思いきや、
ちょっと複雑なフォームになると、もうにっちもさっきもいかなくなる。。。
でも、バリデーションというめんどくさいフォローを考えると
それでも、ヘルパーを使い続けてしまう・・・
リスト形式のページで、チェックしたレコードだけ、処理をしたい。
とか書こうとしているのにうまくいかん(+_+くそーー
チェックボックスだけで3時間はつぶしているぞー
0622nobodyさん
2009/12/12(土) 13:55:41ID:???複雑なフォーム というのはユーザビリティも悪くなるので
フォームヘルパーで対応できるようなフォームを作るといいと思うんだけど。
どうかな。
0623nobodyさん
2009/12/12(土) 14:23:04ID:???へえ、それで解決するんだ。
以前さんざんはまって、結局$paramsのURLをそのまま書き出したよ。
formヘルパーの逆URLルーティングはID絡むからか通常の$html->url()とは挙動が違うんだよね。
0624nobodyさん
2009/12/12(土) 18:06:21ID:???Cakeめんどくせえなあ
っておもう
0625nobodyさん
2009/12/12(土) 22:10:57ID:d/+O720A0626nobodyさん
2009/12/13(日) 22:39:17ID:???0627620
2009/12/16(水) 00:15:50ID:???きっとできるはずだ!と信じたけど、できなくて、、
でも、やっぱオープンソースの強みだね。
いざとなったらソースを見て回避方法を探せる。
同じidだけど、urlのidとactionのidがcakeの中で混同しているっぽいのよね。
idを消すと動くから。
だから、urlから必要のないidを消したら使えるんじゃないかしら。
と思って消す方法を探してみた。
けど、やっぱ階層がもういっこ深くなるとだめそうやね・。・・
0628nobodyさん
2009/12/17(木) 21:07:57ID:???cakePHPってどう?いい感じ?
0630nobodyさん
2009/12/18(金) 12:14:10ID:???newするときなんですけど、クラス指定でなく、クラス名指定でできないものですか?
たとえば「Test」modelをnewするときは普通は
$model = new Test();
としますが、これを
$model = new Model('Test'):
みたいな感じで、クラス名の文字列を指定すると、そのクラスのインスタンスが生成されるようにしたいのです。
カスなのでググってもわかりませんでした。このカスにどなたか教えてくださいませ。
0633nobodyさん
2009/12/22(火) 02:18:31ID:???0634nobodyさん
2009/12/22(火) 03:08:50ID:???0637nobodyさん
2009/12/29(火) 09:52:46ID:???0638nobodyさん
2009/12/29(火) 14:36:18ID:???0639nobodyさん
2009/12/29(火) 22:40:01ID:???http://cakephp.org/
PHP framework
---
って文章をautoLinkUrlsさせると、PHPまでリンクになっちゃうんだけど、
改行コードもリンクされるのは仕様?
コアのコード読んでみたんだけど、preg_replace_callbackがイマイチ理解できなくて
どの辺を修正するべきかよくわからん。
0640nobodyさん
2009/12/31(木) 13:12:15ID:???元の画面に戻ってくるのですが、
fileコンポネントはデータがクリアされてしまいます。
セキュリティの関係でたぶん引きづくのは無理かなーとかんぐって、
今はsessionで保存しておいてvalidationで差し戻しされたときはそこから呼び出すことに
しようかなぁ。と思っているんでけど、fileが空欄の表記になってしまうのが難点・・・
なんかもっと画期的な、とか、定石な手段をご存知だったら教えてくださいー。
みんなはどうしてるんだろう。
0641nobodyさん
2009/12/31(木) 15:59:32ID:???fileはvalueを指定できないからね。ページ遷移してる限りfileを入れた状態で
表示するのは難しいのではないでしょうか。
できるかわからんが、アップロードだけは完了させてしまいfileは表示しないとか?
0642nobodyさん
2009/12/31(木) 16:39:52ID:???http://cakeforge.org/frs/?group_id=23&release_id=449
をダウンロードし設置したら、バージョン表示が「1.2.4.8284」でした。
これで正しいのでしょうか?
また、1.2.5があるのなら、どこからダウンロードすれば良いのでしょうか?
0643nobodyさん
2009/12/31(木) 18:05:08ID:???validationエラー時にアップロード済の場合、
ファイル名とかサムネイル + 削除リンク表示。
削除リンクをクリックするとfileが表示されるとか。
fileのvalueを指定はセキュリティ的に無理。
cake関係ないけど。
0644nobodyさん
2009/12/31(木) 18:16:55ID:???http://github.com/cakephp/cakephp1x/blob/master/cake/config/config.php
たしかにそうみたいだね。
cake/VERSION.txt には 1.2.5って書いてあるから、それで確認すればOK
0645nobodyさん
2009/12/31(木) 19:31:56ID:???ありがとうございます。1.2.5で間違いないようですね。安心しました。
09/9/8に1.2.5がリリースされているのですね。
http://bakery.cakephp.org/categories/view/1
/cake/config/config.phpを自分で1.2.4.8284→1.2.5に変更しておきました。
1.2.5.と表示される様になりました。
0646640
2010/01/04(月) 00:11:40ID:???>>641
ありがとん。
アップロードは必須項目なので、
結局、ファイルを指定して、サブミットしたら、
バリデーションで差し戻し食らっても、画像だけは、
プレビュー画面を表示して、アップロード済みにすることにしました。
変更したければ、もう一度ファイルを指定して、アップロードしなおす
という感じで。。。
なんとか様になりました。ありがとー
実装直後、
アップロード→セッションに保存
した直後
セッションから呼び出し→画面表示(別URL)
という処理を作ったら、書き込んだ直後のセッション情報が
別のアクションから呼び出せない。
という現象が発生していて、1/4日ふっとばしたんだけど、
一回休憩して、気合を入れて原因を解明するぞー
と意気込んだら、、、
バグが消えて、正常に表示されるようになってました。。
不思議すぎます・・・
0647nobodyさん
2010/01/04(月) 16:34:28ID:uJF3g7Nl<?=$result ?>だと表示されないんだけど、なんでかな?
この部分を<?php echo $result ?>に変えてみると値が描画されるからresultに値は入っているみたい。
0648nobodyさん
2010/01/04(月) 17:25:49ID:???php.ini short_open_tag = On
http://shoyu-ramen23.jugem.jp/?eid=125
0649nobodyさん
2010/01/04(月) 18:11:00ID:uJF3g7Nlズバリです。
本当に助かりました。ありがとうございます♪
0650nobodyさん
2010/01/04(月) 18:23:26ID:???オレもViewは<?php echoの略記を使って書くの好きだなあ。
<?= $form->create('Post', array('action' => 'add', 'type' => 'post')); ?>
タイトル:<?= h($form->value('Post.title')); ?><br>
<?= $form->hidden('Post.title'); ?>
本文:<?= h($form->value('Post.body')); ?><br>
<?= $form->hidden('Post.body'); ?>
<?= $form->submit('戻る', array('name' => 'data[Post][mode]')); ?>
<?= $form->submit('Save Post', array('name' => 'data[Post][mode]')); ?>
<?= $form->end(); ?>
0651nobodyさん
2010/01/04(月) 18:33:54ID:???0652nobodyさん
2010/01/04(月) 19:11:28ID:???どんな悪いところがあるの?
■ このスレッドは過去ログ倉庫に格納されています