トップページphp
1001コメント305KB

【PHP】フレームワーク CakePHP 8ホール目【1.3】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/03/18(木) 10:00:59ID:6+kHM8kH
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※sage推奨
テンプレは>>1-5くらい

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
0176nobodyさん2010/04/13(火) 15:19:57ID:???
今度のは、どんなバグが待っているのだろう...
0177nobodyさん2010/04/13(火) 16:35:06ID:???
1.2.0のときバグなんてあったっけか?
0178nobodyさん2010/04/13(火) 16:40:10ID:???
AuthComponent がバグっていたような
0179nobodyさん2010/04/13(火) 16:55:01ID:???
ああ、あったねえ。
でも、それって、1.1でも1.2でも穴空いてたような
0180nobodyさん2010/04/14(水) 00:09:32ID:???
>>174
昨日の夜に見たときは、なかったんだけどな…日付改竄?キャッシュ?

>>175
このペースでいけば4月26日かな?
01811802010/04/14(水) 00:12:06ID:???
見たの昨日の夜じゃなくて、一昨日の夜だった
スレ汚しスマン
01821692010/04/14(水) 09:53:38ID:???
>>170

どうもありがとうございます。
なぜかmodelフォルダのファイルを作成し直したら直りました。
おそらく、ファイルの文字コード関係が怪しいと思ったのですが、結局原因は特定できず。。


ちなみに、Authコンポーネントを使う時は、

pages_controller, users_controller

などと、別途usersのコントローラを作成しますが、
これはわかりやすくするために分けるだけで、一つのコントローラに統合することも可能
ということでしょうか?
0183nobodyさん2010/04/14(水) 10:08:05ID:???
>>182
ファイル末尾の ?> を削除するところから始めたら良いことあるかもね

Authについては、まず、Userモデルを使って何か動かしてみれば良いんじゃないかな?
手を動かしたほうが早く身につくよ
01841692010/04/14(水) 10:18:49ID:???
>>183
レスありがとうございます!

末尾の ?>も排除したりいろいろしたのですが、結局上手くいきませんでした。。
どうもDOM付エンコードとかそっち系かなとにらんでおります。

Authは実際に動かしているのですが、usersコントローラのものを
pagesコントローラに少しずつ動かしても結構動くので、もしかして
全部移動できるかな? と思ったのです。
0185nobodyさん2010/04/14(水) 10:29:59ID:???
>>184
そりゃ動く
でも、意味がない

しかもよりによってPagesControllerだと、何のため?ってことになるし、単にメンテがしにくくなるだけのような気が

今後もCakePHPを使っていくつもりなら、CakePHPの思想に従ってみたらどうか
01861692010/04/14(水) 10:56:37ID:???
>>185

わかりやすい解説ありがとうございます。
cakeの思想に従うことにして、すっきりするようにします。
0187nobodyさん2010/04/14(水) 12:56:22ID:???
validateで質問させてください。
入力時にkeywordsテーブルの name フィールドをチェックしたいです。

class Keyword extends AppModel {
public $validate = array(
"name" => VALID_NOT_EMPTY,
);
}


しかし、viewでは 

$form->input('Keyword.0.name');

上記のように配列仕様の入力なので、validateが上手くいきません。
$form->input('Keyword.name'); と書けば動くのですが。

上手い方法はないものでしょうか?

0188nobodyさん2010/04/14(水) 13:18:29ID:???
>>187
アソシエーションの設定とControllerのsave周りを詳しく
0189nobodyさん2010/04/15(木) 00:04:30ID:???
みんなviewはphpコード書きまくり?

はるか昔smarty使ってたこととか、デザイナーにphpいじらせたくないこととか考えると
smarty組み込みたいんだけど、ヘルパーの引数に配列が渡せなくて詰んだ。
参考サイトは山ほど見たんだけど、$this->aa('key1','value1') で配列生成できているところまでは確認したけど
ヘルパー引数にほりこんでもヘルパーが動かない。。。
0190nobodyさん2010/04/15(木) 09:53:08ID:???
>>189
ここは見た?
http://d.hatena.ne.jp/am11op/20070614/1181837256

個人的にはSmartyなぞ必要ないと思っているが、使いたいヤツがいるのでしかたなく...
0191nobodyさん2010/04/15(木) 10:06:32ID:???
>>190
きめえwwwそこまでせねばらなんものかwww
いやそこまでせねばならんからそうしてるんだろうけど。
0192nobodyさん2010/04/15(木) 10:39:21ID:???
>>189
view で使う程度のphpなら直接デザイナーに教えた方がいいと思うが。
smarty なんて 今の時代に cgi 使ってプログラムやってるようなもん。
0193nobodyさん2010/04/15(木) 10:40:53ID:???
>>190
つかそこまでやるやつがなぜbakeにこだわるのかがわからん
0194nobodyさん2010/04/16(金) 16:07:48ID:???
>>192
きっとデザイナがviewの中で変なphp書くのが嫌なんだろ
0195nobodyさん2010/04/16(金) 16:41:46ID:???
つーか、下手にデザイナにviewいじられるとバグの温床になる気がするんだけど。
さわらせている人っているのん?
0196nobodyさん2010/04/16(金) 17:00:25ID:???
システム作ってからデザインさせることになると、デザイナがviewをいじるんじゃないのか
やったことないけど
0197nobodyさん2010/04/16(金) 17:10:39ID:???
プログラマが「ここにこんなループが来るからその部分のデザインたのむ」って
言えばいいだけでは?

一人で全部まかなってるフリーの立場からしたらプログラマとデザイナがそれぞれ
自分の仕事だけやってればいいなんてうらやましい。だからもっと話して
連携すりゃいいのにと思うなぁ。
0198nobodyさん2010/04/16(金) 17:14:40ID:???
ありきたりのデザインなら自分でできるが
アーティスティックなのを請け負うと、デザイナ必要になるよね

大抵、ループを説明するより自分でいじったほうが速い
0199nobodyさん2010/04/16(金) 17:23:20ID:???
ああそうか
見た目だけじゃなくて、機能を考えたら
例えばリストにするよりか、プルダウンにしたほうがいい
なんてことになって、それならAJAXつかっちゃおうとかに
なったりしたら、デザインもプログラムもいろいろ
いじるところが出てくるな
となるとどっちを主導でいくかってところで難しくなるのか
なるほどなるほど。

それならいっそう話し合いをして連携しないといけないと思うけど
そういう仕事ってディレクターとかコーディネーターみたいなのが
間にいるもんなんじゃないの?
自分で勝手にいじったらいろいろややこしくなるような気がする。
0200nobodyさん2010/04/16(金) 19:01:38ID:???
デザイナー、プログラマー以上にまともなディレクターが少ないのがこの業界の癌だよな
0201nobodyさん2010/04/17(土) 00:35:56ID:???
ならば貴公がなればよかろうに
0202nobodyさん2010/04/17(土) 00:55:04ID:???
政治家の文句も言うが、じゃあ政治家になれと言われたことはなかった
0203nobodyさん2010/04/17(土) 12:57:20ID:???
なるほど!
そういうことか。
本心では「政治なんて誰がやっても同じ」と思ってるから、
政治家になれとは言わない。
それと同じようにWebのディレクティングも誰がやっても同じだから・・・。
02041892010/04/17(土) 13:52:28ID:???
皆様コメントありがとうございます

>>190 さんの紹介してくれてる記事はもちろん試していて、
$this->aa()でview内でarray生成はできるけど(自作関数内var_dumpで確認)、helper内だとうまく渡せないんです


議論がされてますが、デザイナーにPHP触らせたくないというのが理由です。
こちらデザインは素人レベルでシステムのみ対応しているため、発注元にデザイナーを別途雇ってもらうケースが多いのですが
そのときにコードぐちゃぐちゃにされて「動かないからなんとかしてくれ」となるのが面倒なんですよ
(自作の各種パッケージをちょっとカスタマイズして売る、というやり方を副業でやっているので・・・)
あとはクライアントがsmarty指定するケースも多いです

もう少し軌道に乗ったら、提携デザイナーさんを何人か探して、
その人達を紹介するやり方にかえようと思います。

そんなわけで、1.3からはPHPコードべた書きでいこうと思います。
0205nobodyさん2010/04/19(月) 16:55:28ID:WgJ57/BK
cakeインストールしたところです
Cake is NOT able to connect to the database.
と言われましたが、当面はDBを使いません。
このメッセージが出ないようにするにはどうすればいいのでしょうか?
0206nobodyさん2010/04/19(月) 19:56:16ID:???
グーグル先生に聞くといいよ。

http://www.google.co.jp/search?hl=ja&rlz=1B3GGGL_jaJP283JP283&q=cakephp+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%80%80%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84&lr=&aq=f&aqi=&aql=&oq=&gs_rfai=
0207nobodyさん2010/04/19(月) 22:23:19ID:faTvhF7k
以下の処理を実現させたいのですが、CakePHPを初めて2週間の初心者ですので、どのようにすべきか分かりません。ご教授頂きたい。

1.あるテーブルの内容を一覧で表示。(各行にはチェックボックスがある)
2.一覧のチェックボックスにチェックが付いているものを、submitした時、別画面の一覧に表示させたい。

2番の処理をどのようにしたら良いでしょうか?
02081512010/04/19(月) 22:37:03ID:???
チェックされたIDをfindでひっぱってきて表示すればいいんでないの?
0209nobodyさん2010/04/19(月) 23:48:06ID:faTvhF7k
>>208
返信ありがとうございます。

具体的なコードを書いてくれるとありがたいです。
質問内容が抽象的で申し訳ないのですが…
初心者ということで勘弁してください。
0210nobodyさん2010/04/20(火) 01:53:35ID:???
ざけんなボケ
0211nobodyさん2010/04/20(火) 03:02:03ID:???
cake以前じゃね?
0212nobodyさん2010/04/20(火) 11:21:01ID:???
春ですね
0213nobodyさん2010/04/20(火) 23:34:34ID:???
初心者を免罪符にするとフルボッコになる
これテストにデルから覚えておくように
0214nobodyさん2010/04/21(水) 01:33:25ID:???
>>207
優しい俺が優しく解説致します。
2番の処理を、CakePHPとは関係なくあなたのお使いの言語環境(おそらくPHP)を使って
どのように実現するのか、考えてみれば自ずと分かります。
Cakeで楽になる部分はあっても、素のPHPで(自分のスキル的に)いかんともしがたい部分を
Cakeが良きに計らってくれるというわけでは、必ずしもありません。
季節の変わり目、まだまだ寒い日もあるかと思いますので、ご自愛下さい。
0215nobodyさん2010/04/21(水) 14:44:22ID:???
自分で初心者と言うような人でさえさわるようになったってことはcakeもずいぶんメジャーになったんだな
0216nobodyさん2010/04/21(水) 14:49:53ID:???
初心者なら素直にステップ1から順に踏んで行くほうがいいよね
いきなりcakeから入るより結果的にはそのほうがはやく覚えられると思うし
っていうかPHPなんかちゃんと勉強すれば2日か3日ぐらいでだいたい把握
できるんだからそれを省略すんなよと…
0217nobodyさん2010/04/21(水) 21:06:23ID:???
PHPが原付免許で、cakeはオートマみたいなもんだなレベル的に
PHP学習しても理解できないとか知的障害レベル
0218nobodyさん2010/04/21(水) 21:14:37ID:???
PC触って3日目の子が頑張れば構築できるのがcakeなのに
知的障害とかアホか
0219nobodyさん2010/04/21(水) 21:34:45ID:???
誰か218を日本語に翻訳してくだしあ
0220nobodyさん2010/04/21(水) 21:42:26ID:???
英語が出来ないと辛いぞ
0221nobodyさん2010/04/22(木) 12:04:30ID:???
知的障害は言い過ぎ。
0222nobodyさん2010/04/22(木) 18:04:46ID:???
>>207
もう見てないだろうけど
DBから一覧を取得したと時に各ユーザー(例えばね)のIDも取得してると思うけど
多分、find('all')で取得でforeachだよね?
<? e($form->checkbox('Model.name.id'))?>
submitで来たあとは1が入ってる人を一覧費だけじゃないかな

0223nobodyさん2010/04/23(金) 04:16:55ID:???
人それぞれ成長の度合いって物がある。
自己満足のためだけに発言する自分の卑しさを省みてみなよ。

ひとまずPHPの基本的な本を読んだほうがいい感じだけどね。
他の言語も含めて経験が無ければいきなりフレームワークはやめたほうがいい。
0224nobodyさん2010/04/23(金) 14:42:23ID:???
CakePHP 1.2.7 released
http://bakery.cakephp.org/articles/view/cakephp-1-2-7-released
0225nobodyさん2010/04/23(金) 15:32:11ID:IhQ26v2D
動的にモデルの構造やビューのフォームが切り替わるようなアプリを製作予定なんですが、
こういったアプリにはCakePHPは向かないですか?

簡単に言うと、CMSのカスタムフィールドを拡張したようなイメージで、
データの入力タイプ(フォームの種類、バリデーションのルール)を用意しておいて、
ユーザーの入力に応じて、動的に表示するフォーム・バリデーションやアプリの挙動を切り変えます。

素で作るとすると、データ用の基底クラスを作って、入力タイプごとに派生クラスを作っていく感じになると思います。

こういった独自のクラスをCakePHPのMVCに組み込むのが難しそうな感じがしているのですが、
CakePHPの場合、どうやるのがいいんでしょう?

それとも他のフレームワークを使ったほうがいいですかね?
0226nobodyさん2010/04/23(金) 15:58:17ID:???
>>225
モデルの構造が変わるっていうのはテーブルを作の?
0227nobodyさん2010/04/23(金) 16:18:29ID:???
>.226

モデルのバリデーション機能を利用しようと思っていますが、使い切りのジェネレーターのようなものなので、
今の所、フォームから入力されたデータはセッションに保存する予定です。
ですので、テーブルも作りません。

ただ、後々ユーザーの設定(フォームの組み合わせ)をDBに保存する予定があります。
が、これは動的なフォームを生成・切り替えさえできれば、設定だけ保存しておけば済むのであまり問題ないかと思ってます。

問題はデータ構造の切り替えをどうするか、です…。
例をあげると、

1) ユーザーがドロップダウンリストから「データパターン1」「データパターン2」などを1つ選んでサブミット
2) 画面遷移後、選択したタイプによって、フォームを表示。ユーザーが入力してサブミット。
 「データパターン1」の場合は「ドロップダウンリスト」を表示
 「データパターン2」の場合は「テキストフィールド」を表示
 など
3) データパターンの種類に応じたバリデーションを行う。

バリデショーンは動的に切り替えられそうなので問題ないのですが、
データ構造をもたせたクラスをどう組み込むかで、CakePHPでどうやるのがよいのか悩んでます…。
0228nobodyさん2010/04/23(金) 16:25:09ID:???
>>227の例では項目が1つですが、実際には複数の入力タイプの組み合わせになり、
各項目を操作していく感じになります。

パターン1 = テキスト + ドロップダウンリスト
パターン2 = テキスト + ラジオボタン
など

DataModel(extends AppModel)などを作り、TextDataModel(extends DataModel)などを作ればよいのかな、
(その他、DataModelの組み合わせを扱うモデルクラスなど)
と思いつつ、CakePHPではかえって複雑になってしまう気がして悩んでます。
0229nobodyさん2010/04/23(金) 16:28:36ID:???
>>228
うーん。イメージがいまいち掴めない
最終的に保存する例を教えてくれ
あと、セッションに保存したデータはどうするの?そのあと
0230nobodyさん2010/04/23(金) 16:29:11ID:???
保存されるデータの例 だった
0231nobodyさん2010/04/23(金) 16:41:57ID:???
>>229

フォームに入力したデータそのものは保存しないです。
入力されたデータを計算し、最終的に結果を画面に表示(またファイルにしてダウンロードしてもらう)だけですので。
後々データを保存する場合も、セッションをハッシュ化してそのまま保存しようと考えてます。

計算を行う際(と後々データからフォームを復元する際)に、フォームの種類を「走査」する部分をどうするか、が悩んでいる部分です。

極端な話、モデルを一つだけ作って、その中で

switch($form_type) {
case 'text':
...
case 'checkbox':
...
}

などとし、バリデーションなどだけ動的に切り替えてもいいのですが、
やはり、柔軟性を高めるためにもデータの種類ごとにクラス化したいと思ってます。

似たようなアプリがあれば説明しやすいのですが、なかなか見つからないもので、、、すみません・・・
0232nobodyさん2010/04/23(金) 16:46:50ID:???
イメージとしては、メールフォームの作成アプリが近いかもしれません。

ttp://onlineform.jp/gen/form?template=inquiry&type=1&color=black
0233nobodyさん2010/04/23(金) 16:51:23ID:???
>>231
外してるかもしれんが自分なら

モデルはひとつ
データに応じてバリデーションを切り替える
種類の識別は、種類を格納したデータを持っておいても良いし、フィールド名(擬似的なフィールド名)で識別しても良い

って感じ。
柔軟性を高めるというのが何を意味しているのかはちょっと分かんなかった
0234nobodyさん2010/04/23(金) 17:01:52ID:???
>>233

なるほど。
データの種類ごとにクラス化すれば、処理を委譲できるのでそちらのほうが楽かな、と思ったのですが、
やはり、CakePHPを使う場合はベタな書き方のほうがいいのかな。

もうちょっと色々調べてみます m__m
0235nobodyさん2010/04/23(金) 17:19:44ID:???
>>234
クラスにしてもモデルにしてもいいんだけど、
結局データの種類に応じて読み込むんだろうから、一緒かと
あと、バリデーションだけなら、外出しするほどではないんじゃないかと想像
0236nobodyさん2010/04/23(金) 17:22:17ID:???
Single Table Inheritanceというのが近そうだということがわかりました

ttp://bakery.cakephp.org/articles/view/inheritable-behavior-missing-link-of-cake-model

ただ、やはりCakePHPで想定されている使い方ではないようですね…

モデル自体を自力で実装という手もありますが、少し凝ったことをしようとすると難易度が極端にあがる、
ということだけはわかりました…。
0237nobodyさん2010/04/23(金) 17:42:54ID:???
パターンとバリデーションをセットにして記録したモデルを作っておけばいいだけじゃないすかね。
0238nobodyさん2010/04/23(金) 18:27:26ID:aAazCR87
version 1.2.3でキャッシュを使っているんですが、下のような書き方でキャッシュされません。
どこが間違っているのでしょうか?

if( !$list = Cache::read('user_list') ) {
$list = $this->Index->getUserList();
Cache::set(array('duration'=> '+5 minutes'));
Cache::write('user_list',$list);
}
キャッシュ時間は
Cache::setで設定しろといろいろなサイトには書いてあるのですが、ここを記載しているとまったくキャッシュされていません。(正確にはキャッシュはされているが、Cache::readがfalseを返す)
ここをコメントアウトするとキャッシュされています。
ご教示お願いいたします。
0239nobodyさん2010/04/24(土) 10:57:06ID:???
>>238
sageてね

Cache::readの前にもCache::setが必要だと思う
が、解決するかは分からない
0240nobodyさん2010/04/24(土) 11:13:01ID:???
CakePHP製のソースを色々見てまわってるんだけど、
OOPを活かした書き方をしているものは皆無ですね

Javaちっくな書き方をするには、
やはり、フレームワークの縛りが強すぎるのだろうか

もし、なにかよいサンプルがあれば教えてください
0241nobodyさん2010/04/24(土) 12:04:17ID:???
Javaちっくな書き方したいならsymfonyとかの方が向いてるんじゃない?
CakePHPはphp4対応だから無理がある
0242nobodyさん2010/04/24(土) 12:43:41ID:???
てか、なんでもかんでもオブジェクト指向にしなくていいじゃん。
継承しすぎて無意味に複雑になってしまうこともあるし。
自分1人でやってるならいいんだけど、多人数でやるなら分かりやすさを優先すべし。
0243nobodyさん2010/04/24(土) 13:31:06ID:???
しょうがないのかな
まぁもうしばらく使ってみます

それとは別に、
へぇ、これもCakePHP製なの?というものがあったら紹介してもらえるとうれしいかも

製作例はいろいろ探してみたけど、全て同じようなものばかりですね…
0244nobodyさん2010/04/24(土) 15:22:02ID:???
Numberのサイトとかかな?
でも>>243くんが何を持ってCakePHPっぽいと思っているか知らんから何とも言えないけど
0245nobodyさん2010/04/24(土) 15:54:11ID:???
>>244

それはどこでしょう?

色々参考になるかと思ってソース見てるんだけど、どれも似たような感じなので…
フレームワークなんで、当然といえば当然かもしれないけど、ちょっとおもしろみがないなと
0246nobodyさん2010/04/24(土) 17:20:13ID:???
オブジェクト指向的な記述にこだわる理由をしりたい
俺ならそういうときはJAVAかrubyでやる
PHPのOOPはいろいろアレすぎて面倒
0247nobodyさん2010/04/24(土) 18:08:57ID:???
サーバーの負荷を考えると cache 使った方がいいんだろうけど、
みんな最初っから cache 使ってプログラム組んでる?

サーバーに負荷がかかりまくってやべーなと思ったら cache を使うって方が効率がいいと思うけど。
0248nobodyさん2010/04/24(土) 19:52:17ID:???
つーかOOPを活かした書き方ってなんだ?
0249nobodyさん2010/04/25(日) 05:28:46ID:???
>>246

ユーザー入力に応じて柔軟に機能を切り替えたいから。拡張も楽だし。
LimuSurveyというのがCakePHPが使われてるらしいと思って見たけど、
中身はCakePHPではなかった。

ttp://www.limesurvey.org/en/demo

デモを見たら、これがCakePHPならすげえや、と思ったけど、
やはりこういうのは難しいんだろうね。というか、ソースがごちゃごちゃになりそう。
0250nobodyさん2010/04/25(日) 09:49:57ID:???
>>249
難しいこともないしソースがごちゃごちゃになることもないが、きみがCakePHPをdisってるつもりがないなら、比較スレにいった方が良い
symfonyやRuby on Rails やDjangoなど、他にも優秀なFWはいっぱいあるから
あったものを選べば良いんじゃないかな
0251nobodyさん2010/04/25(日) 15:27:11ID:???
DBを設計するとき、SQLで外部キーを設定しないでもhasOneとかで設定すれば良いのですか?
ガイドブック(1.1)にはMyISAMで作られてたし、SQL文見ても外部キーのことは書いてなかったし・・・

激しく即出な気が・・・
0252nobodyさん2010/04/25(日) 15:35:18ID:???
Announcing CakePHP 1.3.0 Stable
http://bakery.cakephp.org/articles/view/announcing-cakephp-1-3-0-stable

すたぶるキタ━━━━━━(゚∀゚)━━━━━━ !!
0253nobodyさん2010/04/25(日) 15:38:43ID:???
各バージョンの機能比較してるサイトってどこかにないですか?
わかりやすく表形式とかで。
0254nobodyさん2010/04/25(日) 16:22:54ID:???
1.3.0使ってみるかな
0255nobodyさん2010/04/25(日) 16:34:18ID:???
>>254
みるかなじゃねーよw
使ってみて感想なり批評なりしろよ。
0256nobodyさん2010/04/25(日) 18:26:09ID:???
とうとう1.3.0きたか
0257nobodyさん2010/04/25(日) 19:22:32ID:???
>>255
使ってみた
気持ちよかった
0258nobodyさん2010/04/26(月) 03:52:40ID:???
sql_dumpはエレメンツになってるんかな
0259nobodyさん2010/04/26(月) 04:34:23ID:???
インターフェースや継承を駆使したガチガチな感じなんだろうけど
AOP的なのの使い所や命名なんかにルールを持たせとけば
ゆるくても品質はそんな下がったりせんけどな。
むしろPHPは言語サポートが少なすぎて厳密にやろうとすると疲れる。
0260nobodyさん2010/04/26(月) 04:42:12ID:???
言語サポートってmb系のこと?
0261nobodyさん2010/04/26(月) 10:33:00ID:???
>>238
キーにアンダースコアを入れるとうまくいかなかった記憶が。。。
0262nobodyさん2010/04/26(月) 12:20:51ID:???
cakephpのコーディング規約について質問です

1 $writedata
2 $write_data
3 $WriteData
4 $writeData

どれがcakephp流の規約でしょうか。
0263nobodyさん2010/04/26(月) 12:27:17ID:???
>>262
変数名が使われるケースはFormHelper::input()くらいかもだけど
$write_data
だね

もっと一般的な例で言うと
$admin_users
0264nobodyさん2010/04/26(月) 16:04:48ID:???
>>263
先生、ありがとうございました!
0265nobodyさん2010/04/27(火) 09:35:18ID:???
超亀だけど、前スレの質問
--
993 nobodyさん sage 2010/03/18(木) 08:05:51
1.3になってlibsってフォルダが増えたけど、
ここには何をいれるの?
vendorsとの違いは何??
--
ttp://mark-story.com/posts/view/using-custom-route-classes-in-cakephp
で、CakeRoute クラスを上書きする記事が出てるけど、そのなかに
App::import('Lib', 'routes/SlugRoute');
ってあったから、こんな感じの使い方じゃないかな?
(vendorsはCakePHP関係ないファイルを入れるところ)
0266Beginner2010/04/27(火) 23:53:24ID:M6fZ8Sga
Routesを使用して開発をしていますが、
以下の場合、逆ルーティングが出来ません。

処理の流れとしては、一覧画面→編集画面→確認画面→(登録完了)→一覧画面
という画面遷移になります。


routes.php
Router::connect(
 '/systemFaqCategories/:faq_category_id/edit/*',
  array(
  'controller' => 'faq_categories',
  'action' => 'systemFaqCategoryEdit'
  ),
 array(
   'faq_category_id' => '[0-9]+'
  )
);
0267Beginner2010/04/27(火) 23:54:09ID:M6fZ8Sga
xxx_controller.php
//編集画面
function systemFaqCategoryEdit(){
debug('Called systemFaqCategoryEdit');

pr($this->params);

$this->editFaqCategory('systemFaqCategoryEdit',
array(
'class_information_id' => FAQ_CATEGORY_TYPE_SYSTEM,
'faq_category_id' => $this->params['faq_category_id']
)
);

}
0268Beginner2010/04/27(火) 23:55:19ID:M6fZ8Sga
//編集画面or確認画面or登録 を分岐
private function editFaqCategory($actionName, $condition) {

if ($condition['class_information_id'] == FAQ_CATEGORY_TYPE_SYSTEM) {
// 編集画面 確認ボタン
if (!empty($_POST['confirmation']) && $_POST['confirmation']) {
$this->editConfirmation();
return;
}

// 確認画面 戻るボタン
if (!empty($_POST['return']) && $_POST['return']) {
$this->editReturn();
return;
}

// 確認画面 登録ボタン
if (!empty($_POST['save']) && $_POST['save']) {
$this->editSave();
return;
}

if($sId <> '') {
$getFields = array('id', 'class_information_id', 'category_title', 'regist_id', 'update_id', 'created' ,'modified');
$this->data = $this->FaqCategory->read($getFields, $sId);
$this->render('edit');

}
}
}
0269Beginner2010/04/27(火) 23:57:37ID:M6fZ8Sga
edit.ctp
<?php
$confirmButton = array(
'controller' => 'faq_categories',
'action' => 'systemFaqCategoryEdit',
'faq_category_id' => $this->params['faq_category_id']
);



e($form->create('FaqCategory',
array('url'=>$confirmButton)));

e($form->submit('確認', array('name' => 'confirmation', 'div' => false, 'tabindex'=>1)));

?>

以下
入力inputのHTML

確認画面へ遷移した時に、ルーティングがきいていない。
URLがコントローラ名+アクション名になってしまう。

解決策をお持ちの方は教えてください。

長い文章になってしまったのはご了承ください。
0270nobodyさん2010/04/28(水) 06:20:11ID:???
sageてね
あとバージョンを書いて

んでRouter::URL()でリバースルーティングできるかを教えて
0271nobodyさん2010/04/28(水) 16:53:38ID:???
CakePHP1.2.6使用です。

モデルのsaveでNULLを入れたいときはどうしたらよいでしょうか?
OrderというモデルのpriceをNULLにしたかったので

$this->data['Order']['price'] = null;
とか
$this->data['Order']['price'] = '';
してから

$this->Order->save($this->data);
したのですが、DBには0という値が入ってしまいます。

もちろん、DB側ではNULL化というテーブル定義にしています。
0272nobodyさん2010/04/28(水) 17:02:58ID:???
最近さわりはじめてちょっと疑問に思ったことがあるので質問です。
今、適当な練習用サンプルを作っています。

利用するデータの編集をscaffoldを利用して作成しました。(Viewのみ多少修正)

しかし、削除のパスもリンクで表現されているので、(/hoge/delete/1 のように)
クローラーが巡回してきたらすべてのデータが消える気がします。

このデータは特に秘密にしたいようなものではなく、むしろ利用者で好き勝手に編集して問題がないので、セッション管理は行っていません。
セッション管理などしてない場所でscaffoldを利用するというのは想定外なのでしょうか。


現在はセッションを利用して対策する方向で修正していこうと考えていますが、
「何らかの対応方法がcakephpに用意されている」もしくは「もっと単純な対応策がある」
といった情報がありましたらぜひ教えてください。
02732722010/04/28(水) 17:04:13ID:???
Cakeのバージョンを書き忘れました。
1.3を利用していますが、他のバージョンに変更も可能です。
0274nobodyさん2010/04/28(水) 17:57:45ID:???
>>271

普通に保存できると思う。少なくとも自分はできてる。
DB側のデフォルト値をNULLにしとけば間違いないはず。

CakePHPはNULL使わないほうがよいみたい。
バリデーションもnullの扱いがおかしすぎる。
0275nobodyさん2010/04/28(水) 18:00:09ID:???
バリデーションでnullって何か不具合あったっけ?
■ このスレッドは過去ログ倉庫に格納されています