【PHP】フレームワーク CakePHP
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/11/18(土) 20:53:22ID:???本家
http://www.cakephp.org/
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
0263nobodyさん
2007/06/20(水) 02:34:35ID:???0264nobodyさん
2007/06/20(水) 06:53:32ID:???>239
>242
>245
>256
厨発生中だな。
245と256は同一?
0265nobodyさん
2007/06/20(水) 10:48:12ID:zjQXSfAjやっぱり、CakePHPが絡んでくるので、どうしてもCakePHPの説明が入ってしまいます。
ここの方がよかったかもしれません。
どなたかご回答お願いします。。
0266nobodyさん
2007/06/20(水) 12:04:49ID:???なにがしたいのかわからん。タイプ数減らしたいだけか?
0267nobodyさん
2007/06/20(水) 13:57:48ID:zjQXSfAjclass Bbs1Controller extends AppController
{
var $m = ここに$this->Itemと同等のが入れたい
function index()
{
$this->m->findAll()
}
}
こんな感じのを想像していて、
$m(コントローラで使いたいモデル)をあとで変更できるようにしたいのです。
$this->Item->findAll()みたいな、モデルを使うところがたくさんあるので、
継承したあとに、var $mだけ書き換えれば、違うテーブルを使えるようになったらいいかなぁと思ったんですが。。。
get_object_varsではできませんでした。
0269nobodyさん
2007/06/20(水) 16:59:59ID:zjQXSfAj本番環境に移行するとなると、いろいろとめんどくさいんだよな。
0270nobodyさん
2007/06/20(水) 17:58:58ID:???class anyclass extends base
{
$model = 'default';
function index()
{
$this->{$this->model}->findAll();
}
function setter($model)
{
$this->model = $model;
}
}
$class = new anyclass();
$class->findAll();
$class->setter('other');
$class->findAll();
0271nobodyさん
2007/06/20(水) 18:07:04ID:???>DB板(ドラゴンボール板)に行け、そして戻ってくるな
>つうか、初心者増えたのか?cake界は
君のテーブル見る限り、君自身が完全に初心者なんだが…
0273nobodyさん
2007/06/20(水) 18:23:54ID:???書籍重量って書籍が決まればそれに付随して一意に決まるだろ…
喩え出す奴が馬鹿すぎるとダメだなw
しかもそれに面白レスしてる261が別人ってのはにわかに信じがたい
さすがcakeかっけーぜ
0274nobodyさん
2007/06/20(水) 18:57:14ID:???0275nobodyさん
2007/06/20(水) 19:22:59ID:???0277nobodyさん
2007/06/21(木) 09:42:13ID:???商品テーブル
・商品ID
・カテゴリID
・品名
・価格
・詳細説明
・更新日
・登録日
・特徴1
・特徴2
・特徴3
・特徴4
商品カテゴリテーブル
・カテゴリID
・カテゴリ名
・特徴1の項目名
・特徴2の項目名
・特徴3の項目名
・特徴4の項目名
でいいんじゃね?
特徴1〜4はカテゴリによって使用しなくてもOK。
書籍は「重量」を入れなくてもいいが、「作者名」・「ISBN」が必要。
飲料は「商品コード」は入れなくてもいいが、「容量」が必要。
0279nobodyさん
2007/06/21(木) 10:21:46ID:???0280nobodyさん
2007/06/21(木) 11:25:20ID:???0281nobodyさん
2007/06/21(木) 12:21:36ID:???クライアントに「特徴が5つ以上必要なカテゴリが出てきたら
別途見積もりになりますのでご連絡下さい」と言えばOK
>>279
クライアントが満足して使えりゃそれでいいんだよ
0282nobodyさん
2007/06/21(木) 12:25:37ID:???0283nobodyさん
2007/06/21(木) 13:01:06ID:???0284nobodyさん
2007/06/22(金) 07:56:43ID:???0285nobodyさん
2007/06/22(金) 10:50:28ID:???0287nobodyさん
2007/06/23(土) 02:46:18ID:???cake本はやくでないもんか。
0288nobodyさん
2007/06/23(土) 02:52:45ID:???0289nobodyさん
2007/06/24(日) 20:00:51ID:???本番環境はPHP+mod_rewriteが使えるApache+MySQLは使えるんですが、すぐ移行ってできるもんなんでしょうか?
そういうのを説明してくれているサイトって無いですよね。。
0290nobodyさん
2007/06/24(日) 21:19:34ID:???ディレクトリセパレータにcakeが用意してる定数DSを使うとか・・
特に気にせずとも動いちゃってるので気にしたことがないっす
0291nobodyさん
2007/06/24(日) 21:29:19ID:???え、cakephpのフォルダをそのまま本番ディレクトリへコピーするだけなんでしょうか?
webrootだけをdocumentroot下に置いて、それ以外は上に置くとかなんかありませんでした?
0292nobodyさん
2007/06/24(日) 21:30:54ID:???一概にどうすればいいとは言えない
0294nobodyさん
2007/06/24(日) 21:52:03ID:???0295nobodyさん
2007/06/24(日) 22:12:50ID:???ありがとうございます。
もちろんテスト環境つくってやるつもりなんですが、
やっぱり試行錯誤する感じでいくしかないですかね。
0296nobodyさん
2007/06/25(月) 00:55:35ID:???テスト環境で動くなら。
0297nobodyさん
2007/06/25(月) 18:13:58ID:???0298nobodyさん
2007/06/25(月) 19:46:41ID:???0300nobodyさん
2007/06/27(水) 12:00:32ID:5woCK0g1コントローラで、
webroot/temp/test.txt
を削除したかったら、unlink()にどう指定してあげればいいんですか?
unlink('/temp/test.txt');
初めこうしたのですが、$this->webrootという変数があったので、
unlink($this->webroot . '/temp/test.txt');
こうしたのですが、
これでもだめでした。
No such file or directoryとエラーが出てしまいます。
0301nobodyさん
2007/06/27(水) 12:28:55ID:???適当なビューでecho $this->webroot;して試してみたらどお?
0302nobodyさん
2007/06/27(水) 12:45:14ID:5woCK0g1どういうことですか?コントローラからunlinkしたいんですが、、、
ためしにやってみましたが、
http://localhost/ 以下(コントローラ名含まず)が出力されました。
0303nobodyさん
2007/06/27(水) 12:58:04ID:xI/8M0tS鯖のOS変わるとプログラムの書き方も変わるんでしょうか?
0304nobodyさん
2007/06/27(水) 13:05:02ID:???unlinkの引数はURLじゃなくてパス。
システム内での実体のある絶対パスか相対パスを与える。
>>303
場合による
0305nobodyさん
2007/06/27(水) 13:42:59ID:5woCK0g1うーん、何度やっても同じエラーがでます。
具体的にどう書けばいいんでしょうか。。
0306nobodyさん
2007/06/27(水) 14:01:16ID:???$this->webrootに入ってるのは「http://localhost/以下」なんでしょ?
unlinkの引数はURLじゃなくてパスなんだから、$this->webrootをunlinkに
突っ込んでも無駄。
×unlink('http://localhost/hoge/temp/test.txt');
○unlink('/home/hoge/cake/app/webroot/temp/test.txt');
0307nobodyさん
2007/06/27(水) 15:13:03ID:5woCK0g1ご丁寧にありがとうございます。
ローカルとサーバでOSが違うので、相対パス(../../webroot/.......みたいな)にしました。
0308nobodyさん
2007/06/27(水) 16:06:07ID:???0309nobodyさん
2007/06/27(水) 18:10:43ID:???0310nobodyさん
2007/06/27(水) 20:12:38ID:???0311nobodyさん
2007/06/27(水) 22:00:42ID:???すべてのレベルのプログラマという名目だが、さすがにPHPの基礎くらいは出来てないとな。
0312sage
2007/06/28(木) 09:22:28ID:???ttp://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&topic_id=550&forum=6
0313nobodyさん
2007/06/28(木) 16:45:47ID:b86P8EwS0314nobodyさん
2007/06/29(金) 01:42:18ID:???0315nobodyさん
2007/06/29(金) 11:03:28ID:???投稿記事を削除するときに、コメントも削除したいんですが、どう書くんでしょうか。
アソシエーションは機能しているので、関連して呼び出すことはできています。
0316nobodyさん
2007/06/29(金) 14:09:47ID:???0317nobodyさん
2007/06/29(金) 15:27:07ID:XE3VOI38相対指定じゃないといけないんでしょうか?よろしければコード例をお願いしたいです。。
0318nobodyさん
2007/06/29(金) 16:01:14ID:???0319nobodyさん
2007/06/29(金) 16:16:09ID:XE3VOI38やっぱビューからじゃアクセスできないみたいですね・・・。
せっかくtmpがあるのに、webroot以下にまたtmpディレクトリ作るのはちょっとやな感じですが、そうします。
0320nobodyさん
2007/06/29(金) 21:34:10ID:???>レベル低っ・・・・フレームワーク使う前に、ほかにやることありそう
0321nobodyさん
2007/06/30(土) 00:36:03ID:???君におススメ!
http://www.amazon.co.jp/Ethna%C3%97PHP-LL%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFBooks-%E8%97%A4%E6%9C%AC-%E7%9C%9F%E6%A8%B9-%E4%B8%80%E4%BA%95/dp/4774131393/ref=pd_bbs_sr_1/249-9902260-8715545?ie=UTF8&s=books&qid=1182839405&sr=8-1
0325nobodyさん
2007/07/02(月) 20:59:09ID:???0326nobodyさん
2007/07/02(月) 21:51:21ID:???本当に有難うございました。
0327nobodyさん
2007/07/03(火) 11:48:07ID:???レベルが低かろうがほっとけばいいのに。
0328nobodyさん
2007/07/03(火) 12:21:28ID:???0329nobodyさん
2007/07/03(火) 13:41:23ID:8i5o6UCU0330nobodyさん
2007/07/03(火) 14:06:51ID:???レイアウトを切り替えれば事が済むなら
自分で用意したAppControllerでコンストラクタをオーバーライドして
セッションの値によってlayout変数を切り替えればいいだろうし。
0331nobodyさん
2007/07/03(火) 15:31:24ID:???>手動でセッションをセットする
という意味がわからない。
0332nobodyさん
2007/07/03(火) 18:18:52ID:F4VpoSCGでもcakePHPでは無理です。
Ruby on Railsをつかいましょう。
0333nobodyさん
2007/07/04(水) 02:48:45ID:gN4ff124<?php if(isset($session->User)){ ?>
って普通にビューからコンポーネントにアクセスできるんですね。
自己解決しました。
>330
有難うございます
0334nobodyさん
2007/07/04(水) 05:14:32ID:gN4ff124var_dump($_COOKIE);
としても全部のクッキーが表示されないのはCakePHP1.1のせい?なんかやってる?
0335nobodyさん
2007/07/04(水) 10:10:25ID:???Cake通さなければ普通に表示される?
0336nobodyさん
2007/07/04(水) 21:48:23ID:???0337nobodyさん
2007/07/04(水) 22:10:12ID:???これか?読んでないんだが、一言で言うと何?
0338nobodyさん
2007/07/05(木) 00:53:35ID:???0340nobodyさん
2007/07/05(木) 04:42:53ID:???0341nobodyさん
2007/07/05(木) 09:02:47ID:???0342nobodyさん
2007/07/05(木) 17:37:10ID:???0343nobodyさん
2007/07/05(木) 19:23:19ID:???0344nobodyさん
2007/07/05(木) 21:33:11ID:???layoutの方で頭にRSS用のヘッダ吐くようにして。
0345344
2007/07/05(木) 21:33:49ID:???0346nobodyさん
2007/07/06(金) 04:07:26ID:???0348nobodyさん
2007/07/06(金) 10:41:52ID:???0349nobodyさん
2007/07/06(金) 14:15:24ID:???例えばDB(他は試してないけどpostgreSQL7.x 8.x)に
birthday DATE
って列があって、
cakePHP側ではビューに
$html->dateTimeOptionTag('Profile/birthday', 'YMD' , 'NONE', $html->tagValue('Profile/birthday'), array())
こんな感じでコントローラーに受け渡してしまえば、
コントローラーでは
$this->Profile->save($this->data)
これでサックリ、
と普通だったらそうなんですが、
何も選択してないままだとSQLに
birthday=''
を吐き出してしまって、DBからいつも
「DATE型やっちゅうのに何おまえ(空)文字入れようとしとんねん!」
と怒られるんです。
かといって誕生日なんて(システム的にどーでもいい)情報、NOT_EMPTYにできないし
仕方がないのでコントローラーでわざわざSQL書いたり、
空白だったら1970-1-1にしといて、ビュー側で1970-1-1だったらNULLと同じ扱いにする、
などなど、日時情報にイチイチぶさいくな事してるんだけど、
どこにも話題が無いって事は自分がぶさいくなだけで絶対
何かcakePHP的に合理的な方法があるはず!と思ってますが
ヒントだけでも誰か教えてください。
0350nobodyさん
2007/07/06(金) 14:24:20ID:???0351nobodyさん
2007/07/06(金) 15:05:44ID:???cake/controller/controller.phpにある
cleanUpFields
をコピペして
app_controller.phpに突っ込んで、
$this->params['data'][$modelName][$field['name'] . '_year']
$this->params['data'][$modelName][$field['name'] . '_month']
$this->params['data'][$modelName][$field['name'] . '_day']
などなど、
dateTimeOptionTagで生成されるパラメータのいずれかがemptyなら
$this->data[$modelName][$field['name']] = $newDate;
を発行しない、という処理を加えていくだけ。
独自でconfirm作ってる場合は、cleanUpFieldsかける前に
いずれかが空白(未選択)なら確認画面に戻す処理を書き加えても良いだけだし。
こんな小一時間考えればわかるような事に俺は…
お騒がせしました。
0352nobodyさん
2007/07/07(土) 01:33:20ID:r27wk2rh0353nobodyさん
2007/07/07(土) 10:59:23ID:???yamlで共通configファイルを作ってるけど。そこで変数やformの属性を全部定義してる。
0354nobodyさん
2007/07/07(土) 11:25:14ID:???hiddenに関してはループ処理でまとめられそうな気がするよ。
俺はserializeしてbase64してハッシュつけて1個のhiddenにつっこんだりしてる。改変も防げて便利便利〜。
まあそもそも入力項目が多いということはアプリケーションがそれだけ複雑ってことだ
0355nobodyさん
2007/07/07(土) 11:32:48ID:???そんな面倒なことしてなかったキガス
そんなことしてたらCake(FW)の意味ない品
0357nobodyさん
2007/07/07(土) 15:46:25ID:???0358nobodyさん
2007/07/07(土) 16:53:17ID:r27wk2rhyamlで共通configファイルを
>>354
俺はserializeしてbase64してハッシュつけて1個のhiddenに
おもしろいですね、ぜひ詳しく聞かせて欲しい
0359nobodyさん
2007/07/07(土) 18:39:04ID:???詳しくって、このまんまだと思うぞ。
0360nobodyさん
2007/07/07(土) 18:54:40ID:???name:←変数名
inputview:←入力form用view
form:input
size:30
....以下略
confirm:←確認form用view
form:hidden
table:
width:なんたら
とかやっておくだけ。
yamlで配列に取り込んでinput用viewの時には$array['name']['inputview']の定義を使って、formを描く。
confirmの場合は$array['name']['confirm']のを使う。
confirmの時のserialize云々は、>>359氏が言ってるようにそのまんまだとおもうけど
foreach($array as $key => $attrs) {
if( $attrs['confirm']['form'] =='hidden'){
$hiddenarray[$key] = post値;
}
}
とかしておいて、$hidden = base_64encode(serialize($hiddenarray));
あとは一つの hidden formに一括入れちゃえばいい。
ハッシュ付けたい時は $hidden .=ハッシュ値(お好みで設定)、とすればいいでしょ。
あとはwriteの時にハッシュをreplaceして、decode->unserialize。このときにも上のyamlの配列キーが使える。
0361nobodyさん
2007/07/08(日) 21:18:20ID:???ここ参考にして、ブログにコメント機能を実装してみたのですが。
一覧表示で、記事ごとにコメント数を表示させていて、
この方は記事についているコメントをcount関数を使っているみたいなんですが、
この方も言われているようにスマートではないと思うんです。
おそらくfindCountを使うんだと思いますが、どう書いたらいいか考えても思いつきません。
どなたかアドバイスいただけませんか。
0362nobodyさん
2007/07/09(月) 03:25:38ID:+2G34Por数秒メッセージを表示してリダイレクトって気持ち悪いので普通に$this->redirectでリダイレクトしてます。
なんか便利な使い方があるんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています