【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/
0252nobodyさん
2007/06/19(火) 12:44:17ID:???Set::merge使えばおわりじゃん。
0255nobodyさん
2007/06/19(火) 15:29:42ID:???0256nobodyさん
2007/06/19(火) 16:10:22ID:???まず、ショッピングカートがあります。
そのショッピングカートはいろんなタイプの商品があります。
その商品タイプごとに入力できるデータ項目が違います。
(飲料商品タイプは内容量ミリリットル入力フィールドがあるけど、
雑誌商品タイプではISBNフィールドがあるなど。)
この場合に商品タイプごとに専用のテーブルをつくるのは
変な設計ではないと思いますが、この商品タイプを
CakePHPで作ったアプリの管理画面から増やそうと思ったら
create table文を発行することになると思います。
またこの商品タイプの管理画面を担当するphpファイルを
コピーして増やすことになると思います。
一般的にはbake等でプログラマが手動で追加していくコード・DB構造が
エンドユーザーが管理画面から操作することにより、
自動的にプログラムコードが拡張されていくようなイメージになります。
こういうのって気持ち悪いシステムなんでしょうか?
他にこのような自動的にプログラムが拡張されるような
仕組みを持ったものありますか?
このまま進めると大きな問題になりそうで不安です。
0257nobodyさん
2007/06/19(火) 16:20:37ID:???「飲料食品タイプ」の内容量ミリリットルって
「雑誌商品タイプ」でいうところの書籍重量ってのと、どう違うの?
逆にISBNコードってのは業界の商品流通コードなんですよ。各業界にも
あれこれあるでしょ?使うかどうかは別にして。
0258nobodyさん
2007/06/20(水) 00:23:26ID:???> そもそも「商品タイプ」というものに必要な属性の抽出が出来てない感じをうけるな。
世の中のすべての商品タイプをあらかじめ抽出なんて不可能でしょう?
> 「飲料食品タイプ」の内容量ミリリットルって
> 「雑誌商品タイプ」でいうところの書籍重量ってのと、どう違うの?
> 逆にISBNコードってのは業界の商品流通コードなんですよ。各業界にも
> あれこれあるでしょ?使うかどうかは別にして。
だからなんなんでしょうか?
例なんだから、細かいところにこだわりすぎ。
共通で汎用の商品タイプ作れとかそういう話ですか?
価格ドットコムで検索したことありますか?
不可能でしょ。そんなこと。
0259nobodyさん
2007/06/20(水) 00:33:05ID:???0261nobodyさん
2007/06/20(水) 02:21:55ID:???>>257 の「使うかどうかは別にして」というのはそういうことだと思うよ。
ただ「書籍重量」という例はちょっと悪いな
もしそういうものを作るんなら、たとえば
・商品カテゴリテーブル(id,商品名)
・商品詳細項目名テーブル(id,商品カテゴリid,項目名,項目タイプ)
・int項目タイプ詳細テーブル(id,商品カテゴリid,商品詳細項目id,値)
・varchar項目タイプ詳細テーブル(id,商品カテゴリid,商品詳細項目id,値)
・text項目タイプ詳細テーブル(id,商品カテゴリid,商品詳細項目id,値)
この4つですむじゃん。たとえばだけど
とにかく>>256は正規化でしらべやがれ、
DB板(ドラゴンボール板)に行け、そして戻ってくるな
つうか、初心者増えたのか?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かける前に
いずれかが空白(未選択)なら確認画面に戻す処理を書き加えても良いだけだし。
こんな小一時間考えればわかるような事に俺は…
お騒がせしました。
■ このスレッドは過去ログ倉庫に格納されています