【PHP】フレームワーク CakePHP 4ホール目【v1.2】
2? そして乙
Windows+XAMMP 1.6.6a+CakePHP1.2RC1で xdebugのコードカバレッジ機能ちゃんと使えている人いる? Apacheが落ちちゃうんだけど。
RC2待ってる人〜ノシ
ノ
closing some more tickets and preparing for RC2
9 :
nobodyさん :2008/06/23(月) 18:12:30 ID:Buu9Vutr
Cake1.2を使用しています。 $hasAndBelongsToManyが設定されたUserモデルとUserGroupモデルがある場合に、 Userを登録すると当時に(単|複)数の所属グループをsaveしたいときって、簡単にするにはどうすればいいのでしょう? $group_ids = 2;//ユーザーグループのIDを仮に2とする $data['User']['name'] = $data['User']['name']; $data['User']['register_date'] = date("Y-m-d H:i:s"); $data['User']['created'] = $data['User']['register_date']; $data['User']['updated'] = $data['User']['register_date']; $data['UserGroup']['user_group_id'] = $group_ids;//グループを設定 } $this->controller->User->create($data); $this->controller->User->save();//レコードを保存 こうした場合に、グループIDが単数(変数)の場合は無事にUserGroupテーブルにもリンクレコードが書き込まれたのですが、 $group_ids = array(2,3);//ユーザーグループ2&3を同時にリンク設定 としたい場合は別の記述方法があるのでしょうか?
CakePHPで、MySQLのビュー機能とか使ってる人いますか? 作ったビューを普通にusesに入れるだけで問題ないのかな・・・?
you guess it, coffee and tickets...unless anything mjor happens RC2 today だれか訳して。
12 :
nobodyさん :2008/06/24(火) 15:25:43 ID:FTW7odGn
you guess it, coffee and tickets...unless anything mjor happens RC2 today あんたが予測するコーヒーとチケット、、、今日出るメジャーなRC2が無くても
余計わからんw
今日RC2でるかも 大きな変更は無いよ
coffee and tickets... unless anything mjor happens RC2 today 「コーヒーとチケットを、、、何が起ころうともRC2は今日だ!」 じゃないかなぁ、、、分からん
違った、「何も起きなければRC2は今日」か
チケットの意味がわからんw コーヒーはケーキだからとして、 チケット? 食券ということか? mjor むじゃー mjor むじょあー mjor えむじょあ
チケットは修正項目って事かな?
ticketはtracのチケットとかのこと mjorはmajorのtypo
”coffee and tickets”でぐぐるとさ、 スターバックスとかでてくるのよ。 なんか修正項目以外の意味があると思うんだど。 ホテルの用語的な。もしかしたらCM?
ticketの意味もわからん奴が何人もいるとはw CakePHPてこんなレベル低いんけw
オフ会の話かと思ったぜww
cakeってなんでプロジェクト割れまくってるの? なんか派生フレームワークだらけなんだけど…
cakeの派生フレームワークってなんだ?
CakePHPとか、日本でローカライズして、携帯電話対応とかしてくれると楽できるんだけどなー。
CakeとCodeIgniter、両方使ったことある人いる? 比べてみて、どう? 設置に関してはCakeが一番かんたんかな?
>>27 いや、CIのほうが簡単かと。
CIのほうがライトウェイト。
日本語マニュアルを読むと、Cakeよりはるかに簡単なのが分かる。
んだけど、Cakeの方がコーディングは楽できる気がするなぁ。
bakeryそのもののソースってどこかで入手できるんでしょうか? パク・・いや参考にしてみたいんだけど。
31 :
nobodyさん :2008/06/27(金) 01:01:08 ID:Tw7z8KLr
CakePHP1.2RC1に入れ換えたのですが、AuthComponentの仕様変わった? それいぜんの1.2で開発したアプリケーションのログイン機能がまるっと動かないのだが。
33 :
nobodyさん :2008/06/27(金) 02:30:26 ID:bfytbvRv
モデル内からモデルを読み込む方法だけど こんな感じでやってます。変かな? function __construct(){ App::import('Model', 'Unko'); $this->model =& new Unko(); } こうすれば各メソッド内から $this->modelで呼べる
34 :
33 :2008/06/27(金) 02:53:40 ID:bfytbvRv
訂正 function __construct(){ parent::__construct(); App::import('Model', 'Unko'); $this->model =& new Unko(); } じゃないとバグる
35 :
nobodyさん :2008/06/27(金) 03:02:45 ID:bfytbvRv
CakePHPは モデル内てコントローラよりも自由度が低いクセに モデルでのロジックを多く実装するのがベストだなんて 無茶やな。
36 :
nobodyさん :2008/06/27(金) 03:30:21 ID:bfytbvRv
Aモデルの関数内で、Bモデルの関数を呼びたいのなら コントローラ内でAモデルのメンバ変数にBモデルのオブジェクトを代入すればいいだけか! そうすれば、モデル内からモデルをimportしなくても済むな! そうか、そうか
37 :
nobodyさん :2008/06/27(金) 03:50:32 ID:bfytbvRv
結論 モデル内に独自メンバ変数を作ると モデル内の自由度が上がる
AモデルとBモデルが意味的につながっているのなら、 リレーションがあるはず、つまりアソシエーションでつながっているはず。 その場合、A->B->func()ってな感じで呼び出せる。
RC2きたね〜
1.1.19で、belongsToがあるモデルのcontrollerをbakeし、 scaffoldingをnにしてbasic class methodsをyにすると、 Look okey? が出る前のところで segmentation fault します。 手作業でコントローラを書いても、webからアクセスすると apacheがexit signal Segmentation fault (11)になります。 前スレのログが見られないのですが、これは既出ですか? 1.1.18だと問題ないのですが、本家はこの問題に気づいているでしょうか。
43 :
42 :2008/06/30(月) 14:56:55 ID:???
44 :
nobodyさん :2008/07/01(火) 03:17:12 ID:Qd4NRnlG
>>42 bakeなんて使ってんのw
そういう思考がそもそも素人思考
bake使うことがそんなに問題なの? 一アクション(一ページ)たかだか数行の テンプレートを生成するだけじゃん。 手動でテンプレートファイルをコピーするのと何も変わらん。
いちいち玄人ぶる奴ってなんなの? 一生そうやって過ごすのかね?
RailsとかAkelosは、いわば最初にbakeしてるようなものだろ。 cakeの場合は、scaffoldでお試しした後でbakeしてるだけで。 やってるのは同じ。bakeを悪く言う意図が分からん。
そんなのも分からないの? 自尊心の維持手段が他にないだけだろう、明らかに。
他人の批難をする事でしか自我の維持が出来ない奴は仕事でも絡むがマジうざいなw
CakePHP用に配布してるアプリケーションで、 アップグレードに伴って、DBのアップグレード (テーブルや項目の追加)が必要になった場合、 どうやって管理するの?
1.CakePHP migrationでぐぐる 2.CakePHP Schemaでぐぐる DBのアップグレードは知らんけど、 before、afterがあるからそれでやるんじゃね?
どちらもググりましたが。読んだ印象だと、 どちらにも定番の方法が無いように思ったのですが。 CakePHPを使われている皆さんは、苦労されてない? また、ターミナルを使った処理が必要になるのが、 ちょっと一般向けじゃないなーと。できれば、 アップグレード用の(ローカルの)URLに接続して、 対話的にアップグレードできたら良いのに。 アプリの開発者とかなら、ターミナルでの作業も 平気でしょうけれど。一般の利用者の方にアップ グレードの作業をしてもらうには、ターミナルは ちょっと敷居が高いので。
> アップグレード用の(ローカルの)URLに接続して、 > 対話的にアップグレードできたら良いのに。 そういうコントローラを作ったら?
| \ __ / _ (m) _ピコーン |ミ| / .`´ \ ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ (・∀・∩< なるほど!! (つ 丿 \_________ ⊂_ ノ (_) って、私には無理orz
> って、私には無理orz なんだ。ひやかしかw この板に来るべき人じゃないな。君は。
何?ここはそんな高レベルな方々が集う場所でしたか。 そりゃ、失礼しました。
ま。ひやかしと思われてるついでに。 Akelosだと、migrationではフィールドの種別を 自動で決めてくれたり、hasoneとかの設定でも 指定する内容が少なくて、楽そうなんだけど。 CakePHPは、そういうのをかなりの部分、自分で 設定させられるよね? 入れ格子の配列で。 あれって、不便と思わない? Akelosみたいに、省略されたら自動で設定される ようになってたら、もっと楽なのに。
定番な方法がないってのはたしかにややこしいけど、 必要だったら適当に書けばいいんじゃない。 チェックアウトはできるがコンソール使えないみたない うざいデザイナー相手にしてると嫌になるので 難しいと感じるとしても時間さいて書く価値はあるとおもうよ。 まあ、どの方法使うにしても、 アクセスされたらコマンドなりクエリなりを流すだけだと思うのだが。
Webインターフェイスからのファイル操作は大抵の*nix環境で パーミッション上の問題が起こると思うんだけど、それは回避できるの?
61 :
nobodyさん :2008/07/02(水) 01:09:16 ID:BNxnFlGa
Akelosを例に出してる時点でおまえプロじゃないな
どうせ使うのは開発かテスト環境だろうしなんでもありじゃねえの? lighttpdで別プロセスとか。apacheだったらsuEXECとか。
そもそもファイル読む以外することあんの?
>>60 p2みたく、ローカルで使うのを想定してるので、なんとかなると思う。
>>61 それはRailsでメシ喰ってる人への挑戦状?
私?私は素人ですけどね。
>>62 できる?
http://cakephp.jp/doc/ch06s04.html を見ても、やっぱり配列で指定してるんだが。これを、
var $hasOne = 'Profile' ;
だけに出来たら、楽だなーと。
テーブルの作成も、
$this->createTable('users', "id, name, created,updated");
ってしたら、少なくとも規約に沿ってる部分は、
idはINTの自動加算とか、createdはupdatedDATETIMEに
してくれたら、楽だなーと。
ま、些細なことですけどね。ρ(-ε- )イヂイヂ
67 :
nobodyさん :2008/07/02(水) 04:28:34 ID:taRpZf8M
もっと有益な情報を話し合おうぜw
>>66 普通にそこまで簡略化出来る事を知らなかった俺涙目
RCになって、またAuthコンポーネントのパスワード暗号化のタイミング変わった? なんで戻したんだろ・・・
>>66 CakePHPのバージョンを書かんかった俺が悪かった。
今、1.1を使ってたんだ。
つーか、ひょっとしてこのスレ、1.2限定?
1.1だろうが必須なのはモデル名だけって書いてあるんだがわからないのだろうか
>>70 試してから言えと何度言われればわかるんだ?
>>73 そっちのモデル名のことじゃないと思うよ。
ようやく試す時間が取れました>< 1.1でも、>66みたいに出来ました。 今後ともご指導ご鞭撻の程、よろしくお願い申し上げます。
A,B,Cのテーブルがあって、 A hasMany B B belongsTo A , B hasMany C C belongsTo B の場合、当然、 C belongsTo A でもあるわけど。それをCのモデルに明示する方法ってありますか? C belongsTo array('A','B'); ってしたら、scaffoldingのCのviewでエラーが出た。
CにA_idあんの?
CにA_idありました。 もちろん、B_idもあります。
エラーの内容が、 Notice: Undefined index: title in /Applications/MAMP/htdocs/cake/cake/libs/view/templates/scaffolds/view.thtml on line 52 だったので、AやCのテーブルからtitle, nameのフィールドを別名にしたら、 エラーは出なくなりました。 しかし、"title"や"name"が使えないのは痛いな。
んなわけない
あ・・・・・・・・解決したかも・・・・ C belongsTo array('B','A'); って書いてた(汗 C belongsTo array('A','B'); にしたら、直ったっぽい
いまから作る新サイト、1.2でやるべきか悩む…
どっちでもいいよ、覚悟さえすれば。
hasAndBelogsToManyって、便利そうだけど、工夫がいるね。
モデルのメンバ変数でアソシエーション定義すると 既存のデータ取得関数に影響が出るから アソシエーションの設定は メソッド単位、もしくはメソッド内のロジック単位で bindModel() をした方がいいね
自分の選択でフリーターはともかくとして、 フリーターしか選択肢がないというのはよほど問題がある人だろう。 先天や事故で身体的に無理というならばまだしも、 精神的にとかは、もう笑うしかないな。 どれだけ甘えているのだと。 そういうのはバイトで当然だよ。 むしろ金をやる必要すら無い。
CakePHP1.2,PHP5でviewにチェックボックスを表示しています。 デフォルトをチェックが入った状態にしたいのですが、以下のようにvalueを指定してもチェックが入りません。 どのように指定すればチェックが入るのでしょうか? echo'<div>'.$form->checkbox('comset/admin',array('label'=>"",'value'=>1)).'管理者のみ表示</div>';
>>87 # ComsetsController
if (emtpy($this->data))
$this->data['Comset']['admin'] = 1;
# Views
echo'<div>'.$form->checkbox('Comset.admin',array('label'=>"")).'管理者のみ表示</div>';
じゃないかな?
>>85 1.2ならContainableビヘイビア
beforeFindで$queryDataを見て、特定の検索条件があったときに ほにゃらって処理をしているんだけど、 CakePHP1.2から、$conditions => array('key =' => 'value');になったでしょ? 今まではarray_keysでkeyがあるかどうかって見ていたんだけど、 これからは'key ?'ってなっちゃって?の部分が変わるから 単純にarray_keysが使えないんだよね。 これの代わりになる便利な関数って用意されているか知らない?
91 :
87 :2008/07/10(木) 16:53:38 ID:???
>>88 実現できました、ありがとうございます。
立て続けで申し訳ないのですが、ラジオボタンの表示で
ラジオにチェックを入れるにはどのように指定すればよいのでしょうか?
ラジオの数が動的に変わるため、以下のようにして作成しています。
ループ内である条件に一致する場合に、ラジオにチェックを入れるようにしたいです。
一致するのはループ内で1回のみです。
for($i=1; $i<=$n; $i++){
$arradio[$i] = $dt_hoge['Table']['no_'.$i]."<br />";
}
echo '<div>'.$form->radio('hogeset/hoge',$arradio,array('legend' => false)).'</div>';
>>91 forはview内かな?
だとしたら、viewで
if (!empty($this->data['Hogeset']['hoge']) $this->data['Hogeset']['hoge'] = 初期値 ;
じゃまいか?
やりたいことを、良く理解していないから、はずしてたらすまん。
93 :
87 :2008/07/10(木) 19:50:48 ID:???
>>92 ありがとうございます。
$this->dataがない状態で選択しようとしたからか、
教えていただいた方法では、実現できませんでした。
いろいろ試してみた結果、
選択したい値をradio生成時にvalueで指定したらとりあえずできました。
echo '<div>'.$form->radio('ansset/ansr',$arradio,array('legend' => false,'value'=>4)).'</div>';
>>93 valueを直で指定すると、validation error のときに困るんじゃない?
今、1.2betaから1.2RC2に移行しているわけだが、 変わりすぎてて俺、涙目wwwww orz RC2 から 正式版の間ではあまり変わらない事を祈っている・・・
stableっていつごろなのかな? RC1→2はわりと早かったけど・・・
1.2出たら、ポケットマニュアルも1.2対応で すぐに出るんだろうか?
98 :
nobodyさん :2008/07/12(土) 03:58:01 ID:GP2h4Bov
Aモデルの中で Bモデル->save()みたいなことしたいけど、ダメ? コントローラ内で Aモデルのデータとってきて $this->Bモデル->save()するを完結するのががベストかな?
99 :
nobodyさん :2008/07/12(土) 03:59:50 ID:GP2h4Bov
モデルを厚くするのがベストてCakePHPに書いてあるけど モデルの自由度が凄く悪い気がするんだが・・・
100 :
nobodyさん :2008/07/12(土) 04:04:06 ID:GP2h4Bov
コントローラだと何でも出来ちゃうから 結局コントローラが厚くなってしまうんだよな 一通りコーディングが終わってからリファクタリングする形で モデルを厚くしていかないと。 調べながらだと時間もったい気がする
1.2のスライドにも、モデルが薄く、 コントローラが厚くなってしまうのが 問題って書いてあるな。 わざわざスライドにしてるってことは、 1.2で改善されるんやろか?
問題なのは、フレームワークじゃなくて、 そういうコードを書くなってことだろう。
>>100 > コントローラだと何でも出来ちゃうから
> 結局コントローラが厚くなってしまうんだよな
似たような話。
関数作らなくても何でも出来ちゃうから
結局コードが長くなってしまうんだよな。
結局だ、単なる経験の問題。
経験をつめば自然といいコードが書けるようになるよ。
104 :
nobodyさん :2008/07/13(日) 07:35:50 ID:yyUJjXK2
どれだけ頑張っても ModelとControllerの厚さを同じくらいにまでしか もっていけねえw 強引にモデルにもっていけなら別だけどw
初歩的な質問なんだけど、WEBのフォームから渡された値って、 基本的にモデルのvalidatesで全部チェックしていいんもんなんですか? 例えば、会員の新規登録でパスワード(password)と パスワード確認(password2)を比較して同一かチェックするとか。
規約に同意するかどうか、とかもモデルのバリデーションでやってます。
「CakePHPガイドブック」ってもう廃刊なのですか? 去年末に発売したばっかりなのになぜ?
内容が基本的に1.1だからでは? フレームワーク本としては、かなりいい本。
1.2RC2の話。 1.2からbehaviorsのattach/detachができるって、 あちこちに書いてあるけど、最近仕様が変わってるっぽいね。 よく書いてあるのが、コントローラで$this->Model->attach(ビヘイビア名)。 でも今は$this->Model->Behaviors->attach(ビヘイビア名) 間に、Behaviors(BehaviorCollection)が入ったようだ。
チラシの裏 どうも、RC2にしてからユニットテストでメモリ不足と言われる。 メモリ制限をゆるくすればいいのだが腑に落ちない。 それで調べてみると、なんとアサーション一つにつき40KBぐらいも消費していた。 アサーションの数が3000個だと120MB。そりゃ足りないって言われるわなw それでコードを追ってみてみると /cake/tests/lib/cake_reporter.phpの関数 (特によく呼ばれるのはpaintPass)の中のob_start();が原因。 なんか知らんが、ob_start();を一回呼び出すとそれだけで40KBも消費する。 ob_end_flush()を呼び出すとメモリは解放されるっぽいけど、 どうもこのクラスの中では呼び出していない。(どこか他で呼び出しているの?) そしてアサーション一つごとにob_startが連続して呼び出されることになる。 ob_startごときで40KBも消費するのも、変な感じだが このob_startっているんだろうか?前のリビジョンのコードには存在しなかった。 とりあえず取ってみたが変化はわからない。 現在リファクタイリング中みたいだからそのうちどうにかされるのかもしれない。
111 :
105 :2008/07/14(月) 17:10:17 ID:???
findNeighboursで1テーブルから前のID,後のIDを↓のように取得しています。 $where = array('hogekb =' => 1); $this->set('nei_kekka', $this->Nani_table->findNeighbours($where,"Nani_table.id",$id)); ここに1テーブルjoinさせたいのですが、 以下のように設定したjoin句はfindNeighboursのどこにセットすればよいのでしょうか? $options['joins'][]= array( 'type' => 'INNER', 'alias' => 'Hoge_table', 'table' => 'hoge_table', 'conditions' => array('Hoge_table.id = Nani_table.id') );
113 :
nobodyさん :2008/07/15(火) 14:41:34 ID:kKo7V/Gs
DBに入れるほどではなく、CSVファイルとしてデータを持っていて それをコントローラから参照したい場合、CSVファイルはどこに設置するのが 一番スマートなんでしょうか?
俺もそれ知りたいな。 XMLファイルとか。 tmpフォルダとかかな?
>>113 webroot の files フォルダ。これが一番いいと思う。
>>115 外部から見られたくないファイルなのでは??
117 :
113 :2008/07/15(火) 20:00:24 ID:???
>>115 そうなんです、外部から見られたくはない。
いや見られても良いデータなんですけど、なんか変な感じなので。
>>114 tmpフォルダは考えたんですけど、役割的に違和感があるんですよね。
まぁ、結局DBにつっこんで今はやってみましたけど。
うーん。
バージョンアップの際、appフォルダごと入れ替えるため、 appフォルダ以下にはデータは入れたくない。 cakeフォルダ以下には、データは入れるはずない。 appやcakeフォルダと同じ階層に、dataフォルダでも 作って、例えば画像ファイルとか入れられれば、 良さげに思うが。それは無理なん?
119 :
113 :2008/07/16(水) 11:57:50 ID:???
>>118 あ、その方法がありましたね。
確かにそれであれば全然いける上に、スマートかも。
ありがとです。今後、検討してみます。
120 :
nobodyさん :2008/07/16(水) 13:11:14 ID:ahXuksxu
>>113 DBに入れるほどではないデータは配列にしてモデルに入れてるよ
121 :
nobodyさん :2008/07/16(水) 13:16:24 ID:ahXuksxu
画像ファイルはvendorsでいいと思うんだが
122 :
nobodyさん :2008/07/16(水) 13:22:04 ID:ahXuksxu
一番スマートなのはプロジェクトappと同じ階層にdataフォルダだな CakePHPはデータ保存場所を考慮したフォルダ構成じゃないから CakePHP内にデータを置くこと自体がスマートじゃ無いってことかな
123 :
nobodyさん :2008/07/16(水) 13:24:33 ID:ahXuksxu
フレームワークの中にデータを保管しようという思考が そもそも、おかしい気がしてきたよ
124 :
nobodyさん :2008/07/16(水) 13:27:51 ID:ahXuksxu
フレームワーク外にcsvファイルを置くのが一番ベストだ!
125 :
nobodyさん :2008/07/17(木) 08:07:12 ID:/Q3Ys2pH
フレームワークっていつまで使えるだろう 10年後、20年後にも、CakePHPはあるだろうか? そもそもPHPは使われてるだろうか?
>>125 じゃあ、こう考えるんだ
10年前はどうだったかを。
それで今も残っていればあるってことになる。
って10年前はPHPそのものがなかったか。
128 :
nobodyさん :2008/07/17(木) 09:23:54 ID:r8Tb5l59
その都度、旬な商売道具(今ならphpフレームワーク)使って儲けるしかない。 これやれば10年後安心てのはIT社会には無い
UTF-8、PHP1.2で作ってるんだけど フォルダ内のファイル名を読み込んだ時に $file = readdir($dir) だけだと日本語のファイル名が文字化けしてしまう。 部分的に関数通して文字化け回避する方法ってある?
130 :
129 :2008/07/17(木) 09:58:29 ID:???
128はCakePHP1.2の間違いです。
131 :
nobodyさん :2008/07/17(木) 16:12:51 ID:hC9JNlTl
CakePHP1.2を使用しているのですが、 AppModel::queryを使って取得したデータを paginatorに渡す方法ってありますか?
132 :
131 :2008/07/17(木) 16:26:20 ID:hC9JNlTl
任意のSQLでpaginateがしたいんです!
133 :
131 :2008/07/17(木) 17:05:12 ID:hC9JNlTl
無茶苦茶な方法ではありますが、 対象のModelでpaginateをオーバーライドして、 $coditionsの中にsqlを入れて取り合えず 期待する動作は得られるようになりました。
>>133 無茶じゃなくてまっとうな方法。
Modelにpaginateメソッドは存在しないからオーバーライドではない。
Controllerのpaginateメソッドが最終的にfindする際に
Modelのpaginateメソッドが存在すれば代わりにそっちを呼ぶようにに作ってある。
modelはDBのテーブルと1対1が想定されているけど DBテーブルに登録する際にバリデート内容が異なる画面が3つあった場合 DBテーブル1に対してモデルが3つ必要になるよね Aテーブルがあったとしたら A1モデル 使用テーブルA A2モデル 使用テーブルA A3モデル 使用テーブルA それぞれのバリデート処理を実装することになるよね
ログイン形式の携帯サイトを作ってるのですが、 CakePHPで「ログインされたかどうか」はどのように持つのが一般的なのでしょうか? PCサイトではセッションを使うことが多かったんですが、キャリアによってセッションが使えない場合があると聞いたもので。
DBテーブルに登録する際にバリデート内容が異なる画面が3つあった場合 ひとつのモデルで完結できるのかな? A1モデル 使用テーブルA 画面1のバリデート処理 画面2のバリデート処理 画面3のバリデート処理
普通にケースごとのvalidateメソッド書いてるけど。
>>137 自分は
セッションとクッキーの連携プレーを使ってるよ。
キャリアって携帯でしょ?
携帯の場合はセッションキーをクッキーに埋め込むのよ。
携帯ではクッキーが使えない機種があるだろw
143 :
nobodyさん :2008/07/19(土) 16:24:22 ID:jBy/EgFS
モデルの数が凄い増えてきたら モデルを使いたいコントローラメソッド内で App::Import('Model', $model_name); $model = new $model_name(); $model->findAll(); した方がいいね どのコントローラメソッドでも共通利用することの多いモデルだけ $usesに入れた方がよくね じゃないと極端な話、一つのコントローラで利用するモデルが30個あった場合 $uses=arrray('A1','A2','A3','A4','A5','A6','A7','A8','A9','A10','A11','A12','A13','A14'・・・・・・・・・) てなると$usesだけで管理するのしんどいよ。
モデルが30個もあるシステムをCakeで作るとは・・・ どんなシステム?レスポンスどうなの?
145 :
nobodyさん :2008/07/19(土) 16:39:57 ID:jBy/EgFS
>>144 A8のようなアフィリエイトサイトだよ。
レスポンスはアソシエーションを
その都度 bindModelする方法なら悪くはないよ
重くなるとしたらSQL関連だと思うから後はcacheに頼る
一つのコントローラに詰め込み過ぎじゃないの?
147 :
nobodyさん :2008/07/19(土) 16:58:22 ID:jBy/EgFS
>>146 30個あるモデルは使用するDBテーブルは同じでバリデートの内容が若干違うので
モデルを複数分けした。
なのでモデルの数だけコントローラを増やすというのもなあ・・・
ページ構成もおかしくなるし
148 :
nobodyさん :2008/07/19(土) 17:03:55 ID:jBy/EgFS
コントローラの数はDBテーブルの数と比例するくらいの量で モデルの数はバリデートのケース分、増えて行ってる
149 :
nobodyさん :2008/07/19(土) 17:08:42 ID:jBy/EgFS
1つのDBに対して30通りのバリデートのケースがあれば コントローラが1に対してもモデルが30になる
150 :
nobodyさん :2008/07/19(土) 17:23:07 ID:jBy/EgFS
レスポンス的にはApp::Import('Model', $model_name);の方が負荷は軽減できるよね 管理的にも$usesで管理するよりも コントローラメソッドの先頭でApp::Importを宣言する方が管理しやすい気がする デメリットはコーディング量が少し増えるくらいかな でも、どのコントローラメソッドでも使うモデルだけは$usesに入れるから そんなにコーディング量は増えないかな
>>148 そもそも、バリデートの数の分だけ
モデルを増やすのがおかしくね?
モデルのsave()で、バリデートするかしないかのフラグがあるだろ?
これって考え方を変えれば、バリデート1(データチェックする)、
バリデート2(データチェックを一切しない)という二つのバリデートと考えられる。
だからバリデート3(一部だけチェックする)ってのも、一つのモデルに入れてしまうのもありと思うが。
あとは、Model->save()の前に、Model->バリデートタイプ = '一部チェック';
なんてやっておいて、Modelのvalidateメソッドあたりで、バリデートタイプをみて
チェック項目を変更すれば良いんじゃね?
Modelのvar $validate、やったことないけど、
コードの中からでも変更できるんじゃね?
バリデーションでモデル分けるのか・・・ なんか変な感じ。
それと、App::Importよりも、Controller::loadModel()の方がよくね? いや、使ったこと無いし情報も見つからなかったからよく知らんが。 ちなみに非推奨になったloadModel関数ではなく、 コントローラのメソッドのloadModel()だから。
154 :
nobodyさん :2008/07/19(土) 17:55:57 ID:jBy/EgFS
Modelのvar $validateが $validate1 $validate2 $validate3 という風に複数使えれば バリデート分モデルを増やす必要は無いけど バリデートタイプをみてチェック項目を変更ていうのは 変更項目が多いとコードが複雑に肥大化するのがなあ・・・
>>154 やろうと思えば、できるとおもうけど?
コントローラで、$model->save()呼び出し前に
$model->validate_type = 'type1';
モデルのどこかで、$this->validate = $this->{'validate_' . $this->validate_type};
そうすりゃ、$validate_type の条件でチェックしてくれるよ。
具体的にどこのメソッドでやるのがふさわしいかは
ちょっとやってみないとわからないけど。
訂正 そうすりゃ、$validate_type1 の条件でチェックしてくれるよ。
157 :
nobodyさん :2008/07/19(土) 18:19:45 ID:jBy/EgFS
>>156 その方法で出来るのなら、ちょっと試してみます
158 :
nobodyさん :2008/07/19(土) 18:24:34 ID:jBy/EgFS
>>153 App::Importよりも、Controller::loadModel()の方がよくね
理由は何でしょうか?
どう違うのですか?
>>158 $usesの代わりと考えるのならば、
$usesで指定したのと同じ状態になるのが良い。
App::Importは単にクラスを読み込むだけ。
$this->Model にインスタンスを生成したりしない。
コードをざっと見ただけの意見だが、
コントローラの初期化処理で、$usersを見て値が入っていれば、
Controller::loadModelを呼び出してモデルを生成している。
loadModelはクラス生成以外にもなんかやってる。
だからloadModelを使ったほうがトラブルが少なくなりそうだと思った。
でも使ったことは無い。loadModelは外部から使うべきものじゃないかのうせいもある。
(普通は使うべきじゃないのなら _loadModelになっているはずだとは思うが)
>>140 ・・・ごめん。セッションキー埋め込みだった。
161 :
nobodyさん :2008/07/19(土) 19:07:40 ID:jBy/EgFS
>>159 なるほど、よくわりました。
_loadModelてのは何ですか?
163 :
162 :2008/07/19(土) 20:14:27 ID:???
といっても、これ、知らなかった。loadModel() 特定のactionでしか使わないModelなんかは、これで動的に呼んだ方が良さそうだね。 修正しよっと
164 :
nobodyさん :2008/07/19(土) 23:06:40 ID:jBy/EgFS
バリデーションをビヘイビアを利用してyaml化にして コントローラ内でattach関数を使って読む込むyamlファイルを動的に選択させることで モデルを増やさずにバリデーションyamlファイルだけ増加させることで解決できた
165 :
nobodyさん :2008/07/19(土) 23:10:53 ID:jBy/EgFS
これでバリデーションが必要な画面数に比例してyamlファイルが増加していく
1.2からずいぶんと実践的になったよね。 フレームワークを使っている人が作っている感がでてる。
ローカルで開発してるんだけど、1.2RC2は1.1よりも動作が遅いな。
1.2になってsymfonyよりも遅くなったみたいだね。 しかもsymfonyの遅い原因だったPropelも今度のバージョンで速くなったし なんだかなー。
>>167 168
まじっすか。痛いっすね。
ただでさえ重いのに。。。
170 :
nobodyさん :2008/07/23(水) 22:31:35 ID:bVhJ1Ly7
どんだけ遅いマシン使ってるんだよwwwwwwww
171 :
nobodyさん :2008/07/23(水) 22:32:47 ID:pE/1LCdw
かといって、今後のメンテを考えると、1.1系で行くわけにもいくまい。 チューンナップが進むのを期待するだな。
いや、マジで遅いよ。 モッサリという感じ。 1.1はサクサクだったのに残念。
173 :
nobodyさん :2008/07/24(木) 01:13:17 ID:v8PYU5tT
キャッシュ利かせればモッサリとかねーと思うんだが デバッグモード解除してもモッサリするようなら SQLがらみ、bindmodelで上手にやれば問題なし
そういえばデバッグモードが重いって話じゃなくて?
この流れは、そろそろAkelos考えてみっかになるんだろうな・・・
176 :
nobodyさん :2008/07/24(木) 13:56:02 ID:YLl3rq+t
デバッグモードが遅いってだけの話じゃね? 1.2のbetaの時にくらべ、デバッグ情報の量が かなり増えているから。
いくらCakeに不満があっても、Cakeしか使えない・・・ Cakeが初めてのフレームワークでも、すんなり移れるフレームワークってないですか?? symfonyとかサッパリ;;
つ ちいたん
>>137-142 らへんの話に便乗するけど、
URLにセッションIDを埋める場合って
session.php内のuse_trans_sidを1にしないと使えないの?
PCサイトとプロジェクトが共通だから、なるべく共通的なところは
いじらずにやりたいと思うのだけど。
181 :
178 :2008/07/24(木) 20:16:32 ID:???
>>179 さすがにライトすぎるというか;
使ってもみないで言うのもなんですが・・・
CIとかも流行ってきてますね。ちょっと気になる。。
1.2は何回かリロードすると謎のwaitが発生する
単にキャッシュが有効な期間は速くて、有効期限が切れたら 読み直し(=WAIT)が発生しているだけだろ? 謎でもなんでもない。
back from vacation time to start working towards cakephp RC3 オイオイ、いつまでRCだすんだよ;
RC3 => stable となることを願うばかりだな
う〜ん。1.2のcakeコマンドが分からん。 $ ./cake bake all で、全部のテーブルの基本的な画面を一気に作ってくれんの? 順番に数字を指定するのが面倒・・・ MCVを対話式で一つ一つ作るよりはマシになってるけど。 テーブルの数が多いと、大変。しかも、いちいちtestのを 作るか?とか聞かないで欲しい。
188 :
nobodyさん :2008/07/29(火) 02:42:26 ID:ab6DF8xC
>>188 >最も重要視するポイント クオリティ
VIPクオリティでもいいですか?
CakePHPのサイトに繋がらないのは俺だけ? www.cakephp.orgもbook.cakephp.orgもダメだ…orz
191 :
nobodyさん :2008/07/29(火) 20:10:31 ID:2mZftY9A
きみだけだ
繋がったyo
193 :
nobodyさん :2008/07/30(水) 19:42:29 ID:g+nhVb89
どこの部分が?
「投稿(Post/posts)」と「タグ(Tag/tags)」がHABTM(posts_tags)で関連づけられている構造で 「あるタグが含まれる投稿の一覧」を得るにはどうすればいいですか? 投稿だけじゃなくて付帯するタグのデータも引っ張ってきて欲しいんですが ・投稿のMemoタグをクリック →Memoタグが付けられたPostの全情報を一覧表示 Title: メモその1 / Body: けーき始めました / Date:2008-07-28 Tag: CakePHP Memo PHP Title: メモその2 / Body: けーきのためにPHP勉強中 / Date:2008-07-29 Tag: Memo Ruby Title: らしくないメモ / Body: 内容は何でもイイんだけど / Date:2008-07-30 Tag: C++ Dlang Memo ↑こんな風に表示できるようにデータが欲しい 今はqueryを二回に分けて直発行でやってるんですが、もうちょいマシな方法はないものかと
vendors/commons.php内に共通関数を書いているんですが、 commons.php内の関数から同じcommons.php内の関数を呼ぶにはどのように記述すればいいのでしょうか? $this->関数名だと Using $this when not in object context とエラーが出てしまうので・・・。
>>196 クラスにしてないなら$this->はいらないでしょ。普通になんも付けずに呼べばいいだけだけど。
198 :
196 :2008/07/31(木) 15:54:35 ID:???
>>197 レスありがごとうございます。
自己解決しました。
Commons::関数名で呼び出すことができました。
(なにもつけなかった場合はundefined functionが出ました)
199 :
nobodyさん :2008/08/01(金) 00:59:56 ID:CpiiU14k
ん?
>>196 >>198 に追加で質問なんだけど、Commonsクラスをcommons.phpに記述している、
って認識でOK?
200 :
196 :2008/08/01(金) 11:40:22 ID:???
>>199 OKです。
Commonsクラスの中に書いた2つの関数を、片方から片方を呼ぶ
という感じです。
テーブル名やカラム名に日本語使うとうまく動かんとこがあるね
そもそも、そんな発想がなかった
テーブル名、カラム名に日本語使うと・・・ foreach ($部署['社員'] as $社員) { echo $社員['氏名']; echo $社員['性別']['性別']; ... } こんな感じになるの??
205 :
nobodyさん :2008/08/02(土) 12:07:43 ID:aQY+T7Eo
↑どこまでがマジ話なんだ
普通に笑ってしまった!
>>203 ,204
そういうのはuseTable使ってアルファベットだけにしてる。
作ってたら途中まで問題なかったんだけど、
SQLを""でクォートするところでちゃんとできずにSQLエラー。
正規表現がうまくいってないとこまで分かった。
2バイト圏じゃない人が作ってるんだから、かなり修正が必要そうだな
1バイト圏に移行することにより解決しました
1.2に対応した書籍って出てる?
CakePHP ポケットリファレンスは 1.1/1.2に対応してるようなことが書いてあったけど、 どこまで対応してるのかね?
RCで結構変わったっぽいからねぇ
>>210-213 現1.1ユーザーにとっては、1.2対応の基本は押さえられる
RC前なので、betaからRCになって変わったところとかは未対応。その辺把握していないと辛いかも。
ex Modelのconditions
1.2betaすら使ったことがない人は、買って損はない、と思う。
1.2のstableが出て、改訂版が出れば買うかなぁ
そういや今月末にまたcake本でるよね。 CakePHP徹底入門だったか。
もう入門本イラネ
>>216 まじか!
とりあえず買っておこうかな。
cakephp 全部持ってるけど一番役に立つのはリファレンスかな。
CakePHP徹底入門 (大型本) Amazonより > CakePHPの最新バージョンである1.2をメインとした初の解説書 ほんとうかよ? beta -> RC でずいぶんと変わったぞ? 時期的にあやしいんだよなぁ。
もうすぐRC3でるしねぇ・・・ Cakeって本と相性悪いねぇ。
開発をコンパクトにやってるのか、方針転換が早いからね 今Cake本出すならstableまで待って原稿上げる英断をして欲しい
これから着手する案件、1.1でやる。 仕事なら普通だよな?
223 :
nobodyさん :2008/08/06(水) 04:49:56 ID:c9uoLYnS
仕事なら普通に1.2だろ php5が出てるのにphp3でやるといってるのと同じだぞ
224 :
nobodyさん :2008/08/06(水) 04:52:09 ID:c9uoLYnS
もうひとつ付け足すと1.2は安定してるし 1.1と1.2の機能面での差は、かなりでかい
>>220 もう一年近く前になるかな?
CakePHPの本が何一つ出ていなかった頃。
海外の書籍でCakePHPがでると聞いて予約した。
いまだに出てないw 当然キャンセルしたw
>>224 機能面もそうだし、1.1と1.2じゃ仕様の変更が多いよな。
一番の基本である、findXXX系まで変わってるし。
1.1と1.2じゃなくて、1.1と2.0ぐらいのバージョンの差があるよ。
たしかに、RCは正式版じゃなくリスクもあるけど、流石にもう大丈夫だと思うな。
ただ作っているうちにstableでて入れ替えることになるだろうから、
UnitTestはちゃんとしとけ。でないと再テストが苦痛になる。
仕事だから当然だ。
>>228 おお。bakeで作って認証かけてないやつあるわ(笑)
googleに発見されたらアウトだ。
さて。手っ取り早く対応するには、どうしようかな。。
>>231 認証かけられないんだよね。諸事情で。
暫定的に、robots.txtで逃げたけど、どうしよう。。
そりゃあ、単純にdeleteメソッドを置いておけば踏まれるだろ
>>228 の「似たような話」について
おっ。見つけられた。gigazineだったか。
Googleにサイトを全消去されたかわいそうなサイト
http://gigazine.net/index.php?/news/comments/20060331_google/ 正確には、Googleがページのクロールに使用する「Googlebot」によって
CMS(コンテンツマネジメントシステム)のデータが全部消えてしまったというお話。
このCMSは従業員が各自で情報を入力していくという、まぁ一般的な方式で、
最終的なテストも終えて、インターネット経由でアクセスできるようになったわけです。
が、わずか2,3日後に悲劇発生。全ページが消えてしまい、
「内容を入力してね♪」
というような初期ページのみになってしまったのです
今時誰でもデータ全消去できるってどんなサービスなの?
>>232 世の中には、robots.txtを守らないボットがあるから
気をつけよう。
スパムメール送信の為のアドレスを集めるボットとか。
>>235 こんな感じじゃないかなぁと思う。
1.クッキー対応していなくてもログインできるようにしたために
URLにセッションIDが追加されてしまっていた。
2.TinyMCEのようなブラウザで動くHTMLエディタを実装していた。
これにより、コピペをするとセッションIDが付加されたAタグまでコピペできる。
3.これが公開ページに置かれ、Googleが発見した。
つまりセッションハイジャック状態
4.セッションIDを含んだアドレスをgooglebotが発見、次々に
セッションIDを含んだリンクをたどる。
5.その中にdeleteリンクがあってgooglebotがそれをクリック。
ログインの仕組みを作るにはCookieを使うのが常識だけど、
携帯対応とかでCookieを使わずにアクセスできるようにしちゃうと大変だね。
URLにセッションIDが含まれているときは、携帯から
アクセスできないようにするという考えもあるけど、
そこに携帯サイトもクロールしてほしいとか言い出すと・・・
ワンタイムトークンでも使うのがいいのかな。
239 :
nobodyさん :2008/08/09(土) 19:03:49 ID:z9jw78px
bakeで作ること自体、素人のやることだと思ってるから どうでもいいっちゃー、どうでもいい
bake使ったことないからよく分からんwww
cakePHP 1.2 RC2ってSQL Server 2000から正常にデータ取得できる? SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES が実行された段階で、 「SQL Error: データベース コンテキストは targetdb' に変更されました。」 ってWarningが出て 「Error: Database table targetviews for model Targetview was not found.」 って怒られるんだが、targetdbにはちゃんとtargetviewsってビューを作成済み。 クエリアナライザからtargetdb上で SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES してもちゃんと抽出できる。 理由がよく分からん…orz DBがMySQLなら上手く行くんだが…
>>241 ADODBを使ってるの?
SQL Server 2000自体には対応してないでしょ
243 :
241 :2008/08/12(火) 06:18:34 ID:???
>>242 d
ADODBじゃなくてmssqlで繋いでる。
無理にmssql使わなきゃ良いんだろうけど、
既存アプリをcakePHPに移行するとどうなるか
テストしてるから上手く行かないならDB変えないとなぁ…
dreaming of a cakephp RC3 楽しみなような、おそろしいような・・・ はやくstableになってくれ〜
245 :
nobodyさん :2008/08/22(金) 00:34:13 ID:MNsA+EAa
すごくバカな質問するんだけど、怒らないで聞いて欲しい。 CakePHPを勉強しているんだけど、命名規則にちょっと疑問が。 なんで、複数形じゃなきゃダメなの?複数形にしなかったらどうなるの?
しなくても出来るはず。 した方が楽に自動設定できるだけ。
単数と複数の区別は重要。 それをsつけるだけであらわせるんだから便利じゃん。 しなかったら気持ち悪いと思うんだけどな。
以前のバージョンとき indexs じゃだめだったときあったな。 indexies ってやらんと。 複数形って規則性がバラバラだから難しい。 グレーの色も gray でも glay でもどっちでもいいんでしょ?
複数形一発検索とかのサービスはないのかな? 英語の勉強しなくちゃな…
内部に、複数形⇔単数形の変換関数か何か入ってるんじゃないの? RoRは入ってるとか聞いたけど
coreに入ってるinflector使えばでできるんじゃないの?
index => indices
俺は英語よりも日本語のほうが表現力の豊かさの点で好きなんだが 複数形という概念は、すごいと思ったな。 大昔に作られた英語が、ここまでプログラミングにマッチするとは。 もし複数形がなければ、変数名に悩むことが多かっただろう。 でも、日本語は、単語と単語をくっつけて合成語を簡単に作れるから やっぱり日本語が便利だな。「前月商品金額合計」みたいな。 英語だったら長い。 あと、音を表すだけのひらがな・カタカナ。 外来語を簡単に日本語に変換できてしまうカタカナ。 同じ言葉でも、漢字で書けば男っぽく、ひらがなで書けば女っぽく、カタカナで書けば外国っぽくなる面白さ。 あぁ。日本語ってすばらしい。
和んだw
英語的に正しいかとか気にしてないなぁ。 LastMonthItemPriceSummary とかさぁ。
ワロタw
SexAndTheCityHelper
260 :
249 :2008/08/23(土) 15:26:42 ID:???
>>252 横着な要求を聞き入れて九打差り、官舎孟子安芸鱒
>>250 入ってない単語はいちいち登録してやらないといけないんだよな。
もしくは機能を無効にするか。
結局余計な仕事を増やす設計になってる滑稽さ
1行定義する労力と、単複区別不能なコードとどっちがいいか?
263 :
nobodyさん :2008/08/24(日) 13:54:17 ID:OI90xc3U
複数形とかなんでそんな仕様にしたんだろう?
264 :
sage :2008/08/24(日) 17:24:57 ID:KEdveE+J
すみません、アホな質問かもしれないんですが。
今まで1.1の環境でPEAR::Pagerを使うためにvendor()で読み込んでたんですが、
1.2に入れ替えたためDeprecatedだというWarningが出ます。で、1.2からは
http://book.cakephp.org/ja/view/538/vendor App::importを使うようにと書かれているんですが、このApp::importって
どこに書けばいいんでしょう?posts_controller.phpのクラス?色んな
ところに書いてみたんですが、全部だめー!て怒られました。
Cakeの構造自体理解してなくてすみません。どこに書けばいいんでしょうか?
265 :
264 :2008/08/24(日) 17:26:21 ID:???
すみません、sage間違った・・・
>>264 コントローラーでもどこでもいいと思うけど。
だめー!って書いてあるエラーの内容見てみれば?
267 :
264 :2008/08/25(月) 00:01:57 ID:???
>>266 なんか色々いじってる間にHTMLヘルパーのエラーが出てしまって
再現できません><すみません!また書きます!
268 :
264 :2008/08/25(月) 00:07:54 ID:???
出ました。えーとチュートリアルで言うとposts_controller.phpの中の class PostsController extends AppController{ App:import('Component', 'Pager'); ... } と書いてみたところ Parse error: syntax error, unexpected T_STRING, expecting T_FUNCTION と怒られます。何か根本的に勘違いしているような気がするのですが、 どこがそうなのか・・・
vendor(パス) → App::import(適当な名前, arary('file'=>パス.php); こんな感じ
270 :
264 :2008/08/25(月) 00:33:04 ID:???
>>269 App::import('Vendor', array('file' => 'Pager.php');
としてみましたが、エラーメッセージ変わらずです。
vendorsディレクトリの中はPager(ディレクトリ)、Pager.php、
include_path_vendors.php(PEARのディレクトリへパスを通すため)
が入っています。うーむ。
App::import('Vendor', 適当な名前、array('file' => 'Pager.php'); だったか?
>>264 depricatedなら1.2のページャとimportしてるライブラリの関数名が被ってるんじゃない?
というかパースエラーさらしてる時点で初心者とみた。
class PostsController extends AppController{ App:import('Component', 'Pager'); ... } じゃあ動かないよ class PostsController extends AppController{ function goodluck() { App:import('Component', 'Pager'); } ... } じゃない?
Zendと違ってCakeは直接Cakeの中に色々入れていくタイプなのかな? Zendの場合は必要なディレクトリ構成さえあれば外部から呼んでくれるが
そうそう、全部自分で完結させるタイプ、というか。 そのままディレクトリをサーバーに置けば使えるっていう。 私は結構気に入ってたりします。
FW内で自己完結できるのはいいよな 環境移すのも楽だし
>>276 VCEEとかだと.NETのフレームワークは外部から読み込むよな
そんな感じでもう慣れちゃったから内部完結みたいなのがまだ慣れない
278 :
nobodyさん :2008/08/27(水) 11:21:42 ID:wzctFyRR
Webに公開されないプログラムでCakePHPを使いたいんですが、 CakePHPはhtaccessやルーティングでプログラムを結び付けてるんで、やっぱり使いにくいんでしょうか? CakePHPのデータベース周りが便利すぎて、どうしても使いたくなっちゃうんですよね。。
279 :
nobodyさん :2008/08/27(水) 12:47:13 ID:tVkJ8wOQ
社内向けのアプリ? 別にCakeでもいいんじゃね?
>>278 多分、Apache(Webサーバ)を通さず実行する
スクリプトとしてphp+cakeでやりたいってことじゃね?
281 :
278 :2008/08/27(水) 14:30:57 ID:wzctFyRR
ウェブサーバーが無いと スクリプト動くわけ無いやんw CakePHP以前にPHPが動かない。 PHPだけじゃなく、CGI、Perl、Ruby、何も動かんw
ひどいつりだ
284 :
nobodyさん :2008/08/27(水) 16:48:18 ID:gXMXTzpH
localhostだけで動かすか、IP規制すればいいだけのことじゃん
>>294 それでもWebサーバは必要。
なんか上げ足の取り合いになってる感じだが
CLIのphpで動くようにコード書けば良いだけだろ。JK
今、cakephpでブログを作って運営してるんだけどタグ機能をつけたいと思うのね。 でも、一度完成したプログラムをいじるのがなんかすごい抵抗があるんだけど。 プロの仕事だと完成後にあれつけろこれつけろってのもよくあること?
そのCakeで作ったブログとやらを見てみたい。ぜひ・・・・
>>289 「(タダで)こういう機能を追加して欲しい」
ってのはしょっちゅうだwww
ありがとうございます。やっぱそうなんですか。 作ったの改造するより、最初っから全部作った方が楽しいですよね。 家のリフォーム業者も同じことを思うんでしょうかね。
プロ・趣味問わず今のWebアプリはそういう増改築は不可避でしょ? タグ付きで作り直してもまた別の機能付けたくなったらまた作り直し? 今の状態でとりあえずタグ機能付けて時間あったらソース修繕(何て言うんだっけ)じゃないの
>>293 たしかにそうですね。一個一個作り直してたらキリないですね。
とりあえずつけることを考えてやってみます。
勉強になります。ありがとうございます。
あとから修正すると、バグ混入で今まで動いていたところが動かなくなるよ。 そうならないようにユニットテストを書いておくわけだ。 書いておいたテストを実行すればテストできるわけだから、 修正するたびに、毎回全部をテストをするわけだ。
CakePHP徹底入門って初心者向きの内容? やっぱり気になる・・・・
>>295 そうですね。たしかにバグりますよね。
あれ・・・ここいじってないんだけど、どうして動かないの!?って。
だからあまり触りたくなかったんですが。
ユニットテストのメリットってそこにあるわけですね。
>>299 CakePHPと名の付く本は全部買ってる拙者、ぱらぱらっと読んだ感じではイマイチかと。
他の本との差別化をしようとしてか、bakeに多くのページを割いてる。
インストール + bake で半分とか。
拙者のお薦めは PHPフレームワーク完全マスター + CakePHPポケットリファレンス。
前者で入門して、あとは後者をリファレンスに。(後者も一度全部読むと良いと思う。)
>>300 レビューサンクス。
やっぱりbakeメインかぁ・・・
bake使わないしなぁ・・・
入門はもういいから、
もっとハック的なのをメインにしたのが欲しいところ・・・
bakery読めないし・・・・;;
CakePHPポケットリファレンス は立ち読みしたが悪くない 1.2のstableでて、この本が対応したら買いたい あと買った中では CakePHPガイドブック は初中級者向きとして悪くなかった。
Cake初心者の俺。 1ヶ月前にCakePHPポケットリファレンスを買ったが、 大活躍している。 ただ、それだけではCakeについて全く理解できないので、 友達からCakePHPガイドブックを借りた。 自分としては、『リファレンス+ガイドブック』の組み合わせで 全てがまかなわれると思う。 他には『Fast CakePHP』を読んだけど、あれは簡単すぎた…。
bakeは釣り
305 :
nobodyさん :2008/09/02(火) 15:54:42 ID:DwwkROZ8
マックのインターフェイスービルダーみたいなのでインターフェイス作ってcakephp出来たらいいのに。
HTMLエディタ使え
RC3まだかな〜 というかStableまだかな〜・・・ 作業大変そうだから無理はいわないが・・・
ここ1年でCakePHP用の俺俺関数がたくさん出来た 殺人的な工数もなんとかこなせてる。俺のスキルがUPしたんじゃなくて 悪魔でCakePHP用の俺俺関数のおかげ 2、3年はこれで喰っていけそうだ。 短納期でいけるようになったのは俺だけじゃないと思うから もしかするとWEBのシステム単価は低くなると思うよ
以上悪魔さんのレポートでした
2ちゃんのようなスレッド掲示板ならCakePHPで1週間で作れるやつは多くなってる気がする だから2ちゃんのようなスレッド掲示板の見積もりをCakePHP使ってる個人に出すと 15万円〜20万円くらいが相場になってきてるよ
CakePHPで儲けるなら 安い単価でどれだけ沢山のサイトを作るかだよな。 結果としてWEB制作費用の相場は下がるけど 業界がそういう流れになってるから仕方ないよね
もしくはめっちゃくちゃ安く作って、保守を高くする。 これが一番儲かりそう。 ホームページ無料で作ってサーバー代をすげー値段とるとこも多いからね。
コーディングやシステム設計してるとき なんで俺て頭いいのと思うことが最近多い。 過去の経験も大事だけど、経験にはない ひらめきみたいなものも大事だと思う 経験+ひらめきがプラスアルファされることで良いものが早く出きる
近いうちに間違いなく 何でこんな頭悪いことやってたんだ俺 設計からやり直してー ってなる。 ならなかったら頭が停滞しているということ。
314と315の繰り返しだよね。 プログラムって。
日によってプログラミングが冴えるときと、そうじゃないときがある 冴えるときは別人のように俺は天才と思うときがあるけど 50%の割合でしか出せることが出来ない
納期jに追われてるときに集中力でるから 天才的なコーディングになることが多い
自信過剰な性格じゃないけど、プログラムに限っては 天才と思うことが多々ある。
朝が一番頭が冴えると思う。 朝作れなかったら、その日はもうだめだ。
今日は調子悪いので2ch見て過ごす。 まあ、週に3,4日はそんな感じ。
323 :
nobodyさん :2008/09/09(火) 15:11:13 ID:1fHefJEI
cakephp使う以前はsmartyでfetchしたhtml内容をfileにして保存していたのですが cakephpの表示結果をhtml形式で別に保存する事は可能でしょうか。
テンプレートでob_flashとかcache系の処理でなんと出来そうじゃない? と適当に思い付いた事を言ってみる
325 :
nobodyさん :2008/09/11(木) 00:25:09 ID:ldL7ucwZ
Smarty使えばいいがな。
>>324 俺もキャッシュでいいんじゃないの・・・と思うので、同意。
327 :
nobodyさん :2008/09/16(火) 12:22:26 ID:AZ36dHRD
バリデーションで任意入力のチェックをする場合に悩んでいます。 たとえば郵便番号は必須でないけど999-9999とかでチェックしたい場合 ruleで正規表現を使うと入力していない場合でもエラーが出てしまいます。 解決策はありますか?
329 :
nobodyさん :2008/09/16(火) 13:57:26 ID:AZ36dHRD
>>328 ありがとうございます!!ためしてみます。
330 :
nobodyさん :2008/09/16(火) 14:11:56 ID:AZ36dHRD
>>328 'allowEmpty' => trueで出来ました。
331 :
nobodyさん :2008/09/17(水) 04:28:53 ID:BI/ji3+I
formヘルパーがなんか使いにくく感じる。 意図しないDivやらFieldsetが吐かれ、 それを抑制するオプションが用意されていないものがあったり。 あっても引数にnullやfalseを並列しなきゃならない。 checkboxによる1フィールド複数選択が作りにくい気もする。 当方、checkboxやradioボタンは<ul>-<li>でマークアップするのが好きなんだけど、 ヘルパー使うとうまくいかなくてやむなく自前で <input name="data[Model][field]"〜 />って書いてしまう。 私の書くviewはヘルパー使ってたりなかったりでお行儀悪く感じてます。 皆さんformアイテムは全部ヘルパー使って書いてます?
332 :
nobodyさん :2008/09/17(水) 15:03:58 ID:HoHA6PJP
フォームは今のところヘルパーで書いてます。 まだまだ小規模なのでこれからはまるかもしれんが・・ アプリで共通で使う配列の指定はどうしてますか? app.phpに記載してbootstrap.phpでconfig('app')として取得できないです。 さらにglobalでしても何も取ってこれないのは何故??
2 tickets closer to RC3 いよいよ・・・か!?
334 :
Noone :2008/09/17(水) 16:58:38 ID:???
RC3かよ。いい加減に早く出してほしい。 待たせていることをきちんと考えて、最優先で仕上げてもらわないと困る。
俺は困らん
RC2で満足してる俺がいる
複数チェックできるようにしたいのですが、配列から複数のチェックボックスを作成するにはどのようにしていますか? Formヘルパーで実現できるかどうか教えてください。
>>339 > 複数チェックできるようにしたいのですが、配列から複数のチェックボックスを作成するにはどのようにしていますか?
> Formヘルパーで実現できるかどうか教えてください。
ちなみに1.2 RC2です。
マルチポスト乙w
ここみてる人ならたいていフォーラム見てるでしょw
フォームヘルパーつかわないな。俺。 使うのは ajax ヘルパーのみかも。
>>343 ajax ヘルパーってpagination以外にどんな便利な使い方があるの?
RTFM
347 :
nobodyさん :2008/09/24(水) 09:24:16 ID:J5k/glN9
例えば、A、B、Cとテーブルがあって、AとBが1対多、AとCも1対多の関係です。 Aのコントローラーのindex()でBに関連付けられているA、Cに関連付けられてるA をそれぞれ分けて抽出するには、どのようなモデルの関係と条件を作ればいいのでしょうか? paginate()を使っているのですが、->recursiveを変えたりとかしても、 paginate()で実行されるconditionが反映されるSQLでは Bのテーブルが含まれないので、どうしたらいいものでしょうか?
348 :
nobodyさん :2008/09/24(水) 11:52:29 ID:bvaeEkej
初歩的な質問で申し訳ないのですがぐぐってもさっぱりなので質問させてください。 サーバにcakePHPをアップロードしていろいろやってて、同じディレクトリーのほかのファイルにアクセスしようとしたら出来ませんでした。なんでですか? ディレクトリー構造はこうです。 public_html ┬ cakePHP ├ testphp ←ここの中にアクセスできません └ eroPhoto ←ここの中にアクセスできません ご教授お願いします
>>347 よくわからないけど、Aのコントローラのindex()で
Bのデータ(A付属) と Cのデータ(A付属)を取り出したいってこと?
普通はAのコントローラーで、Aのデータを取り出す。
(ついでにBとCのデータも一緒についてくる)って形だと思うんだけど。
これってインストール超カンタン?
いろいろ調べてみたけど、 PHPのフレームワークは cakephpで決まりだな。
>>344 リンクつけたり、フォームをajaxにしたり。
すっげー便利じゃない?
javascriptでAjax書くよりスッキリしていい。
俺気が短いからできるだけ早く動くようにできるだけAJAXで書いてるんです^^
354 :
348 :2008/09/24(水) 23:43:42 ID:bvaeEkej
>>352 うわ〜すげー久しぶりに2ちゃんで感謝しちゃう;;
教授!!ありです!!!
355 :
nobodyさん :2008/09/25(木) 03:14:13 ID:FEQjxQnp
>>349 Aの外部キーを持つテーブルBとCがあって、1対多で、
Bに関連づく場合とCに関連づく場合でAの性質が異なるので、
分けて出力できるようにしたいです。
SQL的には
SELECT * FROM `A` WHERE id IN (SELECT DISTINCT A_id FROM B)
みたいな感じなのですが、やはり$usesでBのモデルも指定して、まず
SELECT DISTINCT A_id FROM B
の部分を実行して、その結果をconditionsに入れる感じしかないのでしょうか。
>>351 詳しくまとめて教えてください。興味ある。
それはないわー
359 :
nobodyさん :2008/09/25(木) 15:32:43 ID:ddZpNdwx
俺、cakePHP1.2 stable が出たら、田舎に帰って結婚するんだ
へー
質問です。 cakePHP1.2でSecurityコンポーネントのSecurity->requireAuthを使うと input->hiddenのnameがすべて{_モデル名}になるのは仕様ですか? data[_Hoge][id] みたいに勝手にhiddenに(_)アンダースコアが付くようなんですが。
インストール終わったんだけど 設定はどうすればいいの?
http://p4life.jp/cake/cake_app.html このムービーを見ながら進めてるんだけど、
ムービーの55%くらいのところ、
http://localhost/bookmark/items をブラウザのアドレス欄に入れて、
表示させるところでつまずいています。
CakePHP Rapid Development
Missing controller
You are seeing this error because controller ItemsController could not be found.
Notice: If you want to customize this error message, create app\views/errors/missing_controller.thtml.
Fatal: Create the class below in file : app\controllers\items_controller.php
<?php
class ItemsController extends AppController {
var $name = 'Items';
}
?>
となってしまいます。
自己解決しました。 エラーの表示であってました。 よく見てなかった。
cakephpかんたんに いれられるレンタルサーバーおしえて。
「cakephp対応」って書いてるところでないとだめ? それとも、php+mysql対応って書いてるところであれば どこでも入れられる?
>>366 cakephpのインストールに必要なものを挙げていけば自然にわかるだろうがよ
いいから教えてよ
>>369 phpとmysqlだけでは駄目で、
他にxvfbとgs(Ghostscript)とcli-phpが必要。
phpが入っていればcli-phpも多分入っていると思うけど
xvfbとghostscriptは普通入ってないので、cake-php対応のところがベスト
caekPHPで、一番安いレンタルサーバーはどこ?
日本語でおk
cakephpを使えるレンタルサーバーで 一番安いところはどこ?
日本語でおk
cakephpを使えるレンタルサーバーで 月額の料金が一番安いところはどこ?
日本語でおk
マジレスするとcore。まぁ使えるってだけだが。
>>377 なるべく安い方がいいんだけど、
設定がなるべくかんたんなほうがいいな。
そういう観点だと、どこがおすすめ?
>>383 つ /libs/inflector.php
>>381 環境さえそろってりゃ使う分には大した手間はかからんだろうよ。coreで十分。
シェルが使えればなお良いがそうなると月2000円以上のクラスか海外使うしかない。
>環境さえそろってりゃ ↑これってどういう意味なのかな?
そのままの意味じゃないの?
じゃあその環境って具体的になんなの?
普通に使える環境ならいいんじゃないの?
バカは書き込むなよ レンタルサーバーでcakeが使えるかどうかの話だよ
>>390 >バカは書き込むなよ
自己矛盾起こすなよww
BLOBってなに?
>>393 それは15年くらい修行しないと無理だ。諦めろ。
じゃあ15分くらいで実行できる、 なんかクエスト出してよ
もしかして、フィールド1の値をPHPで取得して、 フィールド2の値をPHPで取得して、 それをPHPのコードで足して、 変数にいれて 出力して、 ってやるのかな?
>>395 おお死んでしまうとは情けない。
勇者よ。
本屋へ行ってcakePHPの本を買うのだ。
ウッウー! ウマウマー♪! Λ_Λ Λ_Λ ./) ゚д゚)') ('(゚д゚ (ヽ (( / / )) ((ヽ ) )) し―J し―J
で、RC3はいつなのかな?2tichet closerから1ヶ月くらい立ちそうだけど。 そもそもRC3で直るバグとかって大きいのあるのかな?
cakephpやるときの専用IDEとかってあるの?
RC3きたけど、毎日のようにnightlyいじってたので新鮮味が・・・w あと、RC2のとき、リリース直後にすぐ修正版がでたことを忘れないように!
開発途中の社内アプリをRC2からRC3に入れ替えたけど、うごかねー model->saveが全部うごかねー
model->saveでして保存する配列はモデル名が必須になった。 と適当に言ってみる。
CakePHPブログチュートリアルで 10.1.8 Postビューの作成 がエラーでてできねーと思ったらチュートリアルが1.2用なのかよ。 1.1でやってて1時間くらい悩んじまったよ。
>>408 まじ?大きな変更はないってどっかに書いてあったけど。
412 :
408 :2008/10/04(土) 07:01:33 ID:???
漏れの勘違いだったようだ。saveは動きます。 テストが動かなくなったけどね。simpletestうぜー
simpletest が動かないなら、そのsimpletestを動かすテストケースを作らないといけない。。。 本末転倒とはこのことですね。
cakeって、必ずmysqlと連動させないとだめなの? シンプルなものとか、データーベースからめないで 作りたいときは、データーベースは連携させなくてもつくれるの?
またおまえか
cake使うときは、普通は smartyは使わないの?
>>418 Smarty使う必要性は?
あの手のテンプレートエンジンって、既に過去の遺物だけど。。
420 :
nobodyさん :2008/10/06(月) 07:23:58 ID:8+YJokg0
テストについて、えろいひと教えて app/test/case/model/hoge.test.php --- class HogeTest extends Hoge { var $cacheSources = false; var $name = 'HogeTest'; var $useDbConfig = 'test_suite'; } class HogeTestCase extends CakeTestCase { var $fixtures = array( 'app.hoge_test' ); --- app/test/fixture/hoge_testfixture.php --- var import = array('table' => 'hoges'); 一部省略しているけど、普通にテスト作って、test.phpを実行すると 「Database table hoges for model Hoge was not found.」 と怒られます。config/database.phpには$testでテスト用DB指定して、 実際にデータベースも作っているんだけど、このエラーのように hogesテーブルっているの?hoges_testができているから、 これだけで良いんじゃないの?hogesとhoges_test2つ作ったら エラーはなくなったけど、意味なくない?
さてどこからツッコんだものか
* ←ココ
ツ・・ツマンネーョ・・・アァッ
CakePHPカンファレンス 参加登録しますた
忘れてたーと思って見に行ったら埋まってた。 30分で全部埋まってるw
まだ半分追加枠があるさ。
smartyとcakephpって排他使用なの?
あー、もういんじゃねえの、stableで。 見過ごせないチケットあんの?
データベース使わないで.datとかに保存するってことできる?
>>430 CAKEでやる利点をあまり思いつかない
会員系サイトつくってんだけど、そいつらのコミュニティ掲示板に画像アップしたいって いいやがんのよ。で、普通にwebrootの下においたら、全員に丸見えだからさー どっかに起きたいんだけど、php経由で認証判断してファイルを読み込む仕様なんだけど こういう系のファイルってみんなはどこにおいている? 候補1)appの下にfilesとかdir作って放り込む 候補2)tmpの下におく 候補3)localeの下におく 候補1っすかねー それか素直にDBにバイナリで持つか
データーベースって画像も登録できるんだ?
データベースを何だと思ってるんだw
いやあ、、、 テキストだけを登録できるソフト、って 先入観があったから、、、、
Cake始めようと思うんですけど、お勧めの書籍とかないですか?
438 :
nobodyさん :2008/10/09(木) 22:07:38 ID:z61RYR7M
質問です。 Cakephp1.2-RC3でformヘルパー使用してて、radioボタンのnameを[Model名][hoge]みたいにしたくて、 $radioName = 'Model名.hoge'; としたのですが、下記のようなエラーが出てしまいました。 ConnectionManager::getDataSource - Non-existent data source default ちなみにDBは不使用です。 よかったら教えてもらえませんか…
439 :
438 :2008/10/09(木) 22:10:59 ID:z61RYR7M
<?php $radioName = 'Model名.hoge'; $radioValue = array("1"=>'1'); ?> <?php echo $form->radio($radioName,$radioValue); ?> こんな感じです
>>436 CakePHPガイドブックってのが良かった。
あとはオンラインのマニュアルと、ポケットリファレンスが
あれば十分
441 :
438 :2008/10/09(木) 22:27:12 ID:z61RYR7M
すみません自己解決しました。 ご迷惑をおかけしました
CakeってDB不使用にしてModel呼び出すとエラーになりませんか?
443 :
nobodyさん :2008/10/10(金) 22:48:18 ID:/mk3YX6a
DBに画像保存できるやん
>>442 $uses=false;
ってすれば別に怒られないが。
ビュー不要のアクションって、どうやって書けばいいのかな。 function test() { echo "hoge"; } ってコントローラに書いたら、hogeは表示されるんだけど、test.ctpが無いと警告が出る。 1.2にて。
>>445 ごめん自己解決。
function test() {
$this->autoRender = false;
echo "hoge";
}
でいけた。
>>444 それってその時点でModel使うの諦めてませんか?
何がしたいんだよ
>>448 DBを使わないフォームを作成したいのですが、
Modelを使用せずに、Controllerに入力チェックとか書いちゃうのは
MVCとしてどうなのかなぁと思いまして
MVC的に言えば、データの保存先が データベースなのか、ファイルなのかは関係ないはずなので、 入力チェックをするとしたら、モデルでやるのが妥当。
DBlessModel作っちゃえYO
モデルに var $useTable = false; でモデルつかってDB使わずでいけるだろ。
>>452 その状態でバリデーションとかヘルパー使うとModel.phpでエラーになるんですよね
そーゆーことだったのか。
少し気になったんですが、仕事でCakePHPを使っている人って 今案件受けたらRCのCakePHPを使うんでしょうか…? それとも1.1ですか?
>455 先日納品した案件は1.2RC2。特に問題はなかったよ。 今日から新しいプロジェクトの開発にかかるけど、そっちはRC3でやるつもり。 1.1は今後使うつもりはないですわ。 以前1.1で開発してたものを途中で1.2に乗り換えたとき、 変更対応でかなりロスしたもんで。 いくら現状唯一のstable版とはいえ、1.1の文法がヘタに染みつくと1.2への移行が精神的にきつくなるかと。 さて。飯にしようかね。。。
そんなに変わったのか〜
AuthComponentでAjaxログインしようとしても <?php echo $this->requestAction('/users/login', array('return')); ?>と書くと users/loginにリダイレクトしちゃうのは仕様?
test
PHPならどこでもいい話題だけど、あえてここで。 PHPのIDE何使っている?Eclipse? 俺、どうもEclipseのごちゃごちゃ感になじめず 今までテキストエディタを使っていた。 Java以外はなんか怪しいにおいがするし。 で、NetBeans 6.5が標準でPHPサポートするではないか。 今RCがでてる。一般的なIDE的機能はサポートされているだろうから 俺が興味あるのがリファクタリング機能。 デモをざっと見たところ変数名の置換とかには対応しているのかな? ためしてみようとおもう。うまくCakePHPと連携できるかな? もしすでにやっている人がいたら、なんか教えてちょうだい。
NetBeansはいずれCakePHPにも対応するらしいから期待してる。
>>461 へぇ。マジか。CakePHP対応ってどんなことするんだろう?
残念。NetBeansでリファクタリングはサポートされていないようだ。 デモにあった名前変更は、よく分からないけど カーソル行があるスコープ名前を一括で変えるだけ? 遠くにあるコードまでは変わらないようだ。残念。 まあこんなもんか。PHPとしてはまだ初期段階だろうし、 型無し動的言語のリファクタリングは難しいだろうし。
明日カンファレンスだってーのになんだこの盛り上がりのなさは
行ってみたいけど、こういうとき地方は損だなあと感じる。
参加人数少ないしなぁ 行けるなら行きたいが
東京までの交通費が痛いよね。
いまカンファレンス来てるんだが、他に来てる人いる?
会社経費で来てますよ RC4までくるとは予想外
1.2RC3 今ここ 1.2RC4 もうすぐ出る 1.2Stable バグが0件になったら出る 1.3 機能追加等 2 PHP5のみサポートに変更 3 PHP6対応?
結構道のりは長そうだ
1と2同時進行とか無理かなぁ かなぁ
PHP4ってIE並に悪だよな
また頭悪そうな奴が来た
RC3 で $html->input('Model/field'); が使えなくなって $html->input('Model.field'); だけになったんだな。 最初気づかなくて焦ったぜ。
これからCakePHPをデファクトスタンダードにしていくためには、 CakePHPで作られているCMSを有名にするのが早いのだろうか。 XOOPSレベルのCMS作って、有名どころの拡張モジュールを移植しまくれば。。。
自分用のCMSっぽいものをつくっているけど、 表から見える所はいいんだけど、ただひたすら管理画面を作らなきゃならないのが めんどくさくなって手抜きしちゃうんだよなー。
>>469 会社の経費でってすっげーいい会社ですね。
うらやましかー
save関数でupdateするときカラム指定しないと
idとcreated以外の全カラムが更新されるよね?
俺はカラム指定で保存する場合はこうしてるよ
更新カラムが少ないときはこうするけど
$this->data['モデルA'] = array('name'=>'うんこ');
$this->モデルA->save($this->data, false, array('name'));
更新カラムが多いときはこうすると楽だよ
$this->data['モデルA'] = array('name'=>'うんこ','mail'=>'
[email protected] ');
$this->モデルA->save($this->data, false, array_keys($this->data['モデルA']));
>>453 php初心者だと思うけど
なんか間違ってると思うよ。俺は
var $useTable = false;
でいけてるよ
IDE環境だけどCakePHP対応して欲しいと思うなら eclipseで自分にあったプラグイン作ればいいよ これほど自分にあったIDE環境はないよ
ページング処理をしたく、 controllerに、$this-set('users',$this->paginate()); と書いたのですが、 Fatal error: Call to undefined method TasksController::paginate() と、コントローラでエラーが出ます。 こうした場合、どこを調べれば良いでしょうか?
>>482 ○ $this-set
× $this->set
ここらへん?
484 :
482 :2008/10/29(水) 15:32:02 ID:???
>>483 cakephpの古いバージョンを使っていたせいでした; ごめんなさい
確かにそこも間違えてました;;
submitiボタンに画像を使いたいのですが、formヘルパーのsubmitではできますか? それともhtmlヘルパーのimageで工夫すればよいのでしょうか?
>>485 submitのオプション又はsubmitImageで出来ますがマニュアルぐらいは読んどこう。
>>486 謝謝
googleで調べまくっていたのですがなかったのですがマニュアルにありましたか。
もっとじっくり読めばよかったです。
なんか文字小さくなっていたり、例が少ないのも一部あるけど 標準ヘルパー系はマニュアルにちゃんと書いてある
>>489 特定のページのみ、右カラムのメニューになぜかまたヘッダー部分が出力されているから。
アプリのバグ。
>>490 なるほど。バグすか。
読めなくて困るんですよね…
スレチなんだけどさー
小さな会社の優秀な技術者の採り方 第0回を開催しました
ttp://techlife.cookpad.com/2008/10/27/yu-shu-0/ この記事読んでどう思う? 特に下のあたりについて。
>入社しようと思った理由
> * やりたいことができる
> o 好き勝手やってよい文化がある
> o 経験が生きる
> o キャリアパス上重要なことが学べる
> * 環境がいい
> o 優秀な同僚
> o 海外の事業所がある
> o 女の子かわいい
> * 会社の将来性が感じられる
> o 世界で唯一のチャレンジを行っている
> o 目的がはっきりしている
> * 感じが良い
> o 採用プロセス上 で会ったのがとても良い人
> o 社長が面白い
> * 縁があった
> o 友達とか先輩とかが居た
> o バイトしてた
まーまーそー言わずにさー感想聞かせてくれよ− 頼むから次は、スレ違い、とか言わないでくれよー
小学生からやり直せ
わかっててスレチ投稿したんじゃないのかよ
例えば商品レコードが id、カテゴリid、値引率、…… みたいになってるとして、 カテゴリid(≒PK以外)を指定して 「該当するカテゴリの値引率を一括で10%に」 みたいな更新って、 (CAKEの機能として)可能ですか? (Model->save()は id指定して一件ずつ更新するしかないんだよね?)
updateAll
例えば...「顧客A,顧客B,顧客C,...と今後も顧客は増えるとして、 それぞれの顧客の取引情報をデータベースに入れるとする。 だけど、それぞれの顧客の情報を串刺しで集計する事は無い。」 という(まあ普通じゃない)状況があるとする。 CakePHPで使うデータベースとしてSQLiteを使って、 SQLiteとかならデータベース1つ=1ファイルなので、 それぞれの顧客ごとにデータベースを分けて保存する事って、 できますか?つまり、動的に接続するデータベースを増やせるか? って事なんですが。 本来なら、MySQLでもなんでも、一つのデータベースに入れて、 SQLのWHEREで抽出すれば済むじゃん、って言われそうだけど。 組み立てる条件が増えるとミスが増えそうなんで。 データベースを使わず、1顧客につき1つのテキストファイルに 入れるって案も有るんだけど。テキストファイルよりは、 一応SQLiteでもデータベースに入れた方が楽かな、と思ったので。
CakePHPを使わない場合のやり方は分かるの?
PHP5限定&SQLite決め打ちなら、 function db($kokyaku){ sqlite_open($kokyaku); ... } ってするだけと思ってるんだけど。
>>499 それはすでにデータベースとは呼べない気がする。
普通じゃないのは認める。 でも、顧客一人一人のデータに関しては、 データベースって言えると思う。 例えば、顧客AのデータをノートPCに 移して持ち出したりする時に、 データベース全体を持ち出すのは危険だし、 その度にいちいちDUMPするのも無駄が多い (と思う) そこで、(例えば)SQLiteなら、その顧客の データベースのファイルだけを持ち出すのが 簡単かな、と。思ったわけですが。
>>499 >組み立てる条件が増えるとミスが増えそうなんで。
ここら辺から考え方がおかしくなっている気がするぞw
串刺しの集計はしなくても、IDをキーに単純抽出する為の場所という認識で
一つの顧客テーブルを使えばいいんじゃないのか?
> 本来なら、MySQLでもなんでも、一つのデータベースに入れて、 > SQLのWHEREで抽出すれば済むじゃん、って言われそうだけど。 > 組み立てる条件が増えるとミスが増えそうなんで。 この理由でデータベース分けるくらいなら、RDB使わないほうがいいんじゃ‥ データベース単位じゃないけど、テーブル自動生成するやつならつくったことある
506 :
497 :2008/11/02(日) 12:31:59 ID:???
>498 ありがと 1.2で追加されたのね…… 手元の資料になかったお ><
>>505 うむ。RDBじゃなくていいんだ。
でも、CakePHPは使いたいんだ。
で、データの管理で楽したいんだ。
検索とかしないんだったら 必要なデータをクラスにまとめて 保存・更新の際にシリアラズしてDBにぶちこめばいんじゃね
個々の顧客データの中では検索したいんだな。 「顧客」って書くから漠然としていて分かりづらいんだな・・・ 「辞典」って読み替えてみて。「顧客A」は「国語辞典」、「顧客B」は「カタカナ語辞典」 と、目的毎に辞典の種類は増えて行く。(辞書の場合、串刺し検索できると便利だけど) 全部のデータを一まとめにしたくない。辞書の種類毎にデータベースを分類したいんです。 で、その分類は、例えば「萌え用語辞書」が追加されるとか、どんどん増やして行きたい。 その度に、別のデータベースに分けたい。一つのデータベース、例えば「国語辞典」の中では、 もちろん検索できないと困る。ただし、用語の説明の中身は、用語によって様々だから、 シリアライズして放り込むつもり。 そうすると、SQLiteでデータベースを分けて作ると、1つのファイルがそのまま1冊の 辞書そのものになる。←今回は、ここが重要 これなら「カタカナ語辞書」のファイルを友達に渡しても、「萌え用語辞書」が雑じってる ことは無いので安心。(例えば、ね) そういう、いわば辞書編集システムを、CakePHPのデータベースを扱う部分の工夫で なんとか簡単に作れないかなー、というところなんです。 CakePHPでも複数のデータベースは使えるけど、あらかじめ'database.php'に 書き込んだ物に限られる。これが、動的に増やしたり変更する方法があれば有り難い。
動的に増やしたり変更したりすればいいじゃない
逆にできない理由を知りたい
513 :
名無し募集中。。。 :2008/11/03(月) 23:33:04 ID:8PMDTqib
1.1から1.2にしてがんばってるんだけど、 左上に実行中のメソッド名が表示されちゃう(HTMLの最初にメソッド名が出力されている) んだけどなぜなんだろうか。
しまったお里が知れてしまった。 出ているのはメソッド名じゃなくてview名らしい。
めっちゃ自己解決した 拾ってきたbeforeRender()のサンプルの中に echo $this->action;があったよ死のう。
この間わずか7分の出来事であった・・・
死んだら・・・らめぇ
追伸。 もし、上の理解が間違っていて、Advancedの配置でもBakeが使えるのだとした ら、Advancedの一例として、Cake のシステムは共通だが、作成するWEBアプリ ケーションが同一サーバに複数あって、Cakeの同一のシステムを共有している 場合、特定のWebアプリをどうやってコード生成のターゲットとするか、その指 定方法を教えていただけたら、と思います。
bakeで作ればコア(cakeフォルダ)へのパスは自動設定されているはずだからどこにおいても問題ない
>>521 すみません、ちょっとおっしゃる内容が分かりません。
少し詳しく質問し直させてください。
例えば、こういう配置だとします。
cake
/usr/lib/cake(個々のユーザは読み取り権限しか持たない)
app
/home/user01/app
/home/user02/app
...
webroot
/home/user01/htdocs
/home/user02/htdocs
...
webrootには各人ごとにindex.phpを置いて、cakeとappの位置を指定します。
この場合、/usr/lib/cake/console に個々のユーザが移動して、./cake bake
を実行した場合、例えばModelのファイルはどこに生成されるのでしょうか?
おそらく /usr/lib/cake/app/models だと思うのですが、ここには一般ユーザ
の書き込み権限がないので、動作しません。
個々のユーザごとに、/home/user0X/app/modelsに出力するよう bakeは指定で
きるのでしょうか?
>>522 日本語のほうはURLが長いのでわずらわしいかと思いまして。
ひとつ前のレスに書きましたが、書き込み権限がない場合を想定しています。
すみませんが、こちらの事情で、明日までここにアクセスできなくなりました。 質問させていただいたのに、非礼をお詫びいたします。
>>523 Bakeでapp一式を生成する話かと思ってたが、modelとかを作る場合の話ね。
cake bake -app <appフルパス>で指定できる
または、
/home/user01/appをカレントディレクトリとして、cake bakeを実行すればよい。
但し、/usr/lib/cake/consoleにはパスを通しておくこと。(ちと気持ち悪いが)
>>526 ありがとうございます!なるほど、コマンドラインオプションで指定するのか。
それにしてもbakeのドキュメントって見つからないと思ったら、
./cake bake help
こうすれば説明が読めることにやっと気づきました。
この説明以外にドキュメントがないというのが何ともですが。
後はソース読むしかないか。Railsもそうだったけど。
いろいろ調べても出来なかったのでご教授願いたいのですが。 MySQLに画像は保存できるのですが、その画像をselectしてViewで表示するにはどうやればいいですか? 外部のPHPに記述して読み出すようにはあるのですが、cakePHPのViewから同様のことができません。
>>528 何をやって、どう駄目だったのか書いたほうがいい。
外部のPHPなら、Cakeのviewで普通に画像として呼び出せばいいんじゃないの?
>>529 $this->data['Event']['imagedata']にイメージのバイナリがセットされています。
echo $html->image($form->value('Event.imagedata'));
で表示させるとバイナリのまま表示されます。
それでimage.phpを作成して、header("Content-type:image/gif");を指定して
外部のPHPファイルで画像のバイナリを表示させようとしたのですが、
ビュー以下において単純な<img src="image.php">では呼び出せずにいます。
webroot以下やコントローラー以下にも配置したのですが同じでした。
ファイルの置き場所が悪いのでしょうか?
それとも簡単に出来る方法があればよろしくお願いします。
>>530 イメージのバイナリを画像表示用のviewに渡して、viewでheader吐けばいけそうだけど。
MVCの設計としてどうかは知らん
最終的には画像表示用のコントローラ作ればいいんじゃないかな
>>531 ビューでheaderをはきたいのですが他にもHTMLがありますので、画像の部分だけ「Content-type:image/gif」とかを指定したいのです・・・
>>532 メディアビューを使えばできますよ。
マニュアルのビューの所。
>>533 メディアビューは初めて聞きます。
サンプルはバイナリファイルをダウンロードさせるようになっていますね。
画像の場合はどのようにすればいいのかまだ分かりません。
例えばMySQLから取得した画像のバイナリーデータを
SNSのプロフィール画像のように表示させたいのです。。。
なんかPHPをきちんとやらずに急にCake触ってる匂いが・・
>>532 そもそもHTMLと画像は別ファイルだよ。
外部のPHPファイルで画像表示に成功しているなら、viewに直接imgタグ書けばいいだけかと。
ああ実物がないとメディアビューじゃダメか。失礼。
beforeRenderでファイル吐いてexitしちゃえよw
1.HTMLを表示 2.MySQLから取得した画像のバイナリをイメージで表示 3.HTMLを表示 上みたいな感じなので、2のパートだけをContent-type:image/jpegにしたいのですが エレメントとかで分けてもheader("Content-type:image/jpeg");を記載したら URLだけしか表示されないのです。 そのままだとバイナリデータが表示されます。。。 おとなしく画像をアップしてパス指定で管理するしかないのですかね。。。
画像をHTMLにアスキーデータで組み込むのは無理じゃないよ
>>541 今回はそういう事を意図してない雰囲気はする
>>542 ご回答ありがとうございます。なかなか難しいのですね。
cakePHPでSNSのプロフィール画像を表示させたいイメージなのです。
ファイルをアップしてリンクのテキストで対応するのは出来るのですが、
バイナリーで保存してやりたいということです。
>>543 あなたには無理ですのであきらめてください。
ビューでバイナリを吐けるんだったら、レイアウトを空にして、ヘッダー付ければ出来ない? 文字データなら出来たけど。
Railsなら簡単に出来たけど、Cakeだと難しいのかな。
別件でお取り込み中のところすみませんが、質問です。 コントローラのファイルを、種類によっていくつかのサブディレクトリに分け て配置することは出来るのでしょうか? app/controllers/hoge/hoge0_controller.php app/controllers/hoge/hoge1_controller.php app/controllers/fuga/fuga0_controller.php app/controllers/fuga/fuga1_controller.php このように複数のサブディレクトリを作り、その中にコントローラを分けて納 めるようなイメージです。 また出来るとしたら、それらのコントローラにはどのようなURLでアクセスでき るのでしょうか?
>>549 なるほど、ありがとうございます。bootstrap.phpの$controllerPathsですか。
CakePHPでコントローラーを複数のディレクトリに整理する方法 - yandodの日記
http://d.hatena.ne.jp/yandod/20080510/1210416583 > 分散したディレクトリ内でファイル名やクラス名が衝突すると面倒な事になる
> と思われますので接頭語を付けるなどして管理するのが良いかもしれません。
うーん。コントローラの名前空間は共通なのか。
URLのパス指定で、各ディレクトリを呼び分けるとか出来ないでしょうか?
Base64エンコードしたデータ格納しといてMHTMLで表示しとけよwww
mysqlの中に画像を入れるのは馬鹿だろ そもそもmysqlは画像データを格納するために作っていないから 画像はフォルダに入れて管理した方がいいと mysql作者が語ってるのに。 そんな自分もかけだしのときはmysqlに画像データ入れてました 管理は楽だけどね。かなりの負荷がかかる。 Bakeとか使う人も素人くさいと思う。
>>552 同意。mysqlじゃなく適当なフォルダに画像を突っ込んだ方がいいよ。
Bake便利だと思うけどな。 使うのはスキーマ検証時くらいだけど。
そもそもBakeの使い方がわからないという。
>>552 ,553
case by caseだとおもうけど
DBでファイルのパス管理してたらそのファイルが消されてたりとか。
かといって参照頻度が高いときはDBに置きたくないしな
さすがにデザインとかで使うような画像は普通に置いとくけどさ
>>557 DBに入れておいて、参照されたらキャッシュを作り、そのキャッシュを送信するって方法もあるらしい。
2回目以降は早いし、ファイルが消えても問題ない。
たしかにDBにも入れといたほうがバックアップは楽そうだね
Cakephpでキャッシュオンにして簡単に実現できそうだ
画像格納に強いDBならいいけど mysqlは画像を格納するという目的で設計されてないからね だから画像をDBに入れるのが悪いというのではなく 画像をmysqlに入れるということがナンセンス
mysqlは高速が売りだからね 画像格納させたいならoracleとかの方が合理的だと思うよ
画像表示のパフォーマンスを考えればLinuxファイルシステムが最強 DBと連携させて管理するのが面倒だけど、そこまで面倒な管理とも思えない 画像はデータの一つだからDB格納がよいという理念なら htmlもcssも全部DBに入れよということになる
データはなんでもかんでもDBという流れの人は DBの持つ性能とバランスをどこまで考えてるの疑問に思う
だからあくまでキャッシュ前提の話なんだろ
ファイルシステムによるキャッシュ前提なら、DBをバックアップするだけでユー ザのデータを一括管理できるというメリットしか存在しないと思うけどな。 Railsのときはそうやってて、非常に便利だった。
>>554 > コントローラ名にパス名も入れればユニークになって衝突回避出来なくもないが、色々面倒なことになる。
了解です。ありがとうございます。
今回はbootstrap.phpの$controllerPathsでやって、名前の衝突についてはその
都度対処することにしようと思います。
A hasMany B B hasMany C で C belongsTo D みたいなときのリレーションの貼り方が判らないんですが、 そもそも可能なんでしょうか? (Aを基点にA〜Dのテーブルからデータを取ってくる想定) SQL直書きでは勿論可能ですが。
>>571 そこまでしてリレーションに拘るのは返って
生産性を落とす可能性があるから
要はバランスですね
どこからSQLl直書きにするかの線引きはね
MYSQLだから画像は駄目と硬直的に反応するのは駄目だな アクセス頻度やキャシュの実装、使い方や状況によって向いてる場合もあろう。
画像を表示させるにはフォルダにアップして管理するのが確実みたいですね。 簡単に出来るのなら採用したかったのですが・・・
個人情報が含まれる画像だとDBで管理するのが普通でしょ 履歴書の写真とか。
ファイルシステムで管理するからと言って、直接見られるところに 置くわけでは無いと思うが。 認証チェック経由でファイルを返すのが普通でしょ。
ファイルシステムで認証チェックしてファイル返す方法ってbasic認証のこと?
画像格納の話だけど ファイルパスのみDBに突っ込んで画像はファイルシステムから読み出すようにすりゃ良いんじゃないの? 画像データそのものをDBに突っ込む必要があるとしたら、 バイナリデータで検索する場合しかなくない?
579 :
578 :2008/11/08(土) 19:15:44 ID:???
他にもあるな。 例えばDBだとデータをまとめて暗号化するようなソリューションがある場合があるが ファイルシステムに保存するとそういう枠組みから漏れてしまう まあファイルシステムドライバで暗号化すれば良いだけなんだけど ドライバ方式とDB方式の差異はパフォーマンスくらいか それも特定ディレクトリだけ暗号化するようにすれば良いだけか
<?php // 何かしらの認証チェック... header("Content-type: ..."); ... readfile( 直接ブラウズできないパスの画像ファイル ); ?> な処理をimgのsrcに指定。
ブラウザ⇔phpは話題にしてないと思うんだけど php⇔hdd間での画像データのやり取りをどうするかって事だよね
>>581 元は前者の話
相談者のスキルが異常に低かったのでなぜか後者の話に移った
画像をDBで管理てのもファイルシステムで管理てのも 同じくらい面倒だ、DB画像管理が最高に楽じゃない限り パフォーマンスのいいファイルシステムになる
mysqlを画像に入れた場合のメリットが見えない。。。
>>565 > 画像はデータの一つだからDB格納がよいという理念なら
> htmlもcssも全部DBに入れよということになる
画像はM
htmlやcssはV
DBには入れませんが。。。
ユーザの作ったデータ(日々変動する)と、開発者の作ったデータ(基本的に リリース時で固定)は別物だと思うが。 前者をDBで一元管理できると便利だよ。 まあ抵抗のある人に無理強いするつもりはないし、個々人の自由だと思うけど。 自分はCakePHPでもこれがやれるならやりたいなあ。 何とか実現できないものか。
MovableTypeとかCSSやHTMLテンプレートDBに入ってるだろ
>>586 ページ上に表示されるような画像はVだよ
そしてページ上に表示されない画像ならWEBシステムの中に入れておくべきものじゃない
画像でありながらMになりうるのは、画像検索システムのようなものだけ
例えば履歴書の画像データの話が出たけど それをWEB上からログインして観覧するようなシステムがあるならV 一切使い道が無いならWEBシステム外で保管しておくべきもの 無いと思うけどその画像で画像検索するならM
設計にこれが絶対正解ってのはないでしょ。 要件次第だと思うよ。
Vというのはファイル形式そのもので ファイルをバイナリーデータに変えたものがMである
>>594 バイナリとかそんなデータ表現は一切問題じゃない
Mはデータを扱う仕組み Vはデータを表示する仕組み Cはデータを操作する仕組み 画像はデータなのでそのどれでもないと思うが
「扱う」と「操作する」の日本語の違いがわからないっす 辞書には > あつか・う〔あつかふ〕【扱う】 > 道具・機械などを、使ったり操作したりする。取り扱う。 ってあったっす
Cは操作限定 Mはデータの出し入れや変換、型決めなど広範囲に扱える
MとかVとかなにいうてんねんとおもったら、MVCのことだったのか
SとMなら分るんだけどな
画像の加工はモデルに突っ込むね コントローラはモデルで引っ張ったデータをチェックしてビューに渡すだけだな
再利用する頻度の少ない加工処理はコントローラに書いてるよ モデルに書くと生産性が落ちる なぜなら 再利用できるように関数化させるのが手間 再利用が2回程度ならコントローラ上でコピペが最短
あとモデルが厚くなりすぎると 総体的にコード量が多くなる。 なぜなら symfonyのように MとVのやりとりが直接出来ないから Cに橋渡し的なコードを書かないといけない分 コード量が増える symfonyのうような仕様なら モデルをどんどん厚くすべきだが CakePHPの場合は モデルを厚くしすぎるのも 作業効率が落ちると思う
findByGoogle
>>604 find系てfind()でほとんど出来ると思うので
最初から意味の無さそうな機能だなとは思ってた
したがってfind()で統一してる人ばかりだと思うんで
どうでもいいよ
似たような処理を持つ関数をやたら増やすもんでは無いと思う。 可読性とコーディング量は改善されるけど。 いつも使わない関数だとすれば、単なる無駄
CakePHPの良いところは データのやりとりが配列思考なところなんだよね というのはphp自体が壊れたオブジェクト指向だから 配列思考型のフレームワークはphpにはピッタリだと思う。 あと配列思考型は中小規模にも適してる CakePHP自体が中小規模を対象として設計されてると思う rubyは完成されたオブジェクト指向言語だから rorのようなオブジェクト指向型でのデータのやりとりがマッチする
>>603 > MとVのやりとりが直接出来ないから
つーかやったらいかんだろw
MVCって何か知ってるか。
まあそんなにやりたきゃ、viewにmodelを渡せばいいだけ。
>>609 viewにmodelを渡せばいいだけ
具体的にお願いします
$this->set($this->Model)
>>608 ルビリンのことかーーーーーーーーっ!!!
613 :
604 :2008/11/13(木) 11:26:34 ID:???
>>606-607 やっぱりfind()で統一の方向なのか…
AND検索はマジックメソッド使った方が書きやすいから好きだったんだけど。
今後はfind()で統一してみる。
できるだけモデルに書いた方が いいと思うんだけどなぁ・・・。 再利用するかしないかは別として。 まぁ、個人的な意見なのですが。
理由も書いてくれないと賛も否も
コントローラにごちゃごちゃ書くとユニットテストがしにくい
CakePHP本家はモデルを厚くすべきと書いてあるけど 生産性を第一に考えると関数化してモデルに入れるよりも コントローラ内で同じ構文を連続コピペした方が早い場合もあるんだよね。 例えば、納期がほとんどないという、追い込まれた状況なら わざわざ関数化するのも時間がかかるじゃん、そういう意味もあるんだな 時間が限りなくあるなら、出来るだけ関数化してモデルに入れるのがベストだけどさ
関数化させる手間をどうバランス取るかだと思うんだが・・・
モデルを厚くするというのは、ある程度 CakePHPでの経験が無いと、いきなりは、逆に時間がかかり 重要である生産性が落ちると思う。 経験を積みながら、少しずつリファクタリングすてモデルを厚くしていく方法がベストかな
先月からCakeさわり始めて、 コントローラーにコードを書きまくってたんだが、 徐々に慣れてきてからは、モデルを厚くする方が良さそうだなという感想。
1.2RC3がうごかない、インストールしたディレクトリにアクセスしても画面が真っ白になっちゃう って現象に陥った人っていらっしゃいますか? ブラウザ?と思ったんですが、どのブラウザでも真っ白になっちゃいます。 1.1系で試したらうまくいくのに…。 mod_rewriteも有効、phpのバージョンもOK、パーミッションも変更済み。 .htaccessの内容も確認しましたが、1.1と1.2で同じでした。 同じ現象にぶち当たった方、いらっしゃったら教えてください><
設定もしくはコーディング失敗したら真っ白になるけど
デバッグレベルあげろよ
624 :
621 :2008/11/14(金) 16:23:40 ID:???
>>622 うーん、落としてきたモノをそのまま展開してるだけなんですよね。
どっかで間違えたのか・・・
>>623 デバッグレベルは3にしてあります。
それでも真っ白なんです><
>624 PHPかApacheのログ見れ。 多分、cakeの問題ではない。
626 :
621 :2008/11/14(金) 16:46:03 ID:???
>>625 ありがとうございます。
でも、それらしいエラーは見あたりませんでした。。
でもなんとなくサーバーっぽい気はします。
Shift_JIS で保存してるとか?
サーバーっぽいってなんだよw エラー無いのに何も表示されないなら何も出力しない処理に成功してるって事だろ
629 :
621 :2008/11/14(金) 18:29:19 ID:???
>>627 確認したんですが、それもなさそうです。。
>>628 そうですねw
いや、設定かなぁと。RewriteBaseとか。
でも別のサーバでは特に追記しなくても普通に動くので、なんだろう、と。
1.1 -> 1.2RC2 のときに同じ現象陥った。 結局訳が分からず、一念発起して、1.2で書き直したけど。 同じかなあ?
631 :
630 :2008/11/14(金) 19:50:04 ID:???
あ、ごめん。移行の話じゃないか。スマン
config/database.phpで文字コード明示とか、どう?
NetBeand 6.5RC2使ってみたんだが、デバッグ時のmod_rewriteって対応してないの? Eclipse+XDebug、NetBeansでCake mod_rewite無し版だとちゃんと使えるんだが・・・
NetBeandって何?
635 :
621 :2008/11/15(土) 01:03:38 ID:???
>>632 うーん・・ダメっぽいです。
とりあえず今回は時間もないので1.1で作ることにします。
いろいろとありがとうございます。
そんなレベルでいいのか仕事だろ
PHPで動いてるんだから何かしらエラーは出るはずじゃないの? 例えそれがフレームワーク側のバグだとしても。 過去に経験があったのは文字コードの違いで真っ白になると言う事はあった。 コードに複数の文字コード混じったりしてない? それ以外はページ上なりapacheログなりにエラー出てたが・・・。
最悪、フレームワークのコードにデバッグメッセージ入れて どこで止まってるか突き止めるのは可能だね
webrootのindex.phpをコメントアウトして、適当にphpinfoとか出してみたら? 表示が出なければApacheの設定の問題 出たらコメントアウトを1行ずつ外してデバッグメッセージ出して試していく
640 :
621 :2008/11/15(土) 11:24:41 ID:???
諦められなくていろいろといじっていましたw
>>636-639 みなさんありがとうございます。
アドバイスしてくださったようにいろいろ試してみました。
webroot上のファイルがきちんと拾えました。
ということで、mod_rewriteの設定がおかしいようではないようです。
で、現状わかったのは、とりあえず処理としてはdispacher.phpを
読み込むところまでは来ていることがわかりました。
(bootstrap.phpの最後まで)
もうちょっと調べてみます。
ここまで来たら動かしたい。
テーブル名を複数形にしろ、っていうけど 頭文字とった略語ってあるじゃん PHP、DB、FWなんてのもそうだけど そういうのに複数形つけるのに抵抗感があるんだけど、普通なこと?
BBSをbbsesって書かないといけないんだよね? bbsなら一目だけどbbsesじゃ一瞬分からないから やりたくないんだよなあああ
ちょw テーブル名bbsesだとモデル名bbse テーブル名bbsだとモデル名bb テーブル名bbssだとモデル名bbss だめじゃんwwww
>>642 BBSをモデルにする設計が問題じゃね?
BoardとかThreadとかEntryとかにすればいいんじゃないか?
略語で最後がsで終わるものは 非略語にしないとダメっぽ 本当にこんなことしなきゃいけないのか・・・ 中途半端に略語でも最後がs以外なら大丈夫なのが困る 英単語って全部非略語にしたらすっごい分かりにくくなると思うし
>>644 略語にされてる英単語に規則なんて無い
ただ長いものは略語にされてそれが広まってる
BBSの件はboardでもギリギリ分かるしそうするつもりだけど
他にもいくらでも略語はあるんだよね
CDでもDVDでも、ISBNでもISDNでもADSLでも
それらを非略語にする事に強い抵抗感があるんだがw
OSを複数形にしてossなんて書いたらオープンソースかと思っちゃうな AS,BS,CS,DS,ES,FS,GS,HS,,,,,,,,,,,, いくらでもsで終わる略語があるんだが
全て小文字と言う制約も手伝って最悪な事になってるなw
どうでもいいがBBSのSってSystemのSだぞ そもそも命名規約がおかしいっての
ちなみにNewsは正しく使える どちらもNewsのまま
全部明示的にテーブル指定すればいいじゃん
命名規約にルール追加は可能だけど でもそれ本来は多言語対応や既存テーブルのためでしょ 新規テーブルで正しい英語の複数形つけて対応出来ないケースがあるのはおかしい
最初の質問者じゃないけど・・ よく foreach ($posts as $post) { echo $post['Post']['title] ...... みたいのが出てくるけど、 BBSとかNEWSの場合はどうしてる? 無理やり foreach ($newses as $news) { ...... とするのか、それとも foreach ($news as $entry) { ...... みたいにするのか・・・
そもそも、略語の複数形って一般的な英語にあるのか? 例が思いつかないのだが。
CDs、OSsなんかは見かける。 一般的な英語では略語は普通大文字だが、 cakephpではテーブル名は全て小文字にしなきゃいけないからさあ大変
単にテーブル名は大文字、ってすれば良かった気がするんだけどね 複数形部分のみ小文字で CDs,OSs PROGRAMMERs WEBSITEs これでよかったのに
>>652 データベースにシステムを格納するかってことだろ?
格納するのはboardの情報とboardに書かれた記事(contentsやarticleみたいな)だろ
それを管理するシステムを総称してBBSになるんじゃないのか
>>659 そんなのは問題じゃなくない?
ずれた事言ってるよね君
一般的に全ての場合において正しい設計をすれば
略語の複数形で困る事なんて無い、って言えるなら別だけどw
>>657 cd_infomations
os_informations
格納するのはCDやOS自体ではなくそれに関する情報だろ
>>661 頭悪い奴は黙ってろ
usersをuser_informationsとすべき理由なんて無い
cdやosの複数形に困るから苦し紛れでつけるに過ぎないだろ
情報機器であるサーバマシンのDBに入っているものが情報である事なんて明示する必要が無さ過ぎる
663 :
nobodyさん :2008/11/16(日) 00:45:51 ID:l+j4XBOD
実装に困らない回避例出してくれてるのに、 英語原理主義にこだわってかみついてる奴ってなんなの?
>>662 命名規約はフレームワークに合わせてねってだけのこと
嫌ならフレームワーク使うな
あくまで苦し紛れの回避策でしかないのに それがあたかも回避策ですら無くすべての命名はこう行うべきだというニュアンスで言ってるからだろ
systemはDBに格納するものじゃないだの 全てのテーブルには末尾に_informationsをつけるべきだの(格納するのはそれ自体じゃなくて情報だもんね?wwww) 電波過ぎるだろ
ものすごい曲解ですね
_informationsとつけるのは回避策であって >格納するのはCDやOS自体ではなくそれに関する情報だろ この様に一般的な解釈のもと行う事じゃない こんな苦肉の策をとらなきゃいけないのかという話なのに さも当然の事のようにこんな事主張されてもw
それがフレームワークの制約という奴です 嫌ならCakeやRoRの使用はお控えください
実際問題開発の現場でも、フレームワークのここが自由にできないって 開発止める奴いるから仕方ないよ。
別にこの回避策は既にやってるし良いんだが これが一般的な解釈のもとやる事だと言われたら納得できるわけないだろwww しかも数レス引っ張って何かすごい意見を持ってるのかと聞き出したらこれじゃあなw
そうなんだ そこまでDBの名前に拘るのって 神経質ではないの? DBの名前の不自由さ>cakeを使うこと って単純な話なの??
いやお前の方が曲解だろwwww そんな気になるならせいぜい100万回でも俺の文章読み直してろ低脳
wを2個以上使った時点で議論は負けだ
これを議論と捕らえてるのがおかしい 相手は何も主張してないし、俺はそいつがどれ程頭の悪い考え方をしてるのかを親切で教えてやりたいだけだからなww
会ったら良い人なのに…(たぶん
命名の話題になっているので、聞きたいのですが、 watchlistとかguestbookのような場合、テーブル名は やはり複数形にするのでしょうか? ウォッチリストやゲストブックが複数あるわけではないので、 ちょっと違和感があるのですが・・・ それとも、上で話されていたように、 guestbook_entriesのようにするのが妥当でしょうか?
どっちでもいいと思うが
ポインタ(Pointer)の配列・・・ ポインタのポインタの配列・・・ ポインタのポインタの配列の配列・・・ ポインタの配列のポインタの配列・・・
>>678 guestbook_をつけるかどうかは他モデルとのかぶり具合によるけど
entriesのようにするのが、適切でしょうな
foreach ($entries as $entry) ... みたいな
ER図の作成ソフトどうしてる? cakeの規約に揃うように設定できるものがみつからない
ちなみにforeachの右側の命名は一律で良いと思います 変数はforeach宣言したときに初期化されるし わざわざ命名する時間は省ける foreach ($entries as $line) foreach ($entries as $k => $v)
まあそれでいいかもね コード見る時はforeach見た時点で配列の順次処理なんだと分かるし
2重以上のループの時は辛い $v2とかすればいいのかもしれんが、階層に依存した名前は付けたくないな。
関数化できそうだな 各階層用のコールバック関数の配列を引数に取って順次処理するような 内部では自分を再帰的に呼び出すようにしておけばforeach自体は一つで済む
それは気持ち悪いというか美しくないとうか。 それにforeach外のローカル変数にアクセスできなくなるし。 手間という意味では本末転倒。
foreachの中が長くなるようならちゃんと名前をつける。 コードを読むときに、foreachを含めて一塊で読むか foreachの中だけを読むか。 短いコードならforeachも含めて一塊にして読むが 長ければ、ループする処理ってのはおいといて、 中身だけを取り出して読む。 塊の中で名前が適当でもわかるなら(つまり前者)省略してもいいが、 塊の中でいきなり$vとか出てきてもわからないだろう?(つまり後者)って 時はちゃんと名前をつける。
そういや、ちょっと前にfindの話でメソッドをまとめるのがよいって話あったけど、 クラスのプロパティに代入するメソッドを作る場合、 setPramA($data); setPramB($data); とプロパティごとに作るより、 set('paramname',$data); として一カ所にまとめたほうが幸せなんすか?
690 :
nobodyさん :2008/11/20(木) 05:51:48 ID:/cM24YKo
find all で、フィールドのひとつを計算式含ませて、ASで名前をつけているのですが, Doc.count *100 AS Doc__score 出力が [0] => Array ( [Doc] => Array ( [id] => 6064 [title] => regulations ) [0] => Array ( [Doc__score] => 165.34334421158 ) ) のようになってしまいます。 どうにか[Doc]の配列に計算したscoreを含めるようにできないでしょうか? cake1.2RC3, MYSQLです。
>>690 Doc.count *100 AS Doc.score
じゃなかったっけか
すみませんが、質問です。 cake bake で自動生成されるコードのインデントを、TABではなくて半角スペー ス4つにしたいのですが、それを設定する方法があったら教えていただけないで しょうか?
>>692 scaffoldなら
cake/libs/view/scaffolds のファイルを書き換えたら良かったはず
bake も利用しているかもよ
694 :
693 :2008/11/21(金) 19:00:30 ID:???
>>692 cake/libs/templates/views
こっちかも
696 :
nobodyさん :2008/11/22(土) 16:36:33 ID:qo4yapkz
auth compornent使いはじめたのですが、 暗号化されたパスワードを復号化する時って、どんなして処理してます?
CakePHPのデフォルトってSHA256だろ? だったら複合化は無理だろ 可逆暗号に変える必要があるが、セキュリティを落としてまで複合化する必要性ってなんだ?
698 :
696 :2008/11/22(土) 18:25:21 ID:qo4yapkz
>>697 ユーザ自身にパスワードの変更をさせたいのですが、
入力フォームのデフォルトに、復号化した値を入れたいなーと思ったんです。
すみません、細かい質問なのですが、 controller.php のソースで、 $this->{$this->modelClass} という記述がよく見つかります。 これは何をしているのでしょう? そもそも、$this->{何か} という記述がどのような動作になるのか、わかりま せん。教えていただけないでしょうか?
ちょっと補足します。 $this->プロパティ名 なら、どういう動作かはもちろんわかります。 $this->{何か評価される式} というのが、どういう振る舞いをするのかわから ないのです。 ためしにこんなことをしてみましたが、エラーになりました。 $x = "hoge"; $this->{$x}; // エラー
マニュアルくらい読んでからやろうよ
>>701 マニュアルとは、PHPマニュアルのことでしょうか?
一応見たのですが、該当箇所がわかりませんでした。
http://search.net-newbie.com/php/language.oop5.html ちなみにさっきの件は、少し不正確でした。$this だとうまく行きますが、そ
れを代入した変数だとうまく行きません。
class Test {
; ;var $hoge = 1;
; ;function fuga() {
; ; ; ;$x = "hoge";
; ; ; ;var_dump($this->$x);
; ;}
}
$test = new Test();
$test->fuga(); // int(1)
var_dump($test->"hoge"); // error
$thisだけ、プロパティ名自体を変数にできるようです。
あ、余計な ; が入ってしまった…。
単なる可変変数です
$this->{$this->modelClass} あるじゃん
>>706 ??すみませんが、おっしゃることがわかりません。
grep "$$" で一行も返ってこないのですが、それでも可変変数なのですか?
そして、もし単なる可変変数なのなら、
class Test {
var $hoge = 1;
function fuga() {
$x = "hoge";
var_dump($this->$x); //これはOK。
}
}
$test = new Test();
$test->fuga();
$x = "hoge"
var_dump($test->$x); // これはNG.
こうなるのはなぜなのでしょう?
{$this->modelClass} この部分が可変なんだろ
$$が書いてあれば可変か 字面しか理解できない阿呆の典型だな
うちらに聞かれても
>>707 書き方も間違ってるし変数のスコープが分かってない。
コンストラクタやセッター的なもので
オブジェクトから見える場所に代入してないんだから
fugaメソッドを呼ぶまで、testインスタンスの中からは$xは見えない。
初心者さんかもしれないけど、OKとNGだけでなく 何のエラーが出るのか、そのエラーは何が原因なのか、そのエラーの解決方法は何か って辿っていくのがプログラミングのコツだよ
>>698 何も入力してなかったら変更しない
してあったらそれに変更だろJK
715 :
696 :2008/11/23(日) 04:48:20 ID:l1Rm9lxO
>>714 うーん、まぁそうですね。
しかしAuth compornent使うと、パスワード一覧表とか表示するのも結構大変てことなんすかね
どんだけセキュリティポリシー甘いんだよお前の会社は
paginateでcurrent_date以前の物だけ表示みたいのってどうやるのかな? array('hogehoge' => current_date) array('hogehoge' => '日付') みたいな感じだと `hogehoge` = `日付` みたいにしかならないよね? current_dateはともかく日付指定でも不等号条件は使えないのかな?
718 :
696 :2008/11/23(日) 06:19:23 ID:???
>>716 いえ、仕事じゃないです。ていうか、このレベルでphpの仕事出来ないかと…
でもあれですね、こういうことは普通しないってことは解りましたです。
もし、やりたいなら入力時に別のカラムに生のパスワード入れる方法を思いつきましたので、
そうすることにします。皆さんお相手くださってありがとうございました。
>>717 array('hogehoge <=' => current_date)
>>719 ズバリです
ありがとうございます
('hogehoge' => '<= current_date')
とか最初やってて悩んじゃいました
>>722 ソースはそうなってるね。
00882 } elseif (empty($object) || $object == null) {
00883 if (isset($this->{$this->modelClass})) {
00884 $object = $this->{$this->modelClass};
ドキュメントが必要?
>>723 やっぱりソースを読むしかないのでしょうか?
> ドキュメントが必要?
あってほしいですね。ドキュメントに載ってない機能って、いつ廃止変更され
るかわからないから。
ソースコード見れば、すぐにわかるんだから 詳細なドキュメントあってもなあ 該当記事を探すのに時間かかるし、英語だら翻訳とか余計手間だ
>>712 >
>>707 > 書き方も間違ってるし変数のスコープが分かってない。
>
> コンストラクタやセッター的なもので
> オブジェクトから見える場所に代入してないんだから
> fugaメソッドを呼ぶまで、testインスタンスの中からは$xは見えない。
別に間違っていないと思うのですが。
最終行の$xは、その一行前で定義されたグローバル変数です。
function fuga() の中で定義されているローカル変数とは
別のものです。
$y = "hoge"
var_dump($test->$y); // これはNG.
変数名を変えたら紛らわしくなかったかもしれません。
>>726 クラスの初歩的な質問なら、スレが違う気がする。。。
>>724 ドキュメントに載っていようが、RCの場合は変更されてもしょうがない。(事実findをはじめ変更多々あり)
paginateは、もう変更は無いだろうが
fuga内の$xはfugaの単なるローカル変数。Testのメンバ変数ではない。
喧嘩がしたかったようだね('A`)
わざと喧嘩腰でデタラメ書いて、 顔真っ赤にした人が正解を書くのを釣るタイプ。 このタイプはもう飽きたよ。
>>733 > 喧嘩がしたかったようだね('A`)
なんでそうなるのかぜんぜん理解できない。
誤解を訂正して誘導しただけじゃん。
>>734 ぜんぜん釣りじゃないよ。
どこがデタラメなのか真剣に知りたいんだけど。
737 :
nobodyさん :2008/11/24(月) 17:47:59 ID:V2OhDKFB
Cakeで開発されたアプリをUMLのシーケンス図などで記述するとどのように 書けるのか、サンプルをご存知のかたいませんか??
CakeというかMVCモデルでさがしたほうがいいよ。
シーケンス図なら考えるまでもないような気がしないでもない
画像フォルダをアプリ毎に分けたくて、下記の様な構成でimgフォルダの下にフォルダを切ってファイルを置きました。 /cake/app/webroot/img/hoge/icon/aaa.gif Viewではヘルパーを使って、$html->image('hoge/icon/aaa.gif', array('border' => 0))として呼んでいます。 これをPHP4が乗っているサーバー上で実行すると、画像が表示されず、 ソースを見てイメージタグのsrcに指定されているアドレスを直接叩くと下記のエラーが出てしまいます。 Missing Controller Error: ImgController could not be found. また元々/cake/app/webroot/img/にあった、cake.power.gifは正常に画像が表示され、 イメージタグのソースに表示されているアドレスを直接叩いても画像が表示されています。 ローカル環境では事情によりPHP5を使用しているのですが、こちらでは正常に表示されています。 PHP4だとこの画像管理方法は出来ないのでしょうか?それとも設定でしょうか?
741 :
740 :2008/11/26(水) 15:17:25 ID:???
書き忘れ。cakephpは1.2.0.7692 RC3です。
>>740 htaccess は、正常に動作しているの?
webroot/img が存在するなら、index.phpに飛ばない(missing controllerにならない)
php4だと/img 以下にディレクトリを作れないということはないね。少なくとも
>>740 追加
webroot/hoge が存在していなくても、missing controller にはなる
(ディレクトリ名のtypoとかも、あやしいかな)
ごめん webroot/img/hogeだった
745 :
740 :2008/11/26(水) 16:30:50 ID:???
746 :
740 :2008/11/26(水) 16:46:48 ID:???
すいません。分かりました。 ファイル名が全角なのがダメみたいでした。 $form->selectに画像入れたフォルダ配下のファイル名から拡張子を除いた物を表示させて アイコンを選択させようと手抜きをしたのがダメでした。 ローカルで出来たのはWindowsだからですかね。(サーバーはLinux)
>>745 やっぱりhtaccessっぽいね。
webroot直下のやつを見直すと幸せになれそうな気がする
RewriteBaseは必要なのかい?
748 :
740 :2008/11/26(水) 17:36:45 ID:???
>>747 ありがとうございます。
調べてみて、webroot直下のhtaccessに、下記を追加することで、「Missing Controller」は出なくなりました。(404エラーになります)
RewriteCond %{REQUEST_URI} !\.(cgi|css|gif|jp?g|png)$
原因はやっぱり日本語ファイル名で、これをffftpでアップロードしていたことだと思います。
UTF-8対応版のftpクライアントでアップロードすることで、正常にアクセス出来る様になりました。
RewriteBaseはググってみて、共有サーバーで使用する時の設定に書かれていたので無いとダメなのかと思って入れています。
cakePHP1.1使ってるんですけど、 debugモードを0にしたらセッションが切れる!みたいな 現象に出くわした方っています?
751 :
749 :2008/11/26(水) 22:15:23 ID:???
>>750 情報ありがとうございます。
うーん、securityはmediumでやってるんですよねぇ。なんなんだろう・・。
cakePHP を使いはじめたところで、さっそくどうしていいかわからなくて 困ってしまったんですが、 css を webroot/css 配下においた時、views/layouts/default.ctp で その css を読み込ませたい のですが、これはヘルパを使うべきですか? <link href="css/base.css" rel="stylesheet" type="text/css" /> こんな感じで直書きしてもよんでこないのですが、これは /css/base.css のように絶対パスで 書くべきなのか、ヘルパをかますべきなのか、はたまた何か設定がまずいのが よくわかっていません。 アドバイスをお願いします。
754 :
nobodyさん :2008/11/28(金) 00:28:08 ID:dURk+lTo
>753 >これは /css/base.css のように絶対パスで 試してみた?おそらく結果でわかるはず。 また、ヘルパ使うかどうかはどっちでもいいような。 個人的にはヘルパ使うけど。
いつ1.2は製品版になるん?
756 :
nobodyさん :2008/11/28(金) 03:12:08 ID:8hLcD3C8
1.1と、1.2の実行速度ってどう? 1.2が遅いので1.1を新規でも使ってる人はいる?
1.2の方がはやいんじゃないの? パフォーマンスの改善がメインでしょ1.2て
これから作るところなんだけど 1.2がRCだから1.1つかってる
cakephpってバージョンに依存しない確立されたバージョンアップ手順ってあるの? このバージョンではこうする、とかじゃなくて 常にこうすれば確実にバージョンアップ出来るみたいな
1.2の日本語マニュアルだけど 1.1のマニュアルに比べて日本語が変なところが多い コピーしてきたらいいのにね
CakePHPに限った話じゃないかもしれないのですが, <?php e($html->css('my_css_1')); ?> <?php e($html->css('my_css_2')); ?> を出力した場合, HTMLソース上では改行されずに出力されます. 動作に支障はないとはいえ気持ち悪いので, 改行させたいのですが 何かよい方法はないでしょうか?
>>761 間に空行を空ける
or
?>の横にTabを入れる
Windows vista に XAMPP をインストールして cakephp の稼動環境を作りました。
1つうまくいかない事がありますのでご教示頂けるとうれしいのです。
mod_rewrite は有効にし、.htaccess も設定しました。
/htdocs/test/ 配下を環境とします。
/htdocs/test/app/webroot/js/ にいくつか javascript を入れました。
/htdocs/test/app/views/layouts/post.ctp を作り、その中で、
<script src="js/hoge/hoge.js" type="text/javascript"></script>
のような記述がしてあります。
次に post という、コントローラ、ビュー、モデルが作ってある状態で、
post_controller.php には var $layout ="post"; としてあります。
ここで、
http://localhost/test/post/ にアクセスすると、apache の accesslog に、
"GET /test/post/js/hoge/hoge.js HTTP/1.1" 200
とログが残ります。
どのように webroot/js/ の中身を参照すればいいでしょうか?
>>763 10個前のレスと同じじゃんね。
俺ならヘルパー使うけど。vendorsに突っ込んだJSとかCSSも読んでくれるし。
>>763 app/views/layouts/default.ctp を読みましょう。
766 :
763 :2008/11/28(金) 16:36:33 ID:???
>>764 そうか、css も javascript も同じ考え方なんですね。10個前のレスが同じ
問題だと理解できていませんでした。
さっそくヘルパーを調べ、使ってみました。意図したように動作しました。
ありがとうございます。
1つ不安な所があるのでちゃんと理解したいと思うのですが、
layouts や elements の中にある .ctp などで、javascript のヘルパーを使った場合、
それを呼び出す全てのコントローラーに、
var $helpers = array('Html', 'Javascript');
の記述を行なう、という事であっていますでしょうか?
>>766 app_controller.php に記述すれば全controllerで読み込まれる
'Html'は指定せずとも読み込まれる
cakephpってなれてくると vendor 使わないよね。 最初の頃使いまくってたけど最近全然使わなくなった。 その代わりコンポーネントを使うようになってく。
そのうち、モデルとビヘイビアが多くなっていくよw
1.2RC3 class HogeController extends AppController { var $name = 'Hoge'; var $uses = array("Fuga","Hage"); のようにコントローラと違うモデルを指定して function index() { $this->set('data', $this->paginate("Fuga")); } とやるとページングが使えなくなってしまうのは仕様なんでしょうか…
訂正 コントローラと同じ名前のモデルでもなる所はなるな… scaffoldで生成しなおした画面は大丈夫だからもう一回見てみるか
自己解決 1ページ内でpaginateを2つ以上やると片方死ぬのね…
773 :
nobodyさん :2008/12/01(月) 15:03:11 ID:uBVWzlfV
webrootに置いたphpファイルに、viewの結果を差し込む方法ってありますか? 別途DBのライブラリ使って直接DBから検索するのが一般的なんですかね
>>773 file_get_contents()とかつかえばできるんじゃない?
部分的ならajaxで読み込むとか。
>>773 質問の意味が理解できていないかもしれないけど、
Object にある requestAction メソッドはどう?
>>773 通常はwebroot直下にオリジナルのphpファイルは置かない。
一般的には、DB読むようなファイルなら、pages以下に持ってくる。
(必要ならURL書き換えれば良いし)
>>772 それ、なんだっけ。2つ以上つくれるよ。
実際俺つくったし。やり方忘れた。がんばれ。
それ解説してるサイトってないから手順確立したらヒーローになれるな
ビヘイビアって実際どうなの? メール送信ビヘイビアってあるでしょ。 結局コントローラーで qbmailとか使わないといけないからさほど メリットがないような気が。 英語だけならビヘイビアでいけるだろうが、日本語だからな。 文字化けが。。。 インクリメント・デクリメント以外の便利な使い道を師匠。教えて下さい。
cakephpって世界で最も使われてるとか言うけど 結構下火だよね 関連開発しょぼいし 本家すら
symfonyとcakephp使ったけど cakephpはコード生成が弱すぎ masterbakeやpowerbakeがあるけど本家開発に組み込まれてるわけじゃなく バージョンアップ追いついて無いし 標準のbakeだとテーブル一つ毎にモデル作れとかフィールド一つ毎にバリデーション指定しろとかやってられん 機能少ない割にsymfonyより遅いし
これはものすごい誤認識の方がいらっしゃいました
>>781 こういうこと言いに来る時点でCakePHPを評価してるって思われるのにな。
例えば新規作成を行なう add と、登録済みデータを修正する edit を コントローラに用意するとき、view は、add と edit と2つのファイルを用意すると 思います。 ただ、add の時も edit の時も入力項目は同じで、ページ遷移後の状態が、 空白か、呼び出したデータが表示されているか?程度の差しかないような画面の時でも、 add, edit の view は用意しておくものでしょうか? それとも、add と edit の両方をまかなえる view を作って、コードで処理させるほうが いいのでしょうか?
>>782 「僕すごい事知ってるよ」
じゃなくて具体的な例を出せ
>>783 言いに来てるのは既に仕事で使ってて使わざるを得ないからなのと
こういう事が書かれてれば最初から使わなかったってことだな
そういう事は仕事場で提案してみればいいんじゃないかな。 確かに参考にはなるけど。
>>784 たぶん1.2からだけど、bakeして吐き出されたviewは、editとaddを共通化している
それを知ってから、すべてのadd.ctpを削除した
admin_edit とかもすべて共通化したら、viewの数が激減してすっきりしたよ
symfonyよりCake重いとか
789 :
784 :2008/12/02(火) 23:43:37 ID:???
>>787 情報ありがとうございます。1.2 を使っているので早速 bake してみましたが、
add, edit は別にはきだされました…。
1.2.0.7692 なので、最新だと思うのですが…。
そういう意味じゃなくてaddとeditで吐き出されてるものはほぼ同じだから どっちか消してどっちかだけ使えば?って話じゃないの?
791 :
nobodyさん :2008/12/03(水) 01:04:53 ID:WkUpG3Q2
ベロベロベロベロオオオオオオオオオオオ んんー、ほんのりオシッコの味がするよ!!
誤爆った
793 :
nobodyさん :2008/12/03(水) 01:43:34 ID:o3/nvN5X
また誤爆った
>>789 あれ?そうなの?
と、思ったら、記憶違いでscaffold使ったときのことだったかも
/cake/libs/view/scaffolds にはadd.ctp無かったから(rc3で確認)
でも、どっちか消したほうがオススメなのは確か
$form-> create , input は共通で使えるだろうから
cakephpってfkのインデックスの名前にも規約ある?
id
それはフィールド名じゃなくインデックスの名前もってこと?
Error: Database table publishes for model Publish was not found. このエラーはどういう意味だろう? bake allで作成したMVCなのにテーブルが見つからないとは。 publishesなんてテーブル作ってないんだけどね。 cakephp使う際にはそういう名前のテーブルを用意しなきゃいけないとか?
インデックスをプログラムで管理したいって事か? インデックスなんてプログラムにとって知った事じゃないだろ
>>699 何というコントローラ&メソッド&ビューに対して
どんなURLでアクセスしたか教えたまえ
>>802 Publish モデルがあったり、areas_controller.php で $uses = array('Publish') してない?
symfonyより重くはないし、コード生成にしても結局実務で使えないのはsymfonyも同じ。
805 :
802 :2008/12/04(木) 03:52:30 ID:???
自己解決。 特定の場合に、cake allで生成すると cakephpが内部で使ってるpublishと言うダミーモデルのデータが残ってしまうらしい。 いくつかモデルを生成した中で、一つだけpublishがはいってしまったものがあった。(Userモデル) cakephpはデフォルトで全モデルを読み込んでるらしく、どのコントローラにアクセスしようと publishesテーブルが無いと怒られた。
そこまでは特定してない でもcakeのダミーモデルなのは確か
教えてほしいことがあるんだけど、いいかな?
2-3個しか入力項目のないフォームがあって、それらの項目に、
hoge, piyo, fuga とか入っているとする。
これを submit したとき、こんなURLに遷移させたい。
http:// (base-url)/hoge/piyo/fuga
JavaScriptを使えば簡単だけど、できたらクライアントサイドスクリプトには
依存したくない。
CakePHPに、これを実現するのに便利な仕組みはないんだろうか?
普通に$this->dataからを取得して、implode('/', ...)でつないで redirectす
るしかないのかしら?
そんな小さなことまでフレームワークでサポートしたらキリがない
>>809 まあそうなんだけど、もし元々あるんなら利用したいと思って。
>>810 え? mod_rewrite って、
base-url/hoge/piyo -> base-url/index.php?param0=hoge¶m1=piyo
という変換だけじゃなくて、
base-url/index.php?param0=hoge¶m1=piyo -> base-url/hoge/piyo
こっちもできるの?
正規表現使えばどんなパターンの差し当てでも出来るけど
汎用的なリダイレクトページ作ったら良い
cakephpのモデルはアソシエーションをクラスメンバに定義するから 変数・グローバル変数をアソシエーションの定義に使えないよね? この問題はどう解決すればいい?
多対多のjoinテーブルで 両方のテーブルのフィールドを条件にして片方のテーブルのレコードを抽出したい場合、どうすれば良いですか? つまりjoinテーブルでつながれた相手側のテーブルのフィールドで自分のレコードを絞り込むと言う事です。
817 :
816 :2008/12/04(木) 19:11:19 ID:???
cakeの機能を使って抽出する場合です SQLを書くしかありませんか?
>>813 そんなこといったらcakeだって黒魔術(シェア的にww
コントローラよりモデルを厚くしたほうがいいっていうけど それってアソシエーションをモデルにまとめる以外になんかあるの?
cakephpのモデルに合わせて書いてると SQLが分割されて遅くならない? 完全に柔軟にテーブル結合とかやれるわけじゃないし
今まさに
>>823 が気になってたんだけどさ。
逆に下手にjoinせずにクエリー投げたほうが、キャッシュが働いてパフォーマンスが良くなったりしてるんじゃないかと。
「Cakeのデフォルトで充分じゃね?」みたいなこと調べた人いないかな?
さすがにそれはない 普通、1クエリにまとめた方が速くなる
更新の少ないテーブルの場合、ほぼノータイムで返ってきてることが多い そういう場合、SQLの種類を増やすより、パフォーマンスが良くなるっていう話を聞くよね
cakephp 1.2 を使っています。 バリデーションでエラーになった入力項目(テキストボックス)の 背景色を変更するのによい方法はないでしょうか?
>>827 $form->inputで記述すれば、あとは、CSSで対応できると思うけど
>>828 ありがとうございます。
バリデーションでエラーになった項目の $form->input で class を指定する、という事
でしょうか?
その場合、バリデーションでエラーになった場合、
その $form-input 項目の css を変更するにはどうしたらいいのでしょう?
何かよい方法があるのでしょうか?
>>829 たとえばUser.usernameがvalidation errorの場合、以下のようになる
<div class="input text error">
<label for="UserUsername">ID</label>
<input name="data[User][username]" id="UserUsername" class="form-error" />
<div class="error-message">入力内容を確認してください</div>
</div>
なので、/webroot/css/cake.generic.cssの以下を修正する
.error
.form-error
.error-message
inputの背景色なら
input.form-error { background-color : red } って感じかな
唐突ですけど、皆さんにお聞きしたいことがあります。 FORMヘルパーって、DBテーブルと関係の無いフォームを作ることってできます か?それともそういうのを作るためなら、ただのHTMLを書いたほうが良いので しょうか?
>>830 丁寧にありがとうございます。
バリデーション後の画面にて、class="form-error" が自動で付いている事に
全く気付いていませんでした…。
希望の画面になりました、ありがとうございました。
>>831 モデルのところにnull入れてやったらいいんじゃない?
<?php echo $form->text(null, array()); ?>
デフォルトのname属性で足りないなら上書きできる
<?php echo $form->text(null, array('name' => 'title')); ?>
ヘルパのおいしいところを享受できるかはわからん
バリデーションのルールで 1. var $validate = array( 2. 'login' => array( 3. 'rule' => array('minLength', '8'), 4. 'message' => 'ユーザ名は8文字以上にしてください。' 5. ) 6. ); の 4. 'message' => 'ユーザ名は8文字以上にしてください。' の 8 の部分を、\config\const.php などに定義してある値でおきかえたいのですが class Post extends AppModel { var $name = 'Posts'; var $validate = array ( のように、クラスのインスタンス変数で定義?するためか、文字列の結合がエラーになって できなくて困ってますが、対応できる方法はありますか?
listが予約語になっててアクションに使えない罠
レコードの一覧出すアクションの名前なんにしたらいい? /コントローラ/ でアクセスする場合、引数って渡せないよね?
>>834 貼付けられたソースが切れてるのでよくわかりませんが、
そのケースではクラス定数を使った方がベターだと思います
>>836 ルーティングの設定によりますが、アクションのindexが省略されてるんだと思うんですが・・・
省略されてるとして、 本来indexに続けて書くはずの引数をルートから書いても アクションだと思われて正しく動作しないよね ルーティング設定で正規表現書けば出来るんだろうけど
>>837 ありがとうございます。
ごめんなさい、切れてるソースの部分は、
var $validate = array(
'login' => array(
'rule' => array('minLength', USERNAME_MAX_LENGTH),
'message' => 'ユーザ名は' . USERNAME_MAX_LENGTH . '文字以上にしてください。'
)
);
こんな感じにしたいんです。
で、USERNAME_MAX_LENGTH は別途 define してあります。
クラス定数にすると、他で使いまわせないのですが、あきらめるしかないでしょうか?
>>838 /controller/?hoge=hage
こんなんどうよwww
>>839 ん?クラス定数だと使い回せないのはなぜ?
むしろグローバルに宣言しちゃった方がライブラリ化して使い回すときに不便だと思うんだけど
>>840 例えば、モデル内で定義するバリデーションのメッセージとして、
「既に登録されています」というメッセージは、どのモデル、ビューかに関わらず
サイト内で一意にしたいわけです。
これを、モデルのクラス定数に定義するという事は、存在しているモデルの数だけ、
同様の「既に登録されています」を定義しなければならないわけで。
こういったサイト全体で一意としたいメッセージ的な文字列は、クラス定数よりは
グローバル定数で定義しちゃいたい、と思うのですが、よろしくないでしょうか?
つ継承 つconfigクラス ついっそ後で置き換え
>>841 共通といったって、そんな短い単語を共通化してどうすんの?
世界を視野に入れたプログラム作ってるの?
>>841 マスタテーブル作れば良いじゃん
大量のグローバル定数であふれる事は避けるべき
CakePHP というか、MVC の考え方がいまいちよくわかってない気がするんですが、 アドバイスをお願いできれば…。 User テーブルがあります。ここは、ログインID と、名前、パスワードがあります。 で、その User テーブルの追加/編集/削除ができるように、UsersController, add/edit ビュー、モデルを 作成しました。 これで、Users テーブルへの追加、削除はできるようになりました。 次に、この Users テーブルの内容に基づいてログインするページを作りたいと思います。 その、ログインを管理するコードというのは、別途コントローラを作成するほうがいいのか、 それとも Users テーブルへのアクセス、という事で、作成済の、UsersControlle や、モデルに ログインするためのコードを追加するのか、どうすべきなのでしょうか? 同じテーブルへのアクセスでも目的が違う場合は、コントローラも別途作成するものなのか、 それとも、テーブルを主体にコントローラ、モデルをふくらませるべきなのか、 混乱しています。 このあたりアドバイスを頂けるととてもうれしいです。
質問 聞いた話だが、cakeって、月500円レベルのレンタルサーバーでも 十分、実用的なスピードで動くんだよね?
なんとも答えられない WEBアプリフレームワークとしては重たい部類 WEBアプリフレームワーク自体は今のコンピュータにとって大した重量じゃない
値段=スペックじゃないので何とも言えないけど その500円ってのがさくらのスタンダードなら問題ない
以前PHP4でWebアプリを書いてました。 3年ぶりにPHPでWebアプリを書く事になったのですが、フレームワークが便利になって ました。これからはCakePHP1.2を利用しようと考えて開発環境のインストールの所から 書籍を購入して進めようと考えてます。 皆さん、どちらの書籍をお勧めですか? (自分のPCは現在LAMP環境も削除してしまってます。) 1.CakePHPガイドブック(CakePHP1.1 安藤、新原、堂園 07/10/25) 2.CakePHP徹底入門(CakePHP1.2 イージーゲート 08/8/29) verが1.1ですがCakePHPガイドブックの方が評判が良さそうです。こちらで良いでしょうか? また、他に良い書籍がありますでしょうか?よろしくお願いします。
>>848 今普通に1.2で作ったサイトを運営してるけど別に問題ないよ
(さくらスタンダード)
>>852 同感。ある程度理解できたらさっさとポケットリファレンスに移行したほうがいいね
>>852 >>853 コメントありがとうございます。
どちらも微妙ですか。
それなら、ver1.2で説明してある「CakePHP徹底入門」にしようかな。
(フラフラしてて、いいのかなあ?)
インストールが出来、基本的な使い方が理解できたら
「CakePHPポケットリファレンス」Webページ情報の活用へ移行なのですね。
公式のマニュアルとポケットリファレンスだけあれば十分。 翻訳の方乙であります!
Web情報だけで十分、書籍なんて必要ないという意見もわかるけど 新開発環境の入門時に書籍を活用するのは、効率よく体系的に入門できるのでお勧め お金に余裕がある人は、人気の入門書籍による入門を勧める。
×お金に余裕がある人は、 ではなく○時間に余裕のない人は、 だな。
まぁ、自分は一通りよんだね。 cakephpは全部読破。 お金がなくても自分への投資だからちょっとくらい奮発しても いいかもね。
公式ドキュメントのPDF版が欲しい。 あれ印刷してまとめれば立派な本だよ
>>858 さん、
>>851 です。
1.CakePHPガイドブック(CakePHP1.1 安藤、新原、堂園 07/10/25)
2.CakePHP徹底入門(CakePHP1.2 イージーゲート 08/8/29)
のそれぞれの特徴をお知らせ頂けると助かります。
また、
>>858 さんのお勧めがあれば、よろしくお願いします。
ちなみに「CakePHPポケットリファレンス」は購入の予定です。
イライラ
イライラすんなよ。どうせ上司から本買ってもいいけど、ムダ使いは許さん。 と厳しく言われてんだろう。わかってやれよ。
初心者のうちは片っ端から買うしかないよ。 昼飯何回か我慢すれば買えるでしょ。
CakePHP1.2の公式マニュアルのPDFって どこだっけ? いや、まだ作りかけなんだろうってのはわかるけど 1.2の前の作りかけバージョンの印刷物があってね。 そのPDF版をとっておきたいなと。
あるコントローラで値が決定し、その値は、別のコントローラや、ビュー、エレメントで使われる可能性がある グローバル的な値の場合、セッションに入れるのが定石でしょうか? CakePHP でそういったグローバル変数的な値を管理するのに勧められる方法があれば 教えてください。
>>865 俺なら、コンポーネントにしまい込む
ビューへ渡すときは、コントローラ経由で
867 :
851 :2008/12/08(月) 16:16:15 ID:???
>>860 おすすめは無いよ。とにかく全部読むといい。
あとは、作って作って・・・慣れだな。
同意。慣れ、重要。 何か作れば、そのうち、cake流のやり方が身につく。 最初は大変だけど、慣れれば楽しくなってくる。
cakephpってsubmitの値送られないのなんで?
俺はマニュアルとAPIと行ったり来たりして覚えたな。いや覚えたっつうかずっと行ったり来たりだけど。 マニュアルもかなり充実してていいけど、 APIの方見たら、ああこんなメソッドもあったのかみたいなのもあるし、なによりcakeの全てが出てるわけだし。
1.2で$form->submit('hoge',array('name'=>'aaa','value'=>'bbb'); とか書いて押してみても、submitの値が送信されてないんだけど。
>>871 array('name'=>'data[aaa]',value='bbb')
で行けると思うけど。
できたありがとう dataなんてつけるんだ マニュアル見ても見つからなかった
確認画面とかのビューで、アソシエーションが定義された別モデルのデータを簡単に取得する方法ってある? コントローラでデータ自体のセットはbakeがデフォルトで出力してくれるからいいけど。 ビューでforeachで探すしかないかな? APIでidとモデル名入力する感じで取得したいんだけど マニュアルもAPIリファレンスも落ちてるみたいだし
パスワードとかメールアドレスの確認入力みたいな 二つのフィールドのデータが同じかどうかをチェックする組み込みバリデーションルールってないんだね なんでだろ 簡単なやり方ってあるの?
alphaNumericってほとんど正常に動作してなくない? 全角通ったり半角しかないのにエラーでたり
CakePHPを触ってみているものです。
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/ をver 1.2 RC3で実行しようとしています。
http:// 〜〜/10min_bookmark/
という形でアクセスし、初期画面は表示され、DBの設定もしました。
その後、
app/models/item.php をつくり、
app/views/Items ディレクトリを作り、
app/controllers/items_controller.php を作り、
それぞれを動画通り記述したのですが、
DBの設定前などから現れていた以下のような画面しか出ません。
Release Notes for CakePHP 1.2.0.7692 RC3.
Read the release notes and get the latest version
:
ver 1.2ではこの他にしないといけないことがあるのでしょうか?
http:// 〜〜/10min_bookmark/items
ここへいけ
app/config/route.php
これを編集しろ
てかマニュアル読め
cookieコンポーネント使って無くても 1度ログインするとブラウザ落としてまたアクセスしても認証状態が保たれてるんだけど なんでだろう? 1.2
Security.levelは?
lowになってた highにしたら出来た ありがとう
Security.levelがhighだと、 ページアクセス→サーバー側でセッションID変更→ページ読む前に停止 →サーバーから送られてきた新しいセッションIDを受け取らない →セッションが保たれない。 って問題が昔あったけど、これ改善された? 仕様といえば仕様であるが、 ページ読み込み連打するってことよくあるだろう?
いま試したらログイン画面に飛ばされた; こりゃhighは使い物にならんな。
sqlite3対応はどうなってますか?
なんとなく全体を理解するのにはガイドブックがいいんじゃないの。 1.1で覚えたなら1.2での違いはポケットリファレンスなりネットなりを見ればすぐ理解できる。 アマゾンにもそこそこレビューついてるから自分に近い感性の人が勧めているのを選んでもいい。
アクセスするパスの構造なんですが、業務系アプリのような場合、 マスタ保守系、入力系、問い合わせ系のような分類でパスをかえたいんですが、 CakePHP では、そういう分類をもたせる事はできないでしょうか? 例えば /master/employee, /master/supplier, /master/customer の配下にそれぞれ、新規、編集、削除を用意する 同じように, /entry/order, /entry/ship のように…。 全部 controllers の中での1次元で管理するしかないでしょうか?
貴方にマニュアルを読ませる事は出来ないでしょうか?
CakePHP では htmlspecialchars() を h() と短縮できるのだが……、 ちょっと気になることがあって、該当するソースを確認すると、 下記のようになっていた。 return htmlspecialchars($text); 配列を渡すと、その値をすべて処理してくれるのは 便利だけど、htmlspecialchars() はデフォルトのまま 使っているから、シングルクォートは変換されない (ENT_COMPACT になる)。これはちょっと危険な気が する。といって、コア部の cake/basics.php を直しても、 バージョンアップのたびに対処しなきゃいけないし、 むしろ忘れてしまう可能性大。
シングルクォート(ってか')の変換されると困る場合もあるから 必要な人は自分でヘルパー作ればいいだけでは
&apos;って書いたら変換されちゃった
>>891 1.2ではENT_QUOTESとcharset渡すように修正されている
むしろscaffoldがh()で出力されてないのがちょっと。
なんか最近cakephp.orgが重くてページが開かないことが多いなあ。 マニュアル首っ引きでないと作れないからツラい。 うまいことマニュアルを保存しておく方法ないかな。
ウェブサイト保存ツールなんていくらでもある
アソシエーションって、自分で joins 書くのに比べてメリットってある? アソシエーションの定義をちまちま書くより joins を自分で書いたほうが楽な 気がしてるんだけど、アソシエーションを作るメリットがあれば 教えて。
habtmとか典型的な例はcakeにやらせる方が楽
901 :
851 :2008/12/15(月) 21:09:07 ID:???
>>899 俺は joins の使い方がいまいちわからないから、cakephpのアソシエーションに頼ってる。
↑ 851 となんにも関係ありません。間違えました。
3つのテーブルを hasOne アソシエーションでつなぐ事ってできますか? 例として、 テーブル AAA コードA, コードB, コードC、その他項目 テーブルA コードA, 名前A テーブル B コードB, 名前B テーブルC コードC, 名前C とあって、テーブルAAA と、テーブルA, テーブルB, テーブルC をつないで、 名前A, 名前B, 名前C を取得したいんですが、複数テーブルを hasOne する方法が よくわからなくて。
var $hasOne = array( 'A', 'B', 'C' ); でもいいし、 カスタマイズしたいなら var $hasOne = array( 'A' => array('hoge' => 'fuga', 'hoge' => 'fuga'), 'B' => array('hoge' => 'fuga', 'hoge' => 'fuga'), 'C' => array('hoge' => 'fuga', 'hoge' => 'fuga') ); でもいい。
パフォーマンス的には自分でJOINした方が早い場合が多い アソシエーションは親のキーで子のデータを別のSQLで呼び直してる
DBエラーなどが起こったときの画面があるけれど、あれを何か別の画面に差し 替えることってできないだろうか? 単にデバッグレベルを下げるのじゃなくて、他の画面と統一されたデザインの 画面にエラーを出力するようにしたいのだけど。
>>906 cake/libs/view/errors フォルダの中身をまるごと自分のviewに入れる。
APP/view/errors/missing_table.ctp ..とか。
で、あとは好きなようにできるはず。
>>907 ありがとう!試してみます。
質問ついでで申し訳ないのだけど、DBがエラーを起こした場合(バリデーショ
ンではなく、DBそのものの物理的なエラー)に表示されるエラーページって、
どのページなんでしょう?
missing_action.ctp とかいろいろあるけれど、DBエラーに対応するページが分
からない。
>>908 物理的なエラーの時の表示がどんな表示なのかわからないけど、
missing_connection.ctp // DB接続失敗
missing_table.ctp // テーブルが見つからない
このどっちかじゃだめ?
910 :
nobodyさん :2008/12/16(火) 14:53:25 ID:r+TWFAeS
テーブルが3つ以上の結合ならアソシエーションよりもsql文の方がよくない?発展させる必要があった場合は複雑になりやすくない?
RC4もうすぐかな?
cakephp 1.2 の model::beforeFind のコールバックって 自分のモデル内で、 function beforeFind(&$model, $query) { //コード } じゃ駄目なのかな? Missing argument 2 ってエラーになるんだけど、なんでだろ。
すいません、解決しました。
function beforeFind(&$query)
が正解のようでした。
ところで、今、
http://book.cakephp.org/ja にアクセスすると、firefox だと、自動転送がループしています
って接続できませんが、うちだけでしょうか。
Firefoxだがループしないけど
俺もループした URL末尾につく全角文字列を消すとアクセス出来るけど
全角消してもループするところもあるな どうなってんだ てかマニュアルDLして使いたいわ 重過ぎて使えない事も多いし
公式サイトがこんな体たらくとかw
ツール使ってマニュアルをダウンロードしてみた。 最初/ja以下を取って来ようとしたらエラいファイル数になったので、 ja/tocとja/viewの中身だけ持ってきました。あとCSSをいくつかと。 ローカルで見ると早くていいわー
どのツール使った?
おらあMacなんでSite Suckerってやつです。
IEのオフライン機能でいいのでは
またbook落ちてるな・・・ 俺もダウンロードしとけばよかった・・・
まだループ中 どこが管理してんの?
レイアウトが崩れてるページも多いしどうなってるんだ 管理出来ないならwikiサービスにでも書いとけよw
927 :
nobodyさん :2008/12/17(水) 14:51:11 ID:/y/VN6Cv
これ以上多機能にすると重くなるリファクタリングだけやってくれ
個人的にCakeにはまだまだ強力な機能の追加余地があると思う てか開発参加してー 日本語しか出来ないけど
>>927 機能の多さと重くなるかどうかはあまり関係無い。
根幹機能については当然重くなるぞ ライブラリ増やすとかは問題無いが
マニュアルまだ見れねー どんなカスが管理してんだ
ソースの自動生成はsymfonyのが上だけど、 細々した機能はCakeのが多機能になってきたねー AuthとかACLとかお手軽すぎるw フレームワークなしでは開発できなくなりそう・・・
1.2は特に細かいけど便利なのがついてるので助かる。 パン屑とかツリー表示とか、おいおい前に俺が自作しちゃったライブラリはどうしてくれるんだよ。 ってのが多いわ。
マニュアルさっきからずっと見られるぜ WindowsXPSP2+Firefox3.0.4 IE6でも見られる
いやまだループしてるな ループするページが変わっただけ
パンくずとかHTML化してくれるだけじゃん そんなんで多機能とか言ってるのが悲しすぎるし cake本家の開発力を疑う
FireFox3.0.4 XP SP3 マニュアルのいくつかのページでこうなる 自動転送がループしています このアドレスへのリクエストに対するサーバの自動転送設定がループしています。 リクエストされたリソースの取得を中止しました。このサイトではリクエストの自動転送がループしています。 * このサイトで要求されている Cookie を無効化またはブロックしていないか確認してください。 * 注意: サイトによる Cookie の使用を許可しても解決しない場合、これはご利用のコンピュータではなくサーバの設定に問題があると思われます。
>>936 もしかしてパンくず以外何も知らないのか?
2.xシリーズではさらに機能追加するらしいね。 どんなのが増えるんだろ・・・ どんなの欲しい?
sqlite3正式対応。
Railsのlock_version相当機能は欲しいな
>>938 標準でそれ以外にパンくず生成に役立つライブラリがあるの?
役に立たないライブラリ言ってみ。 それでお前がライブラリを知っているのかどうかもわかるしw
役に立たないライブラリがあるんじゃなくて 役に立つライブラリが少な過ぎるっていってるの
じゃあ、お前はどんなライブラリがほしいのさw
>>945 それは既に独自に作って自分の競争力にしてるんで言えないな
今日もマニュアルはループ中
必死さが伝わるよい返しですね
マニュアルループしてる奴は自分の環境疑った方がいいのでは 他のコミュニティでも話題になってないだろ
あちら側でリダイレクトしてるんだから、「自分の環境」ではどうにもならない話だと思うけど。 英語版とかは特に問題なく見れるし、キャッシュがぶっ壊れてるとかじゃないのかなあ。
Cakeマニュアルでしか発生してないし リダイレクトのルール設定が間違ってるんじゃないの? ループしてる奴何人くらい居る? 一人目ノ
マニュアルのトップページだけ開いてループなんておこらないなー 何言ってんだろと思ってたら 3 CakePHPによる開発に移動しようとしたらループ発生したんだぜ・・・ Firefox3.0.4
ループするとことしないとこあるね
>>951 俺も試したらなったよ。
自動転送がループしています
このアドレスへのリクエストに対するサーバの自動転送設定がループしています。
と思ったらフォーラムじゃあ既出か
CakePHP のあるページから、別のページを別画面(ブラウザ)に表示して、 そこから元のページのある部分の
957 :
956 :2008/12/18(木) 21:25:01 ID:???
↑途中で送信してしまいました。すみません。 CakePHP のあるページから、別のページを別画面(ブラウザ)に表示して、 そこから元のページのある部分の値をかきかえたい、という事がやりたいのですが、 CakePHP での何かよい方法はありますか? Javascript をゴリゴリ書くしかないでしょうかね。
もうやだこのキモフレームワーク><
>>945 > それは既に独自に作って自分の競争力にしてるんで言えないな
お前は頭悪いのか?
CakePHPのライブラリの話じゃなかったか?
お前のそのライブラリ、競争力になりえるというのなら
CakePHP以外でも存在しないってことになるよな?
CakePHP以外でお前のそのライブラリがあるのなら、
競争力になるはずがない。
よって、CakePHPだけに使えるライブラリがないわけじゃなく、
どこにもないライブラリという話だ。
その競争力になるライブラリをCakePHPに標準搭載しろと
要求しているのか? お前の競争力なくなるぞ。
まあその程度のライブラリなのだろうなw
>>960 全てのフレームワークを調査したわけじゃないからそんな事は考慮して話してない。
ただちょっと頭を使えばフレームワークに組み込むべき汎用的なコンポーネントがいくつも足りない。
と言うか人に頭悪いとか言い出してる時点で もう話がしたいんじゃなく単に「僕の不機嫌を治してください」って言ってるようなものだからな 病院いきなよ
>>961 だから、その組み込むべき汎用的なコンポーネントってなんだよw
それは競争力になるから教えられない?
本当に組み込むべき汎用的なコンポーネントなら、
近い将来組み込まれるだろう。
そしたらお前の競争力はなくなる。
お前のはその程度の競争力なんだよ。理解しろ。
>>963 既に論点が変わってるよ
君はCakeの機能が豊富だと主張したいのか
俺には競争力が無いといいたいのか
どっちだったかな?
汎用的な組み込むべきコンポーネントがなんなのか、 なぜいえないんだろうなw
>>964 汎用的なコンポーネントには、競争力なんて存在しない。
汎用的なものは誰でも考えつくし、言った程度でまねされるようなレベルのものなのか?
だから(お前が考えている)汎用的なコンポーネントとは何か言えと言う話。
Cake使ってて足りない汎用コンポーネントに気付かないなら実力不足
ほら、やっぱいえないw もういえない時点で論外でしょ。こいつ。
もう相手しなくていいよ。 使いたい人だけが使えばよい。 「仕事で仕方なく使ってやってる」とかいうやつは、使いたくないなら仕事辞めればよい
この板も強制IDになればいいのに。
CakePHPなれたきたら テーブル追加 登録、編集、削除、検索(5項目AND Like)、ページャー *フィールドは5つくらい この一連の作業が30分くらいで出来てしまうんだけど 恐るべきCakePHP
2〜3時間の作業がCakePHPのおかげで30分くらいになったのは確か 今年の3月くらいから始めたんだけど 来年はCakePHPで案件フル稼働させるぞ
ページャーはviewに関数1個いれるだけでいいくらい コンポーネント利用して簡素化した方が楽だね
このページャデザインサイトはspan使ってるからね ヘルパーでspan扱えるよう加工した
/page:1 みたいに、URLにコロンが入るのがちょっとなぁ・・・ まだ?page=1のほうがいい。 どこに手入れればいいのかな?
helperの html.phpに var $tags = arrayに 'spanblock' => '<span%s>%s</span>', 'spanblockstart' => '<span%s>', 'spanblockend' => '</span>', を追加して span関数を定義したよ function span($class = null, $text = null, $attributes = array(), $escape = false) { if ($escape) { $text = h($text); } if ($class != null && !empty($class)) { $attributes['class'] = $class; } if ($text === null) { $tag = 'spanblockstart'; } else { $tag = 'spanblock'; } return $this->output(sprintf($this->tags[$tag], $this->_parseAttributes($attributes, null, ' ', ''), $text)); } もっと丁寧に説明するべきだけど時間ないから 後はなんとかうまくやってください
978 :
977 :2008/12/19(金) 12:44:21 ID:???
こんなことしなくてもCSSだけでうまくいくかもしれないよ 俺はCSS詳しくないから ヘルパー加工しただけだよ
>>976 たしか、Routerにてnamed param を何とかできたはず
980 :
976 :2008/12/19(金) 13:49:03 ID:???
>>979 サンクス。
ソース見てみたらそれっぽいのがあった。
まだどう使うのかわからんが・・・
ってかRC4キターーー!
ぶっちゃけURL気にしてるのなんて技術者だけですよ
RC4!!! Our expectation is that we will be able to release a stable very soon after RC4. ほぼstableなんだろうね
RC4て検索条件のGET、POSTパラメーターをとりやすくしてあるのか? 今俺の使ってるバージョンは GETデータとPOSTデータの入ってくる配列が違うから こんなかんじで $this->params['data']['Model']['mail']; $this->params['named']["Model.name"]; 検索条件は最初POSTデータで飛ばすけど 次ページ処理させるとGETデータでくるから POSTとGETに対応させるのが面倒だったんだよな RC4でそれが楽になるってことなんかな?
訂正 RC4て検索条件のGET、POSTパラメーターをとりやすくしてあるのか? 今俺の使ってるバージョンは GETデータとPOSTデータの入ってくる配列が違うから こんなかんじで $this->params['data']['Model']['mail']; $this->params['named']['Model.mail']; 検索条件は最初POSTデータで飛ばすけど 次ページ処理させるとGETデータでくるから POSTとGETに対応させるのが面倒だったんだよな RC4でそれが楽になるってことなんかな?
追加された機能、訳して BehaviorsRevision Behavior - Revision control made easy Behaviors Multiple Display Field Behaviors AttributeBehavior - DRY and powerful Wizard Component 1.2 Components A new "automagic" for CakePHP layouts with the CustomLayouts component Components reCAPTCHA Component & Helper for CakePHP Validanguage Helper for customizable Javascript form validation Helpers
FlashHelper - a wrapper for the SwfObject js class Helpers FlashChartHelper - version 3 Extending of DboSource and Model with sql generator function. Models Obvious trick to reduce amount of HABTM relationship tables Models LDAP datasource for cakePHP Ajax Chat Plugin (using jQuery) Plugins GeoCouch Plugin - Storing Geocoded data in CouchDB Plugins ACL Management Plugin How to create an XML-RPC server with CakePHP Snippets eAccelerator Cache Engine Snippets Form posting with '_GET' parameters
訳すべき部分がない
>>985 なんか名前だけ見るとめっちゃワクワクするんだがw
以下、訳じゃない。名前から俺が想像したもの。
BehaviorsRevision Behavior ・・・リビジョン管理?なんか面白いこと出来そう。
AttributeBehavior- DRY and powerful ・・・DRYってことはテーブル変更せずに属性付けられる?
Wizard Component 1.2 Components ・・・これでウィザード的なページ変移が簡単に行える?
reCAPTCHA Component & Helper for CakePHP ・・・うほっ。キャプチャwww
Validanguage Helper for customizable Javascript form validation Helpers ・・・JavaScriptバリデーション生成? これで完全にQuickForm不要?
FlashHelper、FlashChartHelper・・・Flashまああると便利だね。
Ajax Chat Plugin (using jQuery) Plugins ・・・いるのかこれ?w
Form posting with '_GET' parameters ・・・ん? 今でも出来るような気がするが何か勘違い?
逆に多くの実装者が野良で作ってたヘルパーは実装されないんだな
「多くの実装者が野良で作ってたヘルパー」ってどれのこと? 汎用性の無いヘルパーだったり、設計がダメダメだったりするんだろ?
野良ヘルパーを公式さ紆余後ろって話じゃなくて、 野良で作ってるような機能を、公式できちんと載せればいいのにってことだろ。
追加された機能ってどこに情報ある? RC4 をダウンロードしてみたんだけど、どこに実装されているのかわからない…。
ヘルパーのソースがどこにあるかくらいディレクトリ名見れば解るだろ…
いや、ソースを grep かけたけど、追加された機能がみあたらないんだけど…。 俺の探し方が悪いのか?
おれも見つからない。というか
>>985 がどこに載ってる情報かも見つけられないのだが
ああ、分かった。bakeryのnew articleじゃまいか? それはべつにrc4の新機能じゃない
bakeryのHottest Codeだ。
め
1000 :
1001 :2008/12/20(土) 14:37:49 ID:rjb0NaLD
このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。