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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2007/11/14(水) 02:50:28ID:???
本家
http://www.cakephp.org/

10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/

マニュアル日本語化
http://www.cakephp.jp/doc/

日本語フォーラム
http://cakephp.jp/modules/newbb/

あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
0002nobodyさん2007/11/14(水) 03:12:01ID:???
乙。
0003nobodyさん2007/11/14(水) 03:25:56ID:???
深夜遅くに乙。
0004nobodyさん2007/11/14(水) 03:26:45ID:???
あと前スレ。

【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/
0005nobodyさん2007/11/14(水) 11:46:19ID:???
>>1
>>あとこのへんとか(初心者向けTIPS)
>>http://www.avatarfinancial.com/pages/cake/

ヒント:初心者は英語読めないw
0006nobodyさん2007/11/14(水) 12:26:42ID:???
つ「帰国子女の新米プログラマー」
0007nobodyさん2007/11/14(水) 16:44:29ID:???
CakePHP入門リンク集
ttp://pub.studio15.jp/2007/11/13/cakephp-links/
0008nobodyさん2007/11/14(水) 21:45:34ID:Y+NYefM3
先輩方、

なぜ $this->set('hoge','hoge'); といちいちコントローラーからviewへ送るものを
指定する必要があるのか不思議に思うのですがいかがでしょうか。

$this->set(get_defined_vars()); を app_conrtoroller に直接書いておくというのが
一番手間かからず楽だと思うのですが、何かデメリットありますかね

ご指導、ご鞭撻のほど、よろしくお願いします。
0009名無しさん@Vim%Chalice2007/11/14(水) 22:22:26ID:???
>>8
$this->set()を拡張するって事?

そういう風に纏めても結局、コントローラとアクションの
組み合わせごとにビュー側へ渡す変数ってバラバラだよね。
変数を渡したくない時もあるし、条件ごとにセットしたりしなかったり。

そーゆー所ってのは往々にして関数で一括りにしようとすると大変な思いをする。
んで後からキモい拡張を繰り返す羽目になる。

つーかね、$this->set();をいっぱい書くのが嫌だっつーんなら
こういう書き方があるぞ

$this->set( array(
  'foo' => $foo,
  'bar' => $bar,
));
0010nobodyさん2007/11/15(木) 16:51:14ID:k/tuboV7
>>9

ありがとうございます。

$this->set( array(
  'foo' => $foo,
  'bar' => $bar,
));

といった書き方でやることにします。ありがとう!
0011nobodyさん2007/11/16(金) 00:07:15ID:???
>>9
人のアイディアを握りつぶすのが得意な方ですね。
0012nobodyさん2007/11/16(金) 06:01:31ID:???
デメリットがないかと書いていたから、
デメリットと、
おまけでそれへの対処の一例を書いてるだけのように見えるが...

ゆとりか?
0013名無しさん@Vim%Chalice2007/11/16(金) 08:08:28ID:???
>>11
そういう風に見える?
たしかに口は悪いけど、こういう事ってひとりじゃなかなか
気付かねーと思うんだけどな

習い事でも何でもそうだけど、最初は人の真似から始まるじゃん
プログラミングだけ個人のアイディアが〜とか言ってたら
切磋琢磨できないよ

//まあ、苦労するのもいい勉強だけどな
0014nobodyさん2007/11/16(金) 11:05:41ID:???
ダイアログ的な汎用のページを作る方法って無いかな?

たとえば、商品入力ダイアログボックス
検索も出来て、クリックして選択。
そういうページだけど、これは汎用。

あるページの商品入力にこのダイアログを使う。
また、違うページの商品入力にもこのダイアログを使う。
ダイアログ的な用途だけど、ウインドウポップアップで
出てくるのではない普通のページ。
0015nobodyさん2007/11/16(金) 11:56:29ID:???
それはJavascriptの仕事なんだぜ
0016nobodyさん2007/11/16(金) 13:26:25ID:???
>>13
> たしかに口は悪いけど、こういう事ってひとりじゃなかなか
> 気付かねーと思うんだけどな
>
> 習い事でも何でもそうだけど、最初は人の真似から始まるじゃん
> プログラミングだけ個人のアイディアが〜とか言ってたら
> 切磋琢磨できないよ

ヘタレのくせに自意識過剰じゃね?
0017132007/11/16(金) 15:42:29ID:???
へたれで自意識過剰なので、スキルアップのため
ぜひ>>16様の神実装を参考にさせてください><
0018nobodyさん2007/11/16(金) 17:32:00ID:???
findAllを使うと

$data[0]['Model']['column']

の形式の配列が帰ってくるんですが、これを

$data[0]['column']

の形式で取得したいんです。何か楽な方法って用意されていませんかね?
0019nobodyさん2007/11/16(金) 17:41:50ID:???
>>16
文句しか言えないモマエのほうが>>13よりずっとヘタレ
0020nobodyさん2007/11/16(金) 17:52:26ID:???
>>18
app_model.php内に以下のようなコードでも入れてあげれば?

function hoge($data)
{
  foreach($data as $i => $data2){
    foreach($data2[$this->name] as $column => $Value){
      $newData[$i][$column] = $Value;
    }
  }
  return $newData;
}

で、各々のモデルでfindAllした後に$data[0]['Model']['column']形式のデータを引数にしてhogeする
0021nobodyさん2007/11/16(金) 19:37:38ID:???
>>20さん
なるほど、ありがとうございます。
やっぱり自分で作らないといけないんですね。
お手数おかけしました。
0022nobodyさん2007/11/17(土) 02:24:41ID:???
東京では勉強会も企画されてるのか。
都会の人はうらやましいな。本当に。
0023nobodyさん2007/11/17(土) 02:59:12ID:???
じゃあ田舎でもやろうぜ!@福岡
0024nobodyさん2007/11/18(日) 00:59:28ID:???
福岡は都会だろ@佐賀
0025nobodyさん2007/11/18(日) 19:13:19ID:???
最低と比べちゃすべて上だわな。
0026nobodyさん2007/11/20(火) 01:45:08ID:???
CakePHPガイドブック、誤字脱字多すぎだろw
0027nobodyさん2007/11/20(火) 08:22:30ID:???
簡単と言われるCakePHPも俺には難しい…orz
オマイラ天才だな
0028nobodyさん2007/11/20(火) 11:57:28ID:???
>>27
まず一度自分で簡単なMVCフレームワークを作ってみると
理解が段違いに早くなるよ。
0029nobodyさん2007/11/20(火) 12:21:14ID:???
>>26
途中までしか読んでないが説明と画面のスクリーンショットが一致してないとかゴロゴロあるな
0030nobodyさん2007/11/20(火) 13:01:09ID:???
>>26
誤字脱字以前に最初からbakeの使い方を説明しているのはどうなんだろ。
Railsから来た人ならわかるのかも知れないけど、Cakeから始めたら
絶対に混乱すると思うんだが。
modelとか複雑な例を出してるし、コードが長すぎて理解できないっしょ。
0031nobodyさん2007/11/20(火) 14:37:23ID:???
それはあるな。導入編で一気に作ってから実践編で基本に立ちかえってる。
それと実践編のサンプルの仕様が良くわからない(実践的なものと思えない)
0032nobodyさん2007/11/20(火) 15:35:43ID:WpMCnsjr
質問させてください。

public_html
└app/
└cake/
└vendors/
└hoge/(任意のディレクトリ)
 
と配置した場合に、hoge/ はcakePHPの影響を受けたくない場合はどうしたらいいんでしょうか。
具体的にはxreaのlogディレクトリで、中にはphpmyadminが入ってます。

http://sample.sxxx.xrea.com/log/phpmyadmin/でアクセスすると、
cakeのエラー:you are seeing this error because controller LogController could not be found.
.htaccessの問題かとは思うんですが、そもそもディレクトリ配置の仕方に問題アリですか?
0033nobodyさん2007/11/20(火) 15:49:32ID:???
サーセン自己解決したみたいです。

参考:
ttp://purazumakoi.info/blog/archives/2007/09/cakephp.html
0034nobodyさん2007/11/20(火) 19:29:14ID:???
>>33
publicなところにコアを置くのは感心しないな。
0035nobodyさん2007/11/20(火) 20:13:05ID:???
ツリー構造をしたデータをオブジェクトとしてうまく扱う方法ってあるの?

つまり、$model->findTree('id = a1') とかやったら、
- a1
 +- b1
   +- c1
   +- c2
 +- b2

こんな感じでツリーのデータとして返してくれる感じ。

参考までにほかのO/Rマッパーの話でもいいけど。

とここでふと思ったけど、自分のモデルに対してアソシエーション設定すればうまく行くのか?
0036nobodyさん2007/11/21(水) 02:55:26ID:???
railsのscaffoldがcakeのbake?

cakeもrailsみたいにコマンド一つでファイル作ってくれればいいのに
質問に答えていくのがなんか面倒
0037nobodyさん2007/11/21(水) 08:30:39ID:Cl2dTAkZ
答えるのも面倒だし、M・V・C別々なのも面倒だよね。
0038nobodyさん2007/11/21(水) 12:29:06ID:???
wraper書きゃいいだけじゃん。
0039nobodyさん2007/11/21(水) 15:54:05ID:???
>>35
TreeBehaviorといふものがあつてだな
0040nobodyさん2007/11/22(木) 01:19:04ID:???
ユーザー登録によくある、登録するメールアドレス宛に一回メールして、そこに記載されているリンクをクリックして登録みたいな処理ってコントローラーにベタガキかな?
0041nobodyさん2007/11/22(木) 08:23:16ID:nlNH1bOE
ベタ書きの意味が分からないけど、メソッド分けて、それぞれにモデルとビューを作ればいいんじゃないの?

コンポーネントにすべきか、という意味?
0042nobodyさん2007/11/22(木) 10:30:25ID:???
メールを使ったユーザー登録をcakeに書くならどういうのが最適かな程度の意味でいったんだけど
0043nobodyさん2007/11/22(木) 12:06:19ID:AuFQqZEI
普通に書けばいいんじゃないかな。
0044nobodyさん2007/11/22(木) 18:33:00ID:???
cakeやばい、どうやばいのかはやばすぎるので言えないぐらいやばい

一回自分でサイト構築までやってみて、これ試すと相当やばい
PHP野郎にとっては麻薬以上にやばい
0045nobodyさん2007/11/22(木) 19:19:37ID:???
それっていいって意味?
0046nobodyさん2007/11/23(金) 01:56:02ID:???
Railsの方がもっといいけどね。
0047nobodyさん2007/11/23(金) 02:09:41ID:???
れいるずだとぱふぉーまんすちゅーにんぐがたいへんそうなのです
0048nobodyさん2007/11/23(金) 12:37:53ID:???
cakeの勉強会、二つも企画されてるのか。
0049nobodyさん2007/11/23(金) 13:00:29ID:???
AjaxとかJavascriptに手を出したことがない初心者なんですが、
Cakeのヘルパーからこれらの世界に入っていくのは不味いですかね?
ある程度本でも何でも読んでから出直したほうが良いのかな
0050nobodyさん2007/11/23(金) 17:34:58ID:???
>>49
そういう人用のヘルパーだと思われるよ。
普通に書きたきゃ書けばいいし、ライブラリ使いたきゃ使えばいい。
まずいも何もないと思う。
0051nobodyさん2007/11/23(金) 18:26:39ID:???
ログインしてなかったら「ここは何々のページです。ログインしてください。」みたいに、viewの表示を変えるとかってview側でif分岐するしかないのかな。
あまりviewにロジック組みたくないんだが。
0052nobodyさん2007/11/23(金) 18:38:55ID:???
普通ログインが必要なページにリクエストしてきて
ログインしてなかったら一括でログイン促すページにリダイレクトだろ
おまえwebアプリ作ったことあるのか?
0053nobodyさん2007/11/23(金) 21:16:55ID:???
>>50
そうですか、助かりました。
でも少しはAjax, Javascriptの本もかじってみようと思います。
ありがとうございました。
0054nobodyさん2007/11/23(金) 21:17:41ID:???
ログインしてなかったら「ログイン」
してたら「ログアウト」を表示したいってことじゃないの?
0055nobodyさん2007/11/24(土) 04:15:26ID:???
いやそのページが何をするページかだけ説明をいれたいから飛ばすとかは無理。さすがにWebアプリ未経験ではないわ。
ログインしてない時はグローバルナビのリンク先urlでも変えて、ログインフォームと新規登録リンクと個別説明ページに飛ばすか
できれば同じurlにしたかったが。
0056nobodyさん2007/11/24(土) 04:17:02ID:???
なんか意味わからない文章なったから放置で…
0057nobodyさん2007/11/24(土) 07:36:32ID:???
よくわかんないけど「ここは何々のページです。ログインしてください。」って
テンプレートだけ作ってコントローラから何々の部分のメッセージを設定して
renderればいいんじゃないのん
0058nobodyさん2007/11/24(土) 13:35:28ID:???
>>55

お前、Webアプリ未経験者だなw
0059nobodyさん2007/11/24(土) 14:44:27ID:+GWOZRBH
僕は

○ログインしている場合
view/layout/default.thtml に
if($_SESSION['Login']['email'] != ''){ $this->render('loginok.thtml');}
(ログイン中のエレメントを表示させる)

○ログインしていない場合
view/layout/default.thtml
if($_SESSION['Login']['email'] == ''){ $this->render('loginng.thtml');}
(ログインしてね♪ボックスを表示させる)

という処理でわけてますね。
わかりやすいし、いいと思いますよ。
0060nobodyさん2007/11/24(土) 16:57:12ID:???
どっちにしろviewでロジックは入れなきゃいけないね。
エレメントにしておいて、コントローラで切り替えるってのはいいかも。
0061nobodyさん2007/11/25(日) 03:26:25ID:???
Cake1.2系使ってみてるんだけど、Viewでエラー出すときのメソッドって変わってるよね?
<?php echo $html->tagErrorMsg('Post/body', '本文は必ず入力してください。')みたいだったやつ。
Modelでメッセージ内容決められるようになったから。

あとエラーって一個ずつしか出ないけどまとめて表示とか出来ないの?

<?php echo $html->tagErrorMsg('Post/body', '本文は必ず入力してください。') ?>
0062nobodyさん2007/11/25(日) 08:44:45ID:???
>>61
$form->input()を使えばエラーも一緒に表示されるようになる。
エラー文はmodelでも指定できるし、今まで通りControllerでも
指定できるけど、tagErrorMsgは無くなったので、inputの第二引数に
messageとして渡してあげればOK。

一個のinputに対してエラーを全部表示するのはコアを触らないと
無理じゃないかな。よく知らん。
0063nobodyさん2007/11/25(日) 20:28:15ID:???
お答えありがとう。
一個ずつしか出ないならJavascriptの使用を強制してエラー出してあげるしかないかな
0064nobodyさん2007/11/25(日) 22:38:25ID:???
フォーム周りやヴァリデーションに関してはEthnaのほうがわかりやすいなぁ
0065nobodyさん2007/11/26(月) 00:36:21ID:???
べ、勉強会、ど、どうだったの!?アッー
0066nobodyさん2007/11/26(月) 21:19:27ID:???
ケーキももう腐りかけなんかなぁ
0067nobodyさん2007/11/26(月) 21:32:38ID:g6VI9o/i
今勉強中だからそれは勘弁して欲しい。
0068nobodyさん2007/11/26(月) 22:20:15ID:???
Railsにようこそ
0069nobodyさん2007/11/26(月) 22:37:57ID:9laXyXH+
それは断る。
0070nobodyさん2007/11/27(火) 00:22:24ID:???
このスレは、ホモが集まってんの?
0071nobodyさん2007/11/27(火) 04:42:44ID:???
たしかに楽なんだけど
細かい部分で変な仕様っていうか不具合っていうか
いまいちな動作するよねえ

validationとかsaveとか

おかげでソースとにらめっこで時間かかる…
0072nobodyさん2007/11/27(火) 07:25:54ID:q198YkJr
もちろんフィードバックはしてるんだよな?
0073nobodyさん2007/11/27(火) 09:33:56ID:???
validationは2系ならよいんじゃ?
saveはidも更新されちゃうとかか?
0074nobodyさん2007/11/27(火) 11:12:10ID:O5dAXXRh
テーブル設計のとき、外部キーは「テーブル名_id」と命名しますよね。
テーブル名が「prefix_テーブル名」の時は「prefix_テーブル名_id」となるんでしょうか?

また、テーブル名は複数形ですか?
0075nobodyさん2007/11/27(火) 21:07:05ID:???
環境をまず言うべきだ
0076nobodyさん2007/11/27(火) 21:16:36ID:???
>>72

そこまでまだ使いこんでない

>>73

2は少しよさそうだね

なんかわかりにくいというか 仕様が曖昧だよね
まあ楽につくろうっていうのが趣旨だからしかたないのかもしれない

もうちょっといじってみる
0077nobodyさん2007/11/27(火) 22:46:38ID:???
>>74
日本人じゃないから仕方が無いけど、
単数と複数の意味を考えよう。

テーブルとは、レコードの集まりだ。
で、一つのレコードは、一つのもの。つまり単数だ。
だからレコードのID・・・つまり一つのもののIDなのだから
単数形_IDになる。

そしてその集まりであるテーブルは当然複数形となる。

ついでにいうと、テーブルのレコードに相当するModelは当然単数形だし、
そのモデル(単数)の一覧(複数)を表示したりするコントローラは複数形となる。

単数形と複数形の使い分けはこんな感じ、

あと残りの単語の区切りがアンダーバー区切りか頭大文字かはクラス名は頭大文字
ファイルやテーブルはアンダーバー区切りとなる。
0078nobodyさん2007/11/28(水) 00:30:00ID:???
テーブル A hasMany B
テーブル B hasAndBelongsToMany A

のときの A のデータの編集(新規追加)画面を作ってる

Aの編集画面で、Bのデータを持ってきて表示・選択できるところまでできた

で、Aのデータをsaveするときに、Bのデータのsaveとかvalidatesは自動でやってくれるの?

この辺り、いまいちややこしいなああ
0079nobodyさん2007/11/28(水) 01:03:43ID:???
>>78

続きだけど
この場合、自前でvalidatesするときはどこでするの?

AとBを関連づけるための A_Bテーブルも作ってるけど A_Bモデルでやるのかな?
それともAモデル?
Bモデルだとデータの形式が違うから AモデルかA_Bモデルだとは思うんだが…
0080nobodyさん2007/11/28(水) 03:05:53ID:k8OzrBLt
1.1で特定のコントローラーだけtagErrorMsgでエラーメッセージがでなくなったんですが、同じ現象にあたったひといませんか?
コントローラ内で
pr($this->User->invalidFields());
とかってやるとちゃんとvalidateは行われているようなんですが・・・
0081nobodyさん2007/11/28(水) 14:51:33ID:Zvh5a2IN
cakephp 動作がすげー重いような気がするんだけど・・・
どうなんすか。先輩方。
0082nobodyさん2007/11/28(水) 15:01:13ID:???
何と比べて?

ただの一枚のphpファイルだけで完結するものと
データベースにアクセスするものを比べたら
そりゃ重いのは当然だと思うが?
0083nobodyさん2007/11/28(水) 15:18:31ID:???
CodeIgniterなどお召し上がり下さい、ふくよかなお方
0084nobodyさん2007/11/28(水) 20:51:41ID:???
CakePHP使ってる人たちは、他のPHPフレームワークをどう見てる?
0085nobodyさん2007/11/28(水) 21:56:36ID:???
railsは神
0086nobodyさん2007/11/29(木) 17:42:41ID:IwtVKe0+
>>82
フレームワークcakephpを使ったプログラムと
普通にベタ書きでプログラムを書くのと比べて。
0087nobodyさん2007/11/29(木) 18:11:52ID:???
馬鹿すぎてわらた
0088nobodyさん2007/11/29(木) 21:15:28ID:???
さすがにネタでしょう。
0089nobodyさん2007/11/30(金) 18:57:34ID:uOWFJHM3
エラー文忘れましたけど、
fatal で 30秒どうのこうの・・・というエラーが出るんですよ。

更新キーを押してもなかなか表示しなかったり。
キャッシュ使わないときついんですかね。cakephp。

プログラムのみならある程度いけるんですが、画像使うともう厳しいくらい重いですね。

なんか良い方法ないでしょうか。
0090nobodyさん2007/11/30(金) 20:08:26ID:???
共有サーバやめたらいいんじゃないかな
0091nobodyさん2007/11/30(金) 21:45:10ID:uOWFJHM3
>>90

ありがとうございます。

今でました。

Fatal error: Maximum execution time of 30 seconds exceeded in /home/hoge/www/hoge/cake/libs/session.php on line 154

セッション周りがおかしいんですかね〜。
ちなみにcakephp1.1 サクラサーバーのプロっていうレンタルサーバーですね。

レンタルサーバーでも他のプログラムならさくさく動くんですが・・・。
0092nobodyさん2007/11/30(金) 21:53:08ID:???
そのエラーを出せと言われたら、俺は速攻で無限ループを書くだろうな。
0093nobodyさん2007/12/03(月) 19:35:14ID:???
オマイラ一つのMVCセットを書くときにどんな順番や頭のロジックで書いてる?
0094nobodyさん2007/12/04(火) 19:21:59ID:???
複合で
0095nobodyさん2007/12/04(火) 19:35:56ID:5jWwGUYJ
M C V の順番かな。
0096nobodyさん2007/12/04(火) 19:52:21ID:???
頭の中ではVMCの順で考えて、書くのはMCVかな。

話が変わってしまって申し訳ないけど、
1.2のcake/libs/session.phpの470行目
$config = CONFIGS . Configure::read('Session.cookie') . '.php';
ってなってるけど
$config = CONFIGS . Configure::read('Session.save') . '.php';
の間違いじゃね?

1.1だと
$config = CONFIGS . CAKE_SESSION_SAVE . '.php';
ってなってるし。

ticket出したいけど英語ができない・・・orz
0097nobodyさん2007/12/04(火) 20:01:17ID:???
1.2のcake/libs/session.phpの470行目 
$config = CONFIGS . Configure::read('Session.cookie') . '.php'; 
ってなってるけど 
$config = CONFIGS . Configure::read('Session.save') . '.php'; 
の間違いじゃね? 

をそんまま訳せばいいだろw
0098nobodyさん2007/12/04(火) 21:09:42ID:???
機能の豊富さで1.2系つかいはじめたが、もしかしてまだ実用的には早かったかな?
全然話違うけど、フォームの確認画面はググってすぐ見つかる方法くらいしかないんだろうか。そもそもcake使っているものに確認画面が見当たらない
0099nobodyさん2007/12/04(火) 22:56:12ID:???
おい。おまいら。ここクリックしてみろ!
運がよければいいことがあるぜ!
http://localhost/users/deletel/1
0100nobodyさん2007/12/05(水) 01:13:52ID:???
deletelにしてる奴いるのか?
0101nobodyさん2007/12/05(水) 13:38:48ID:???
せめてtinyurlとか使うだろ常考…
心優しい奴だな
0102nobodyさん2007/12/05(水) 15:45:18ID:???
deletelわらた
0103nobodyさん2007/12/05(水) 19:21:03ID:???
いま気づいたw
0104nobodyさん2007/12/06(木) 08:26:19ID:???
なんかログイン画面がでてきたよw
0105nobodyさん2007/12/08(土) 10:30:04ID:???
http://api.cakephp.org/classes.html
IE6で見たらなぜかクラス一覧が表示されないんだが
これって漏れのPCだけ?

IE7とかFirefoxであれば普通に表示されるからそっちで見てるんだけど・・・


セキュリティ設定の問題かなと思って低めにしたけどやっぱ表示されねぇw
なんでや〜〜〜?
0106nobodyさん2007/12/08(土) 11:38:27ID:???
IEイラネって事でしょ
0107nobodyさん2007/12/11(火) 11:02:44ID:???
ttp://www.cakephp.jp/doc/apas12.html
のeditのsaveの引数はなぜ
$this->dataではなく$this->data['Post']なのでしょうか?
0108nobodyさん2007/12/11(火) 12:31:59ID:fmpEROAG
>>107

タイトル:
<?php echo $html->input('Post/title', array('size' => '40'))?>

っていうのは $this->data['Post']['title'] に格納されるから。

ようは $this->data['Post'] ってのは Postモデルのデータってこと。

よくわからなければ まず pr($this->data); をやってみるとセクシーになるよ。
0109nobodyさん2007/12/11(火) 15:27:06ID:???
いや〜ん
0110nobodyさん2007/12/11(火) 15:43:20ID:???
あは〜ん
0111nobodyさん2007/12/11(火) 15:53:50ID:???
あのー
意図的に404エラー出したいときはどうすればいいですか?

AppController内で404エラーページを表示する共通のメソッドがあるんだけど
どうもうまくいかないっす

$this->cakeError('error404', array(array('url' => ???)));

こんな感じかなあという感じなんですけど
???の部分がわからない

$this->cakeError('error404', null);

とかにすると $param['url'] か $param['action'] がないっておこられてしまいます

デフォの404エラーページが表示できればいいんですけど
なんかいい方法ないですかあ?
01121112007/12/11(火) 15:55:13ID:???
あ、ちなみにビューを切り替えるとかいうのはなしでお願いします

HTTPステータスコードが404にならないと思うので…
よい方法があればおたすけください…
01131072007/12/11(火) 15:58:30ID:???
>>107
ありがとうございます。それは理解しているつもりなのですがaddの時は
$this->Post->save($this->data)
でeditの時は
$this->Post->save($this->data['Post'])
なのはどうしてでしょうか?実際$this->Post->save($this->data)でも
更新されるようですし。
0114nobodyさん2007/12/11(火) 17:40:19ID:MudQMHo6
フレームワークでファイルのアップロード処理を書くと、どうも不細工になってしまう。
うまくフレームワークとなじませられないというか・・・。
0115nobodyさん2007/12/11(火) 18:05:21ID:???
>>111
ソース見たらURLは単にメッセージ表示のために使われているだけみたいだから
こんなのでもいいんじゃないの? cake 1.2 pre-betaの場合。

$this->cakeError('error404',array(array('url'=>'アドレスバーに書いてあるURLミロ')));
01161112007/12/11(火) 18:17:07ID:???
>>115

レスありがとうです
やっぱりそんな感じになりますかあ

AppControllerに書く場合、URLは $this->here とかでいいんでしょうか?

なんかしっくりこない気がするんですけど
他にもよい方法ありましたらよろしくおねがいします
0117nobodyさん2007/12/11(火) 19:24:00ID:???
マルチしね
無能
0118nobodyさん2007/12/11(火) 21:21:49ID:???
>>113
書き方の違いでしょ。
この例の場合はどちらでもOKだと思う。
二つ以上のモデルに格納するデータをフォームから送るなら
$this->dataにすべきだね。
01191112007/12/11(火) 22:52:21ID:???
>>117

おれのこと?
マルチなんかしてないけど?

というか他にCakePHPのスレあったっけ?
01201112007/12/12(水) 00:43:10ID:???
フォーラムにも同じような話題でてたんだな
しかし決めつけはひどいな 別人だよ

>>117

おまえが無能だ


んで、フォーラムにでてるように array(array('url' => 〜)) をつかうとうまくいかない場合ある
array(array(action)) つかったほうがいい

しかし、この辺りがCakePHPはなんかいまいちスマートじゃないね
0121nobodyさん2007/12/12(水) 13:47:30ID:fuv5QvzR
モデルのヴァリデートにNgWord判定させるにはどうしたらいいのですか?
cake2日目ではまってまっすん
0122nobodyさん2007/12/13(木) 02:11:34ID:???
正規表現でそのワード弾けばいいんじゃない?
01231212007/12/13(木) 10:54:35ID:???
>>122
レスありがとうございます。

正規表現ではじくのは考えたのですが、NGワードをDBで管理してあとから追加や削除をできるようにしたいのです。
ヴァリデートに関数呼び出しなどを書く方法はあるのでしょうか?

言葉足らずですみませんです。
01241212007/12/14(金) 13:58:00ID:???
自己解決しました

validate() をオバーライドするか、別途関数を呼び出してチェックすればいいみたいです。

save()の第二引数に falseを指定すれば、save時にヴァリデートしなくなるようです。
0125nobodyさん2007/12/14(金) 23:47:10ID:dPU6DaHz
オバーライドwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0126nobodyさん2007/12/15(土) 02:49:30ID:???
一つのテーブルに10個のフィールドがあるとして半分ずつを別の機会にsaveしたい時は後に保存するほうは空の値を許可するにしなきゃいけないんだろうか。すべて必須項目にしたいんだが。
自分でModelに複雑なValidationを実装するのかな
0127nobodyさん2007/12/15(土) 05:19:24ID:Ybu1PDKf
CakeSWXPHPの使い方で良いサイト知らない?

ActionScriptの方の使い方が難しくて、何かわかりやすいサンプルを探してるんだけど。

具体的にはFlexのMXMLとの連携のコードを全て公開してくれてるところ。
0128cWTrQzhwyu2007/12/15(土) 05:32:32ID:???
w8dffW <a href="http://tjfirgbtchzm.com/";>tjfirgbtchzm</a>, [url=http://skatqimodaiu.com/]skatqimodaiu[/url], [link=http://bjtumegdtulp.com/]bjtumegdtulp[/link], http://uteijdlqllxz.com/
0129nobodyさん2007/12/18(火) 02:17:35ID:???
1.2系だとHABTMも標準でsaveできるようになったんな。すごい便利
0130nobodyさん2007/12/18(火) 02:25:56ID:???
>>129

諸刃の剣の悪寒
いじりたいときは返って面倒

まあそのまま使うときはよさそうだね
0131nobodyさん2007/12/18(火) 11:36:32ID:???
モデル書くときって簡単なSQLでもfindとか使わずに
queryでSQL文が見えてた方が開発効率がよくね?
0132nobodyさん2007/12/18(火) 19:39:14ID:???
返ってくるデータが予測つかない人はそうだな
0133nobodyさん2007/12/19(水) 02:24:25ID:???
>>131
俺はすでにそれじゃだめだな。

CakePHPつかう以前からの話だが、
何かのデータを保存・・・時にほかのテーブルにも保存
なんて処理をやりたいことがある。

SQLでいえばトリガーでやるところなのだが、
トリガーはDBMSに依存してしまう。

そういうときにフレームワークで処理を割り込ませられると便利。
CakePHPでいうBehaviorの仕事だ。
0134nobodyさん2007/12/19(水) 02:34:00ID:???
それから、俺は、Behaviorを使うことで
SQL文の拡張のようなことをやっている。

たとえば・・・これは俺が実際に使っている例ではないんだが、
全文検索をするための構文はDBMSによって違う。

しかし、それがなんであれ,
$conditions = array('field' => 'FULLTEXTSEARCH ' . $keyword);
という風にFULLTEXTSEARCH キーワードを条件文に使用できる。

あとはBehaviorのbeforeFindで条件を調べて
DBMSにあわせた適切な構文に置き換えるだけ。
0135nobodyさん2007/12/19(水) 11:09:58ID:???
>>126
saveに渡す配列にフィールドのキーが存在しなければvalidationもされないし
データ更新もされないから気にしないでOK
0136nobodyさん2007/12/19(水) 13:28:34ID:???
Paginationまわりがわかりにくいと思うのは俺だけ? 特に1.2

フレームワークそのままの形だけの使い方をしている分にはいいんだけど
データ取得の命令がfindAllがpaginate関数になったりと、
理由はわからなくは無いんだけど、どうも設計に違和感を感じる。

とりあえず、1.2用のコントローラー以外(たとえばComponent)でも
使えるような汎用的なコードを書いておくよ。といっても怪しいけどな。
変なことをしているかもしれん。まあ俺が見つけた方法ということで。

しかし、コントローラ以外からコントローラのpaginate変数を設定したり
paginate関数を読んだりするのが気持ち悪い。
もっとスマートな方法ないのかな。



※$controllerはどこからか取得

$model_name = 'Post';
loadModel($model_name);
$model = new $model_name;
$conditions = array('id' => '> 3');
$controller->paginate[$model_name] = array(
  'limit'=>2,
  'page'=>1,
  'conditions'=>$conditions);
$data = $controller->paginate($model);

pr($data); //検索情報
pr($controller->params['paging'][$model_name]); //ページ情報
0137nobodyさん2007/12/19(水) 19:37:24ID:nmvrwuDT
recursiveが2以上のアソシエーションを動的に変更する方法がよくわからない。

例えば
blog
ってテーブルがhasManyで
post
ってテーブル持ってて、そのまたさらにhasManyで
comment
ってテーブルを持ってたとする。

普段はそれぞれは一覧で表示したいのでlimitを10くらいに設定してるんだけど、
ブログの一覧からpostとそれに紐付くcommentを全て取得する際に
$this->Blog->findAll();
でコメントだけはlimitを3にしたい。

$this->Post->hasMany['Comment']['limit'] = 3;
$this->Post->bindModel(array('hasMany' => array('Comment' => array('limit' => 3))));
とか試したけど、もう無理。

何か間違ってる?
0138nobodyさん2007/12/20(木) 02:56:46ID:???
出来ないこともないが、
テーブル名を複数形にしない時点で
自分で調べてなさすぎ感が伝わってきて
アドバイスしたい気持ちになれない。
01391/32007/12/20(木) 04:06:27ID:XdoaO407
調べてないつもりではないんだけど、確かに情報を小出しにしてるこちらが悪かった。
ごめんなさい。
誤解を生まないようにもう一度説明すると、
blogs テーブルはBlogモデルの中で
var $hasMany = array('Post' => array('classname' => 'Post', 'limit' => 10));

postsテーブルではPostモデルで
var $hasMany = array('Comment' => array('classname' => 'Comment', 'limit' => 10));

そいで最後に
commentテーブルがCommentモデルでそれぞれ定義されてたとして。


普通はコントローラーで最初に
var $uses = array('Blog', 'Post', 'Comment');
ってやっておいて、
$blogs = $this->Blog->findAll(null,null,null,null,null, $recursive = 2);
でそれぞれ
count($blogs['Posts']);// が10件
count($blogs['Posts']['Comments']);// が10件
入るよね。
01402/32007/12/20(木) 04:06:58ID:XdoaO407
でもblogの一覧から全てのPostとCommentを取り出すのがリs−スが勿体無いときがあったとして、
 1.Postを3件だけ取り出したい
 2.Commentを3件だけ取り出したい
とすれば、

1のPostのほうは
$this->Blog->hasMany['Post']['limit'] = 3;
なり
$this->Blog->bindModel(array('hasMany' => array('Post' => array('limit' => 3))));
なりしてやればあとは
$blogs = $this->Blog->findAll(null,null,null,null,null, $recursive = 2);
で3件だけPostを取り出せるんだけど、

2に関しては
$this->Post->hasMany['Comment']['limit'] = 3;
をやっても
$this->Post->bindModel(array('hasMany' => array('Comment' => array('limit' => 3))));
をやっても、
その後
$blogs = $this->Blog->findAll(null,null,null,null,null, $recursive = 2);
これをすると
count($blogs['Posts']['Comments']);
は10件取り出されてしまうんですよ。
01413/32007/12/20(木) 04:07:32ID:XdoaO407
自分では
$this->Blog->findAll()
でblogsテーブルの直下のhasManyは動的にアソシエーションできるんだけど、
そのさらに下のアソシエーションに関しては動的に変更できなくて悩んでるんだけど、
何か決定的に間違ってる?
普通は出来るもんなんだったら、
別のところで自分が途方も無いケアレスミスを犯しててたまたま出来てないだけだってわかるだけでも
対策考えれるからありがたいんですけど。
0142nobodyさん2007/12/20(木) 04:10:41ID:???
あああ、推敲したはずなのに…。
>>139
> そいで最後に
> commentテーブルがCommentモデルでそれぞれ定義されてたとして。



> そいで最後に
> commentsテーブルがCommentモデルでそれぞれ定義されてたとして。
       ~~

の間違いです。
重ね重ねごめんなさい。
0143nobodyさん2007/12/20(木) 13:00:08ID:rEyzQF0b
$this->Blog->Post->hasMany['Comment']['limit'] = 3;
0144nobodyさん2007/12/22(土) 00:03:39ID:DskgbOKQ
今の最新バージョンいくつ?
ダウソしようと思ったけど、有償なんだな
0145nobodyさん2007/12/22(土) 00:41:39ID:???
>>143
!!!!まさかそんな簡単な解法があったなんて!
ありがとうございます!
本当に俺の単純ポカですね。
0146nobodyさん2007/12/22(土) 11:39:21ID:???
>>144
はい有償ですが何か?
0147nobodyさん2007/12/22(土) 12:56:47ID:???
どうでもいいけど、ドミネーションウェアをフリーウェアだと勘違いしてる人は多そう
0148nobodyさん2007/12/22(土) 13:17:51ID:???
さあ盛り上がって参りました!

dom・i・na・tion
━━ n. 支配; 優勢; (pl.) 主天使.

do・na・tion
━━ n. 寄付; 献血, (臓器などの)提供; 寄贈物; 寄付[義捐(えん)]金; 【コンピュータ】シェアウェアの寄付金[使用料].
0149nobodyさん2007/12/22(土) 16:00:24ID:???
主天使ってなに?
0150nobodyさん2007/12/22(土) 18:20:28ID:???
管理職
0151nobodyさん2007/12/23(日) 03:33:51ID:???
質問です。

共有サーバーにCakePHPを入れたいと思い、アップしてみたのですが、
mod_rewriteの設定で躓いてしまいます。現在の状況は下記のとおりです。

□/
├□cake ←CakePHPのファイルが入っている
│├□app
││├□webroot
│││└□.htaccess ←@
││└□.htaccess ←A
│├□cake
│├□docs
│├□vendors
│└□.htaccess ←B
└□public_html ←ドキュメントルート(変更不可)
  └index.php ←C

@
「RwriteBase /app/webroot」を追加
A
「RwriteBase /app」を追加
B
「RwriteBase /」を追加
C
「include('../cake/index.php');」のみを記述

これで実行すると、mod_rewriteが設定されていないように表示されてしまいます。
しかし、サーバー側では正常にmod_rewriteが機能しています。
どのように修正すれば良いのかご教授願います。
01521512007/12/23(日) 03:40:29ID:nRcoZlZo
IDを出し忘れていました。よろしくお願い致します。
0153nobodyさん2007/12/23(日) 03:44:49ID:w1dc6lHr
RwriteBase /app/webroot → RwriteBase /cake/app/webroot
RwriteBase /app → RwriteBase /cake/app
RwriteBase / → RwriteBase /cake
0154nobodyさん2007/12/23(日) 03:56:58ID:nRcoZlZo
>>153
返答ありがとうございます。
変更し、アップしてみたのですが、うまくいきませんでした。
(変更前と見た目に変化なし)

環境を追記します。
OS…Linux
Apache…1.3.37
PHP…5.2.3
MySQL…5.1.20

引き続きよろしくお願い致します。
0155nobodyさん2007/12/23(日) 07:44:16ID:???
>>151
なんじゃ、それ?

HTTPで公開してるのは、public_html ディレクトリだろ?
まず、そこに、.htaccessがなきゃ話にならんだろ。

さらに、RwriteBaseってのは、クライアント側から見えるURLを書く物で、まるで理解してない。

つか、Apacheのマニュアル読んでるの?
0156nobodyさん2007/12/23(日) 08:29:31ID:nRcoZlZo
>>155
色々な問題をごちゃ混ぜにして考えていたようです。
0から勉強しなおしたいと思います。

public_htmlにapp,cakeフォルダなどをアップし、app/webrootフォルダ内の
.htaccessに>>151のBの内容を追加したところ、
(多分)問題なく動作することを確認しました。

ご迷惑をお掛けし申し訳ありませんでした。
0157nobodyさん2007/12/23(日) 08:41:22ID:???
>>156

おい。

HTTPで公開してるディレクトリに、cakeディレクトリ以下は、"置かない"。安全性が落ちる。
"アップし"なんて書いてるとこ見ると、ローカルに開発用のHTTPサーバも持ってないのか?

それは、共有サーバを使ってる他の人にとって、"迷惑"。
0158nobodyさん2007/12/23(日) 14:49:20ID:???
最近よくも悪くもCakeに初級者が入ってるが基礎をみっちりやってからじゃないと結局フレームワークに使われるぞ
0159nobodyさん2007/12/23(日) 15:49:17ID:???
初心者が、cake使って勉強すれば良いじゃないですか?
0160nobodyさん2007/12/23(日) 16:24:59ID:nRcoZlZo
あああああああああああ
うまくいきました。

/
  /cakephp
    /cake ← cakeフォルダ(appと並んでいたほう)
    /public_html ← appフォルダをリネーム
    /vendors
  /public_html ← ドキュメントルート
    /css,files,img,.htaccessなど、app/webrootディレクトリに入っていたフォルダやファイル一式

上記のように各ファイルを設置し、
ホームディレクトリの.htaccessに「RwriteBase /」を追加し、
同階層のindex.phpのROOT,APP_DIR,CAKE_CORE_INCLUDE_PATHをそれぞれ
「DS.'path to cakephp'.DS.'cakephp'」「'public_html'」「ROOT」にし、解決しました(多分)。

>>157
ローカルでテストしていました。
紛らわしい言い方をして申し訳ありませんでした
0161nobodyさん2007/12/23(日) 16:26:57ID:nRcoZlZo
×ホームディレクトリ
○ドキュメントルート
0162nobodyさん2007/12/23(日) 18:29:45ID:???
ここまでRwriteBaseだらけだがRewriteBaseじゃないのか
しかも成功したのか
俺が間違ってるのか
0163nobodyさん2007/12/23(日) 18:32:41ID:nRcoZlZo
>>162
すいません、Rewriteでした。
最初の文章をコピペしてたのでずっとRwriteと書いていました・・
0164nobodyさん2007/12/23(日) 18:51:21ID:???
あ、いや、いいんだw
狐につつまれて(←何故か誤用)ただけだから
0165nobodyさん2007/12/23(日) 19:41:40ID:???
狐につねられた?
0166nobodyさん2007/12/23(日) 21:14:17ID:???
まあ、似たようなもん
0167nobodyさん2007/12/24(月) 01:16:59ID:???
>>159
初心者が勉強するには挙動や仕組みが複雑すぎるし、
勉強すべきウェブアプリの流れが自分で組めない。(組まなくて良い)
0168nobodyさん2007/12/25(火) 04:06:06ID:???
なんか楽しようとして使ってるのにCakeの融通聞かないとこをカバーするコード考えたりしてると余計時間かかってる気がする。
0169nobodyさん2007/12/25(火) 10:50:49ID:dm3PQI94
>>168
わかる。でも、書いたあとのコードがわかりやすい。

フレームワークを使う前のコードなんて自分で書いたコードなのにゾっとする。
読めたもんじゃない。。。
0170nobodyさん2007/12/25(火) 22:35:34ID:???
型にはまっているから迷わなくていいのが楽なのかも
位置から作るといちいち迷ってそれが占める時間が結構ある希ガス
0171nobodyさん2007/12/26(水) 10:31:28ID:???
アホな質問なんですけど、

通常、
AページでAテーブルの内容を表示(Aコントローラー+Aモデル)
BページでBテーブルの内容を表示(Bコントローラー+Bモデル)
というような感じで作ると思うんだけど、

CページでAテーブル+Bテーブルの要約内容を表示したい場合は、どうすれば?
Cコントローラーで、AモデルBモデルを使うというような考え方でいいのかな。

質問の意味が通じなそうスンマセン(´・ω・`)
サイトのトップページで、多テーブルの情報を表示させたいというような場合の話です。
0172nobodyさん2007/12/26(水) 11:24:07ID:???
Cコントローラの$usesに使いたいモデルの配列を定義汁
var $uses => array('Amodel', 'Bmodel');
01731712007/12/26(水) 11:40:51ID:???
>>172
すごいありがとう。ほんととっかかりがわからなくて。感謝!やってみます。
勉強会行きたかったな〜。
0174nobodyさん2007/12/26(水) 12:26:56ID:???
ちょっと検索すれば出て来ることだよ・・
0175nobodyさん2007/12/28(金) 00:04:04ID:???
しかとだてめーわ 重荷を負って一生かけて学びやがれ!
0176nobodyさん2007/12/28(金) 01:37:12ID:???
しかと引き受けた
0177nobodyさん2007/12/28(金) 02:04:26ID:???
この流れの意味が分からないw
0178nobodyさん2007/12/28(金) 09:49:34ID:???
このスレの流れに意味なんて必要ない!
0179nobodyさん2007/12/28(金) 09:55:56ID:???
なかよくやろうよ。
0180nobodyさん2007/12/29(土) 15:34:55ID:???
学園なかよし計画
0181nobodyさん2007/12/29(土) 15:45:50ID:???
家族計画
0182nobodyさん2008/01/01(火) 02:04:43ID:???
先週ぐらいからCakeを使い始めてみた。
いったんわかってくるとサクサク作っていけるのが嬉しいね。

ただ、マニュアルは機能を網羅してるわけじゃないんだな。
マニュアルに載っていることが全て、だと思って進めてくと意外としょうもない所でつまずいたりしちゃうね。
まあこれはCakeに限った話じゃないけど。
0183nobodyさん2008/01/03(木) 22:38:40ID:???
>>182
年明け早々に書く事か?w
いや、むしろ好意的な意味で。熱心だな。w
0184nobodyさん2008/01/04(金) 01:10:03ID:???
Cakeはベーカリーとかソースコードとか覗くと楽しい。
マニュアルだけだと(特に1.1系)他のフレームワークに見劣りする。
1.2系はちょっと自分用に改造するとすごい使いやすい。
0185nobodyさん2008/01/04(金) 13:24:08ID:???
なんで改造しちゃうの。
0186nobodyさん2008/01/04(金) 14:28:39ID:???
確かに。何の為にオープンソースのフレームワーク使ってるんだか分からないw
0187nobodyさん2008/01/04(金) 14:59:45ID:???
オープンソースだから改造できるんじゃんw
0188nobodyさん2008/01/04(金) 21:12:38ID:yI22KOOz
pre_betaからbataで変わって気づいたこと(てか、直したとこ)

・admin routesのとき、paginatorの飛び先がおかしいのがなおった
・posts/index/foo:bar が $this->params['pass'] でなくて $this->params['named'] に入る
・posts/view/20 は $this->params['pass'] に入る
・loadModel, loadComponent は非推奨 App:import('Model', 'name') にしろといってくる。
・generateList() も find('list', array()) にしろといってくる。
・webservice 使用時 $this->layoutPath をわざわざ指定しないといけなくなった。
・何気にapp_controller.php, app_model.php の場所がかわってる(そのままでも動くが、気持ち悪いので変えた)

いまんとこ、こんな感じでした。
0189nobodyさん2008/01/05(土) 10:59:20ID:???
情報乙。
bakeで生成されるコードも伴って変更されてるといいな
0190nobodyさん2008/01/05(土) 15:28:31ID:???
>>188
>・何気にapp_controller.php, app_model.php の場所がかわってる(そのままでも動くが、気持ち悪いので変えた)

* Create the same file in app/app_controller.php
* Create the same file in app/app_model.php

って書いてあるからpre-betaと変わっていないと思うんだけど。
0191nobodyさん2008/01/05(土) 17:30:26ID:???
betaでバリデーションの挙動が変わったのか、自作関数でバリデーションする場合
チェックされる(ポストされた)データが配列でわたるようになってる。
使いにくくなった。なんでだ?
0192nobodyさん2008/01/05(土) 18:40:44ID:???
MySQL4.0.25 cake1.2beta に乗り換えたら
$this->Post->del($id);
で、SQLエラーでちまったよ。
エリアスがユニークじゃない!とかいわれたよ・・・
どうしたもんかね?
0193nobodyさん2008/01/07(月) 15:01:55ID:???
じゃあ、俺も。betaで変わったとこ。

モデルの _tableInfo変数 が _scema変数 に変わった
_scemaの構造も_tableInfoとちょっと違う


まあ、この変数は積極的に使うものじゃないけどね。
0194nobodyさん2008/01/08(火) 12:06:39ID:???
cakeって、model名 = コントローラー名 = テーブル名
ってなっているけれど

コントローラー名がテーブル名だと、アクセスするときに変じゃない?

普通画面名とか、機能名とかつけるものだと思っていたんだけれど、
どうなんでしょう

bakeでviewを作成するときに、選択可能なリストにModelがでてくるけれど、
コントローラーだしてほしい

そういうものなのかなぁ
0195nobodyさん2008/01/08(火) 15:41:16ID:???
>>194
別に他の名前も付けられるんだからいいじゃん。
特にコントローラー名なんて変え放題じゃない?
0196nobodyさん2008/01/08(火) 16:24:57ID:???
bakeが、コマンドラインから叩くのめんどくさいし、環境を選ぶ。
規約に従ったphpファイルを作ってアップロード、実行するとbakeされるように出来ないのかな。
0197nobodyさん2008/01/09(水) 17:55:03ID:???
>>195
え、url上の名前って簡単に変えられるの?
モデルの
var $name = 'Post';
ってところの名前変えれば出来るって事?
0198nobodyさん2008/01/09(水) 18:08:04ID:???
>>197
それはむしろモデルに対するテーブル名じゃまいか?
urlウンヌンは、好きな名前でアクション作れば良いかと。
0199nobodyさん2008/01/09(水) 18:57:52ID:???
コントローラとモデルの紐付けは実はあんまり強くないよ。
コントローラで$usesを定義してやれば好きなモデルをいくつでも使うことができるから
極端な話、$usesさえあればコントローラの名前は任意で大丈夫。
つーか、コントローラ名=URL上の表記だから、コントローラ名は
アクセス側から分かりやすい名前にする方が重要だと思う。
正規化でテーブルが沢山増えた場合はなおさら。

で、$usesを定義しないとコントローラ名を単数形にしたモデルを自動で使う。
その時、PHP4はクラス名からモデル名を引っ張ってこれないから$nameを見てモデル名を決める。
$nameはその時に使う。逆に言うとPHP5以降は$nameは不要。

…だったと思うけど、情報古いかもしんないから注意してね。
0200nobodyさん2008/01/09(水) 23:29:04ID:???
1.2betaになって、もしかして$form->inputで出力されるタグがフィールドの種類に応じて変わらなくなったのか?
前は、date型のフィールドなら日付選択のセレクトタグが出たんだが。
0201nobodyさん2008/01/10(木) 21:31:14ID:???
俺、最近$usesすらも使わないで、
モデル使いたい場所で、

App::Import('Model', $model_name); //pre-betaではloadModel
$model = new $model_name();
$model->findAll();

とかやってるw
やばいかなぁ。
0202nobodyさん2008/01/11(金) 00:37:03ID:edIhawVf
>>201

ちょいやばですね
0203nobodyさん2008/01/11(金) 11:30:25ID:???
>>202
どういうふうにやばい?
0204nobodyさん2008/01/11(金) 20:24:44ID:???
フレームワークせっかく使ってるのに規約にそってないから、複数で開発したら異端児
0205nobodyさん2008/01/12(土) 01:07:43ID:???
でもさ。コントローラではusesでいいかもしれないが、
コントローラ以外で、モデルを使う方法他に何がある?
0206nobodyさん2008/01/12(土) 07:06:39ID:???
逆にどういう状況でコントローラ以外でモデルを使うんだ モデル内で別のモデルを使うとか?
0207nobodyさん2008/01/12(土) 09:24:00ID:???
一つのモデルに保存したら、SQLのトリガーのように別のモデルに保存することもありますし、
それをBehaviorにしてBehaviorで使うこともありますし、
テーブルに保存されたデータをもとに値を返すComponentも考えられますし、
コントローラ以外のどこででも、モデルを使うことって考えられますよ。
0208nobodyさん2008/01/12(土) 21:32:01ID:4ugQnDqA
それでしたら、 MVC が成り立たなくなるのでは?
少なくとも

「早く開発できる」

も大切ですけど、

「規約に沿った開発」

を心がけた方が最終的には良いかと思いますが、いかがでしょうか。
0209nobodyさん2008/01/13(日) 00:11:18ID:???
>>208
この程度でMVCが成り立たなくなるわけが無い。

規約を守ることが目的になっていませんか?

0210nobodyさん2008/01/13(日) 01:41:55ID:???
規約守った方がいいにきまってる。
こういうやつとは仕事したくないな。
汚いソースを読まされそうだ。
0211nobodyさん2008/01/13(日) 10:00:42ID:???
パフォーマンス的にはどうなんだろう?
1つのアクションでしか使わないモデルを、
コントローラ全体から呼び出すのはどうなのかな?

あまり、変わらなければ、規約に沿ったほうがいいね。
0212nobodyさん2008/01/13(日) 14:32:44ID:???
>>207のような状況は普通にある

さすがにテンプレートやヘルパーでモデル呼び出しはしないけど
ヘルパーのようにモデル同士が連携したくなる場合なんてざら。
開発規則で決めればコンポーネントからモデル呼び出しも十分
視野に入るだろ。

そもそもコントローラの責任範囲はあまりに広すぎる。
save()時に関連キーの値を意識しなきゃいけないとかアホだろ
モデルに任せとけよそんなもん。
0213nobodyさん2008/01/13(日) 19:43:12ID:???
> さすがにテンプレートやヘルパーでモデル呼び出しはしないけど

本当にそう?

たとえば、xoopsなんかにある、”ブロック”

メインのページの左右に表示され、ページの中のコンテンツとは
直接関係無いような情報(もちろんデータはデータベースにある)を
表示するとき、それをどのように作る?
0214nobodyさん2008/01/13(日) 19:47:23ID:???
CakePHPにはお世話になっているから
悪いことは言いたくないが、一つだけ言わせてくれ。

function foo($v1=null, $v2=null, $v3=null) {
 if($v1がなんたらだったら) {
  $v1 = $v2;
  $v2 = $v3;
 }
}

こういうコードはやめてくれ。引数とコードがわけがわからなくなる。
02152122008/01/13(日) 19:55:54ID:???
>>213
requestAction
0216nobodyさん2008/01/13(日) 20:39:16ID:???
規約に沿わずパフォーマンス云々を求めるならフレームワークなんか使うなよ
0217nobodyさん2008/01/13(日) 21:12:12ID:???
CakePHPでトランザクションの使い方を教えてください。
0218nobodyさん2008/01/13(日) 21:52:00ID:???
クエリ実行前に必要な処理をすれば大丈夫です。
Cakeだからといって特別なことはございません。
0219nobodyさん2008/01/13(日) 22:26:54ID:???
意味がわかりません。
トランザクションに関してはデータベースごとに構文が違うわけで、
データベースの違いを吸収するCakePHPには
当然トランザクションの機能があってしかるべきでは?
02202122008/01/14(月) 03:54:21ID:???
cakeには確か標準で付いてなかったと思う。んだからbehaviorつかえ
http://bakery.cakephp.org/articles/view/transaction-behavior
0221nobodyさん2008/01/14(月) 03:54:41ID:???
やべ 名前そのままじゃん
0222nobodyさん2008/01/14(月) 04:48:55ID:???
>>220
1.2でついたんじゃなったですか?
その使い方はどうするのでしょうか?
0223nobodyさん2008/01/14(月) 11:48:41ID:???
decorate,Masterbakeって1.2だとだめなの?
しょぼーん
0224nobodyさん2008/01/14(月) 13:10:50ID:???
なんの機能が足りないの?
1.2はbakeでそこそこいけるぞ
0225nobodyさん2008/01/14(月) 14:59:49ID:p06mFmgf
>>222
cake1.2用って書いてあってサンプルコードまで載ってるのに、これ以上どうしろと。
0226nobodyさん2008/01/14(月) 22:01:03ID:qwz7LRgA
DB をポスグレにしても後悔しませんか?
0227nobodyさん2008/01/15(火) 02:37:42ID:???
他のデータベースより好きならお好きに
0228nobodyさん2008/01/15(火) 11:58:53ID:???
xoopsとかwordpress等CMSのインストーラみたいに、ブラウザから設定するとbakeしてくれるようになってると激しく便利なんだけどなー。

こういうの誰か作って配布してたりする?
0229nobodyさん2008/01/15(火) 18:18:48ID:???
便利か?
0230nobodyさん2008/01/15(火) 21:44:26ID:???
linuxやWebアプリ作成などになれてない利用者目線だね、開発者じゃなく
0231nobodyさん2008/01/15(火) 21:49:55ID:???
いや、bakeはそれがたとえブラウザから実行できたとしても、
利用者レベルじゃ使用できんだろ。
コードはいた後、コードいじらないと使い物にならないんだから。
0232nobodyさん2008/01/16(水) 00:10:13ID:???
いや利用できないとか言い出したら、bake自体がいらんかと。

例えば、「モデルが無いですよ」とかエラーを吐いてくれるとこで、作るべきファイル名やコードをブラウザが表示してくれてるけど、それを手動で作る代わりに「(デフォのでいいから)作成」ってボタンがあったら嬉しいじゃない?
0233nobodyさん2008/01/16(水) 00:42:46ID:???
ずいぶん初心者が増えてきたね>Cake
0234nobodyさん2008/01/16(水) 00:46:04ID:???
そもそも楽するための物だから良いかと。
0235nobodyさん2008/01/16(水) 03:05:48ID:???
初心者が安易にフレームワークに頼るのは危ういと思われるよ。
0236nobodyさん2008/01/16(水) 08:37:03ID:???
初心者が読みにくくて危険なコードを大量生産しないために生まれたんだろ?
0237nobodyさん2008/01/16(水) 08:57:12ID:???
どこまで面倒見てくれるか、手間を減らしてくれるか、の要求レベルは人によって違う。なら大は小を兼ねるかと。bake自体、なんか面倒だからと、使いたくない人は使わず、手動でセコセコ作ってる。違う解決法があるなら使いたいが。


まあそれによってフレームワーク自体が肥大するのは困るけど、これはそこまでたいした話じゃない。
0238nobodyさん2008/01/16(水) 11:01:01ID:???
>>232
自分で作れw

エラーメッセージのビューをちょっと置き換えるだけで作れるだろ?
0239nobodyさん2008/01/16(水) 11:33:15ID:???
うん。まあ置き換えただけじゃダメだけどね。
0240nobodyさん2008/01/16(水) 11:49:22ID:???
俺俺関数をグローバルに書きたい時の作法って決まってる?
app/config/bootstrap.php に今はベターっと書いてるんだけど
これだとアプリごとに書く必要があって かといってcake/bootstrap.phpに書いちゃうと
バージョン上げる時に忘れて上書きしちゃいそう
0241nobodyさん2008/01/16(水) 11:52:39ID:???
>>240
コンポーネントじゃなくて?
0242nobodyさん2008/01/16(水) 12:14:38ID:???
app_controllerでいいんじゃね?
コンポーネントはいちいち利用宣言するのがめんどくさくて
ほとんどapp_controllerに書いちゃってるけど、まずいかな?
0243nobodyさん2008/01/16(水) 14:48:27ID:???
オレオレ関数ファイルをvendorsにつくって
bootstrap.php で読み込ませてる
0244nobodyさん2008/01/16(水) 15:53:09ID:???
コントローラとかでしか使わないようなのは、AppControllerだけど、
汎用的な関数は、app/config/bootstrap.php に書いてる。
app以下にあるし、空ファイルだし、そのために作られたファイルだろ?って思ってる。

汎用的なクラスは、vendersにおいて使ってるけど。
0245nobodyさん2008/01/16(水) 15:56:29ID:???
通常コントローラはAppControllerを継承するけど、
間にもう一層入れたい場合どうやる?

Controller

AppController

MyController

FooController

このとき、

class FooController extends MyController

ってすると、MyControllerがいませんっていわれちゃう。
0246nobodyさん2008/01/16(水) 21:13:11ID:???
>>245
MyController は app_controller.php に書いてる。
0247nobodyさん2008/01/17(木) 10:34:58ID:???
コントローラでもビューでもそれ以外でも使うクラスは
何で作る?コンポーネント?

このクラス、モデルデータを必要とするんだよね。
何で作ればいいんだろう?
0248nobodyさん2008/01/17(木) 11:22:09ID:???
>>241-244
vendors/oreore.inc.php に書いて
app/config/bootstrap.php から vendor('oreore.inc');
で読み込むことにしますた さんくす
0249nobodyさん2008/01/17(木) 11:54:11ID:???
質問です。

app/config/core.php
define('DEBUG', 2);

この状態で、特定のページだけデバッグ情報を出さないようにって出来ないものかな?

1)XMLを出力するプログラム
2)それを受け取って処理するプログラム

1の方はもう出来上がってて、デバッグが出力されると構文が崩れて困る。
かといって、define('DEBUG',0);にすると、2の方の開発が困る。XMLは動的なものを使いたい。

0250nobodyさん2008/01/17(木) 13:27:06ID:???
>>245
App::import('Contoller', 'MyController'); //昔はloadController
class FooController extends MyController

ってすればいいんじゃないの?
0251nobodyさん2008/01/17(木) 16:34:27ID:2woYNb+h
>>249

ヒント、
function beforeRender()
{
if ($this->layout=='ajax') Configure::write('debug', 0);
}

これでわかったら、スーパーひとしくんプレゼント!
02522492008/01/17(木) 18:41:28ID:???
>>251
うへー、感動シマスタ
ありがとう!
0253nobodyさん2008/01/17(木) 18:42:25ID:???
>>247
詳しく聞いて無いから間違いかもしれないけど、
たぶんそれは設計ミス。
モデルとコントローラーとビューは疎結合にあるべき。

答えとしてはコンポーネントにモデルインスタンスを渡せば良いと思う。
ビューの部分のロジックは、ヘルパーに委譲。

本当にどうしてもどこでも使いたいなら、bootstrapに書くか、vendorで外部ライブラリとして読み込ませる。
0254nobodyさん2008/01/18(金) 11:33:07ID:???
>>253
単純にiniファイル的な役割をさせたいだけなんだけど・・・
0255nobodyさん2008/01/18(金) 13:06:23ID:???
ビューでformやhtmlのヘルパー使ってるとなんかどこもかしこも
DBのテーブル名やカラム名で溢れてくるんだけど何か間違ってる?
JAVAもRORも途中でめげたんで他との比較は出来ないけどMVCってこういうもんなん
0256nobodyさん2008/01/18(金) 13:10:12ID:???
MVC(改)でやれば
0257nobodyさん2008/01/18(金) 13:15:52ID:???
>>255
たとえば?
0258nobodyさん2008/01/18(金) 16:28:03ID:???
1.2で増えたものかどうかは知らないけど、
調べるついでにマイナーだと思われるものを書いていくよ。
ざっくり調べただけだから間違いがあるだろうが許せ。
というか、誰か補足してくよw

・Configure::store('AAA', 'a', array('data'=>'123'));で値保存。
 /app/temp/cache/persistent/a.php ができる。
 Configure::load('a'); でa.phpファイル読み込み
 pr(Configure::read('AAA')); で保存した値表示。
・flay ・・・Text-to-HTML Textile見たいな物?
 wiki文法みたいに簡易な文法で書いたらHTMLに変換してくれる?
・MagicDb ・・・ 拡張子に頼らないファイル解析?
 MagicFileResourceを継承したクラスを作ることで対応フォーマットが増やせそうだが、
 初期で対応しているフォーマットはなし?http://www.magicdb.orgは関係ありか?
・MediaView ・・・ なんか拡張子に対応したMIMEタイプリストがあるが?
 header("HTTP/1.1 206 Partial Content");とかあるし、ファイルダウンロードさせたいときに使う?
・String ・・・ えー? UTF8対応? 今度からこれ使えと?
・ThemeView ・・・ CSS切り替えみたいなもんか?
・XML ・・・ XMLあつかえるのね。
・Debugger ・・・ デバッガ。便利だよ。デバッガ。
・Socketと名のつくもの ・・・ まあソケットをそのまま触れるのでしょう?
・Controller::isAuthorized() ・・・ 認証系で使うべきものなんだろう。
・I18n L10n ・・・まああれだ。俺みたいに日本専用でビューに直接日本語書いている奴には不要ってこった。
・FormHelper::secure トークンだしてくれる
・PagesController 次に進む なんてページを作るのにいいんだろうなとは思う。名前からして。
・Model::deconstruct ・・・ フォームのフィールド、日付を年ドロップダウン、月ドロップダウン、日ドロップダウン、に
 分かれて入力されているのをひとつにしてくれるっぽい。
・TreeBehavior ・・・ テーブルをツリー構造として見れる? moveupとかmovedownとか
・TextHelper・・・autoLinkってのがある。リンクっぽいテキストをリンクにしてくれる。
 TextHelper::toList ・・・ 日本人には不要w
・ClassRegistry ・・・ ようはオブジェクトがどこからでも見れる? グローバル変数的なので使い方に注意。
0259nobodyさん2008/01/18(金) 16:30:18ID:???
FormHelperって$form->input('field_name')ってするだけで
フィールドの型に応じたフォームが自動で出てくるけど、
これって、ヘルパーがモデルを見てるってことだよね?

それって設計的にありなん?
0260nobodyさん2008/01/18(金) 17:24:57ID:???
この便利関数きっとどこかにあるんだろうなってapiのそれっぽいの見ていって
結局無かった(しかもおそらく見つけられなかっただけでどっかにある)時の徒労感ってなかなかいいよね
英語弱いからなあ
0261nobodyさん2008/01/18(金) 17:27:59ID:???
なかなかいいのかよw

リファレンス本欲しいな。
0262nobodyさん2008/01/18(金) 19:38:04ID:/74lUS2r
INSERT ... ON DUPLICATE KEY UPDATEしたいんですが、
どういう風にやるのがスマートでしょうか?
0263nobodyさん2008/01/18(金) 20:11:24ID:???
あああなるほどbakeでビューに出てきて文字列素通しにしてる__ってのはなんだろうと思ったら
多言語対応のあれなのかようやくわかったありがとう
0264nobodyさん2008/01/18(金) 21:09:17ID:???
今日つかい始めたのだけど、標準でO/Rマッパー無いのこれって?
0265nobodyさん2008/01/18(金) 21:10:28ID:???
普通についてるだろ。
どこみてんだ。
0266nobodyさん2008/01/18(金) 21:40:04ID:???
>>264
レス先走りすぎだ。

1.INSERT ... ON DUPLICATE KEY UPDATEしたいんですが、

2.直接SQL文発行しる!

3.標準でO/Rマッパー無いの?

煽るのならこの順番だろうがw 2番を飛ばすな
0267nobodyさん2008/01/18(金) 21:43:48ID:???
>>259
前どっかで同じことをいってたやつがいたな。
CakePHPか忘れたけど。
設計とか詳しくないからただの一つの意見だけど、
便利だからまぁいいんじゃないかなと思う。
疎結合っていう観点からはよろしくないのかもね。
Railsも同じ機能ついてたきがす
02682622008/01/18(金) 22:44:42ID:???
やっぱexecuteで発行するしかないんでしょうか。。
0269nobodyさん2008/01/19(土) 09:25:13ID:???
Cakeを「ケイク」と読んでるのは俺だけ・・・だよな・・・?
「ケーキPHP」より「ケイクPHP」のほうが言いやすい
0270nobodyさん2008/01/19(土) 10:53:43ID:???
英語の発音は、むしろ警句だろ?
0271nobodyさん2008/01/19(土) 11:44:58ID:???
おれもケイクって呼んでる
0272nobodyさん2008/01/19(土) 11:57:21ID:???
Helperに対して、コントローラから情報をわたすことって出来んの?
それともこれってなんか変な設計?
0273nobodyさん2008/01/19(土) 12:10:58ID:???
ビューにViewクラスを継承した独自のTestViewクラスを使用したい場合。

ファイル名:/app/views/test.php
<?php
class TestView extends View {
}
?>

あとは、コントローラで
var $view = 'Test';
と書く。


これって、公式な仕様だっけ?
0274nobodyさん2008/01/19(土) 15:04:12ID:???
ヘルパーでモデルのデータを参照したいときはどうすればいいわけ?

requestActionでURL形式でコントローラを呼び出して
コントローラ経由でモデルにアクセスしてデータ参照?
どう考えてもパフォーマンス悪すぎるだろ?

ヘルパーにコントローラからモデルデータを直接与える方法がないから
一旦コントローラからビューにモデルの値をsetして、
ビューがヘルパーの関数を呼び出すたびに引数にデータをセットするのか?

何でこんなに結合度が高いんだ?
0275nobodyさん2008/01/19(土) 16:45:02ID:???
>>274
ヘルパーごときがモデル様のデータを直接欲しいとか100年早いぜ。
欲しいならコントローラさんに話を通して、コントローラさんに必要な分を最初っから揃えてもらいな。
ってコンポーネントさんが言ってた。
0276nobodyさん2008/01/19(土) 17:32:36ID:???
<?php echo $html->input('Post/title', array('size' => '40'))?>

とか、

<?php foreach ($posts as $post): ?>
<tr>
<td><?php echo $post['Post']['id']; ?></td>
<td>
<?php echo $html->link($post['Post']['title'], "/posts/view/".$post['Post']['id']); ?>
</td>
<td><?php echo $post['Post']['created']; ?></td>
</tr>
<?php endforeach; ?>

とか、テーブル名(モデル名)が必ず付いて回るとか、ありえないんだけど
こういうものなの?

inputタグだとソース上から見えちゃうしーー
0277nobodyさん2008/01/19(土) 17:37:03ID:by/o8aKs
今だにcakeなんてやってるやついるんだな
日本人ならonigiriだと思うんだが
0278nobodyさん2008/01/19(土) 18:27:05ID:???
>>277
http://thumb.uploda.org/file/uporg1209264.jpg
0279nobodyさん2008/01/20(日) 00:56:33ID:???
>>275
> ヘルパーごときがモデル様のデータを直接欲しいとか100年早いぜ。
> 欲しいならコントローラさんに話を通して、コントローラさんに必要な分を最初っから揃えてもらいな。

それが簡単にはいかないんだよ。

ヘルパーがどのタイミングで作られるか知ってる?
コントローラのrenderの中でビューのrenderに処理がわたり
ビューがヘルパーを作っている。
つまりコントローラが動いているときは、ヘルパーはまだ生まれてないんだよ。

そしてヘルパーにはコントローラを知る方法が無い。
0280nobodyさん2008/01/20(日) 03:36:20ID:???
$this(ヘルパー)->view->controller->モデル
0281nobodyさん2008/01/20(日) 07:04:04ID:???
っていうかrequestActionってそんなに重いの?
ソースとかある?
0282nobodyさん2008/01/20(日) 16:34:25ID:???
1.2のバリデーションすげえええってワクテカしながら書き始めたはいいけど
配列まみれで思った以上に見づらい書きづらいなこれ
テキストエディタでちまちま書いてるからarrayのどっかおかしくてもパッと見わかんないし
0283nobodyさん2008/01/20(日) 18:12:40ID:???
>>281
そりゃ呼出しごとに、関数呼び出しの前に、
URL文字列から関数判断して、
コントローラを初期化して使えるようにしてから
読んでいるんだから遅いでしょ。
0284nobodyさん2008/01/21(月) 01:59:47ID:???
>>283
それは分かるけど、それって設計を変えるほどボトルネックになる事なの?
0285nobodyさん2008/01/21(月) 02:34:59ID:???
なる。
0286nobodyさん2008/01/21(月) 08:20:37ID:T79KO08k
requestActionについてのまとめ(英語だけど)
http://groups.google.com/group/cake-php/msg/39c1ed08657b19c1
何かヒントあるかも。
0287nobodyさん2008/01/21(月) 17:56:41ID:64B8kuvt
>>284

requestAction を 同じページで6箇所使ったら使い物にならないくらい重くなったよ。
できるだけ、使わないほうがいい。

それで僕は、設計を書き直しました。
0288nobodyさん2008/01/21(月) 18:30:58ID:???
もう少し具体的な例で説明しようかな?

Cake1.2にはConfigureというクラスがある。
これはいろんな場所(コントローラだったりビューだったり)で、
設定を読み書きできるクラス。読み書き先はファイルだ。

これの保存先をデータベースにして、普通のテーブルと同じように
設定できるようにする。そのとき、データベースを使ったConfigureを
どのように作るべきか?

普通に考えてConfigureの中身を変えるだけになるだろう。
つまり、Configureはグローバルに参照できObjectを継承しただけのクラス。
ゆえに、Configure内部で、App::import('Model', 'Configure');を
使って、内部でモデルのインスタンスを生成するしかない。

コンポーネントやヘルパーにしたり、
コントローラでモデルを渡したりと言ったことはしない。
クラスが直接モデルを扱う。

きっとこれが正しい設計だと思うが、反論はあるかな?
0289nobodyさん2008/01/21(月) 23:15:46ID:???
>>285-288
なるほど凄くよく分かった。
おまえら優しいな、thx
0290nobodyさん2008/01/22(火) 04:15:11ID:???
結局コントローラかビューかヘルパーの少なくとも一つはカオスになるのが確定なんだよな
そのへん全部ヘルパーに押し込むのが理想だけどめんどい
02912882008/01/22(火) 18:12:32ID:???
反論無いのかよw

こういうときは普通こうするだろ!って煽りまってたのに!

結局データベースを参照する設定クラスのようなものは
フレームワーク的なやり方ってないのね。

App::importで直接モデルを操作するしかないのか。

あとログもテーブルに格納するようにしようかなとか
思っているんだが、なんかこれも同じ道をたどりそうだ。
0292nobodyさん2008/01/22(火) 20:04:09ID:???
>>291
いや、だってrequestActionの重さ聞いただけだしなぁ
ちなみにどんな反論が想定内だったの?
0293nobodyさん2008/01/22(火) 20:51:13ID:???
>>291

聞く場所が2chだからな
メーリングリストで聞かんのかい?
0294nobodyさん2008/01/22(火) 21:16:39ID:???
トランザクションって掛けたいところで
Model->transactional = true;
にしてコミットしたいところで
Model->transactional = false;
にすればいいの?そんな簡単にはいかないか
0295nobodyさん2008/01/22(火) 21:29:30ID:???
トランザクションというのは、
一つ、または複数のモデルへの複数の操作を
一つにするものなのだから、
モデルにtransactionalなんてのが
あるのはおかしいと思いませんか?
0296nobodyさん2008/01/23(水) 02:25:43ID:???
全然おかしくない。
0297nobodyさん2008/01/23(水) 12:24:04ID:???
へぇ。おかしくないんだw

じゃあ、商品の在庫が入った商品データモデルと
注文されたときに作られる注文データモデル。

注文データを作って在庫を減らすという処理を一つのトランザクション
にするとして、いったい誰がどのモデルをコミットするんだい?

そして、そのモデルがコミットするべきだという理由は?
0298nobodyさん2008/01/23(水) 14:04:39ID:???
だからコントローラにtransactionalがあるんだろ
0299nobodyさん2008/01/23(水) 15:17:23ID:???
> だからコントローラにtransactionalがあるんだろ

無いよ?
0300nobodyさん2008/01/23(水) 15:55:49ID:???
無いなら
association使えって事だろう
0301nobodyさん2008/01/23(水) 16:07:07ID:z/2JwMmb
php暦 3年。mysql暦 2年。
はずかしながら comit とか考えたことないな。

データばぐらなくない?テキストファイル、CSVデータなら書き込んだりするとバグるときあるんで
ファイルロックはするけど。
0302nobodyさん2008/01/23(水) 16:18:03ID:???
3年やっててトランザクション意識した事ないとか恥を知れカス
0303nobodyさん2008/01/23(水) 16:18:45ID:???
2年やってトランザクションが何か知らない俺のほうがマシ
0304nobodyさん2008/01/23(水) 17:37:07ID:???
>>301
仕組みを理解してないと思われ。
データの整合性の問題。
0305nobodyさん2008/01/23(水) 19:01:29ID:???
そういうときのためのビヘイビアなんじゃねーの

使ったこと無いの勧めて悪いけど これでも使ってみれば
Transaction behavior | The Bakery, Everything CakePHP : Articles
http://bakery.cakephp.org/articles/view/transaction-behavior
0306nobodyさん2008/01/25(金) 20:52:16ID:???
ちょっと慣れて来るとviewやhelper書いてる時間の割合が相対的に増してくる
この作業がはてしなくつまらん…
0307nobodyさん2008/01/26(土) 01:02:57ID:???
1.2betaになってから、変数を宣言していないエラーの場合
極端に表示に時間がかかるようになってない?

俺が何か悪い事しているのかなぁ?
ちょっとコアいじってるし。
0308nobodyさん2008/01/26(土) 11:36:05ID:???
ワンタイムチケットとかないですか?
0309nobodyさん2008/01/26(土) 20:23:58ID:???
みんなAuthComponent使ってる?
1.2で標準搭載されたわりには(日本語)情報が少ないような気がするんだけど…

"1.2のAuthComponent" フォーラム - CakePHP Users in Japan
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=706&forum=14&post_id=1780
0310nobodyさん2008/01/26(土) 21:15:38ID:???
認証系、俺は結局自作してしまったな。
なんでだろ?特に使わない理由があったわけじゃないんだが、
認証=顧客管理機能の一部として、顧客管理機能を作っていたら
結果的に組み込んでしまったって感じ。

突き詰めると、データベースにあるキーにマッチするかどうかの判定だけだしね。
会員の登録、退会、パスワード再発行などの機能にくらべればたいした事じゃないし。
0311nobodyさん2008/01/26(土) 21:24:09ID:???
>会員の登録、退会、パスワード再発行などの機能
この辺もコンポーネントであったりするの?
0312nobodyさん2008/01/26(土) 21:28:19ID:???
あったら、俺の苦労は無駄になるw
0313nobodyさん2008/01/26(土) 21:38:31ID:???
rails使わないでcake使う理由って言語がphpであること以外にあるかな?
0314nobodyさん2008/01/26(土) 21:42:24ID:???
言語を抜かしてCakeの方が優れている点ってことか?
0315nobodyさん2008/01/26(土) 21:57:48ID:RSZTbZiz
>>307
俺の場合全てにおいて時間かかる。
$hoge = '';
ってやっとけばエラーでないからこうしとけばいいんじゃない?
0316nobodyさん2008/01/26(土) 22:02:53ID:???
>>315
やっぱりそうなんか。
pre-beta以前はこんなに時間がかからなかったんだけどねぇ。

> $hoge = '';
> ってやっとけばエラーでないからこうしとけばいいんじゃない?

俺は基本的に変数はちゃんと宣言するんだけど、
問題は間違って$hogeを$hageとか書いちゃった場合。
ケアミスバグなんだが、そのために数十秒無駄になるorz
0317nobodyさん2008/01/27(日) 00:37:27ID:???
いろいろ1.2の方が魅力的に見えるんだけど、1.2系はもう使えるモノになってるんすか?

普通のソフトだと、ベータテスト段階まで来たらバグ取りが主で、
大きな仕様変更は無いんじゃないかと思ってるんですけど、
Cakeはどうなんでしょう?
0318nobodyさん2008/01/27(日) 02:53:40ID:???
自分で確かめもしないやつには、誰も情報やらんよ。
0319nobodyさん2008/01/27(日) 13:39:39ID:HXUAcytA
>>315
自分はpre-beta 以前からも時間がかかった・・・。
やっぱりキャッシュ機能は必須なのかな。

>>317
目だったバグはないと思うよ。今使ってるけど。
しいて言えば html ヘルパーが フォームヘルパーになったりしていてバリデータエラーの
取得方法が 1.1 と変わっているのでそこが迷うくらい。
0320nobodyさん2008/01/27(日) 14:20:46ID:???
>>319
さっき落とした状態の1.2でやってみたんだけど、
変数宣言していなくても時間がかかることはなかった。
きっとどこかで何かをやっているのだろうがソースは会社なのでw

そういやバリデーション部分でひとつ不満が。
たとえば、1から5までの値を受け付けるバリデーションを作ったとして、
エラーメッセージを、「1から5まで数値を指定してください。」って
表示することはできないよね?
もちろん、1から5までという数値はパラメータで変更可能。メッセージも同じく。
0321nobodyさん2008/01/28(月) 01:30:21ID:???
app/config/routes.phpで
Router::connect('/', array('controller' => 'pages', 'action' => 'display'));
て設定してる時にクッキー消して(use_trans_sid onで)
http://myapp/?CAKEPHP=e233bd9c1facda8084d8ba2f2226eb60 でアクセスすると
Error: CAKEPHPe233bd9c1facda8084d8ba2f2226eb60Controller could not be found.
そんなコントローラーねえよって怒られちゃう
Router::connectの書き方誰か教えてくらさい
0322nobodyさん2008/01/28(月) 12:43:25ID:???
Router処理に来る前に、URLからセッションID部分を削除して
クッキーを使っている場合と同様のデータの持ち方に
変換すればいいと思ったがやり方しらねw
03233212008/01/28(月) 22:42:45ID:???
googleグループに嘘英語で質問投げてみた
0324nobodyさん2008/01/28(月) 23:44:38ID:???
乙。結果頼むw
0325316とか2008/01/30(水) 12:21:18ID:???
エラー発生時にやたらと時間がかかる場所を調べた。
どうやら、デバッグ機能としてエラー発生時に
わかる範囲すべての変数を出力しているみたい。
だからモデルとかヘルパーとかいろいろ使っているほど遅くなる。

/cake/lib/debugger.php の __outputの以下の行をコメントアウトすれば
時間かからないようになる。もちろんデバッガ機能は落ちるけど。

foreach ((array)$kontext as $var => $value) {
 $context[] = "\${$var}\t=\t" . $_this->exportVar($value, 1);
}
0326nobodyさん2008/01/31(木) 03:14:54ID:???
ならデバッグ切ればよくね?
0327nobodyさん2008/01/31(木) 16:10:58ID:????2BP(3000)
なんか出力するHTMLのソースの最初に改行が入っちゃうのは俺だけ?
beta使ってるんだけど、HTMLは良くても、rssの場合だとFFでエラーが出てしまう…
0328nobodyさん2008/01/31(木) 16:32:27ID:????2BP(3000)
すまん。ソース追いかけてたら自己解決。
あるhelperの最後の?>のあとに改行が入っていたせいで、それが出力されていたみたい。
0329nobodyさん2008/01/31(木) 17:50:39ID:???
だから閉じタグは書くなとあれほど
0330nobodyさん2008/01/31(木) 19:05:13ID:???
>>326
なんのためのデバッグだよw
03313212008/02/01(金) 03:13:35ID:???
経過
最新のbranchならfixされてるよ って開発者のレスがついて
最新のbranchにしたけど解決しなかった
んでそのまま放置されてる 今のところ以上
0332nobodyさん2008/02/01(金) 17:28:50ID:???
AJAXヘルパーって使いにくいよね。
基本的にclickで動作するように作られているからmouseoverで
動作させるためにはコアに手を入れなきゃいけなくなると思うんだけど。
0333nobodyさん2008/02/01(金) 19:21:10ID:???
>>332
マウスあわせただけでサーバに問い合わせなんかしてたら高負荷になるだろ?
0334nobodyさん2008/02/01(金) 21:05:31ID:???
>>332

わざと機能を制限しているので逆に使いやすいかもしれない。
自分でライブラリ作っててわかるけどあれもこれも設定できるようにすると
逆に使いづらくなるからね。
0335nobodyさん2008/02/01(金) 22:30:33ID:???
>>333
ユーザーがブラウザ上で操作したマウスの動きを記録する
Ajaxがある時代に何いってんの?w
0336nobodyさん2008/02/02(土) 00:57:26ID:???
それだけ自由に作りたいならフレームワークじゃないほうがいいんじゃない?
簡単に一般的な大多数の開発をサポートする事を目標としてるんだろうし。

どうしてもって言うならコンポーネントとか作ればいいんじゃね
標準で対応するには一般的じゃないって事だと思うが
03373322008/02/02(土) 19:02:48ID:???
確かに>>335は特殊すぎる例だけど、マウスオーバーで何かしらの
アクションがあるというのはけっこう使うと思うけどなあ…
しょうがないから自分で作ってやってるけど。
0338nobodyさん2008/02/07(木) 12:02:24ID:???
TestSuiteのやり方説明しているページ無い?(出来れば日本語で)

良くある説明ページが
class MyTestCase extends CakeTestCase {
 var $TestObject = null;
 function setUp() {
  $this->TestObject = new 〜〜;
 }
 function tearDown() {
  unset($this->TestObject);
 }
}

ってなっているんだけど、setUpが実行されるタイミングが
いまいちつかめない。なんか想定外に実行されるし。

また、fixturesを使ったとき、テーブルが作られるタイミングが
どうも???でテーブルが無いといわれたり。


んで、ざっくり調べたところ、
startCase/endCaseとstartTest/endTestというのが見つかった。

これだと、以下のコードで次のように想定どおりに表示される。
startCase -> startTest -> endTest -> startTest -> endTest -> endCase
0339nobodyさん2008/02/07(木) 12:03:02ID:???
class MyTestCase extends CakeTestCase {
 var $TestObject = null;
 function startCase() {
  pr('startCase');
 }
 function startTest() {
  pr('startTest');
 }
 function endTest() {
  pr('endTest');
 }
 function endCase() {
  pr('endCase');
 }

 function test1() {
  $this->assertTrue(true);
  $this->assertTrue(true);
 }
 function test2() {
  $this->assertTrue(true);
  $this->assertTrue(true);
 }
}
0340nobodyさん2008/02/07(木) 12:03:45ID:Ja8AUMIG
ちなみに、この状態で、setUp、tearDownが実行されるタイミングを表示させると?になる思う。
startCase/endCaseで足りると思うんだが、setUp、tearDownは何の為に使えばいいのだろう?

で、まだ良く調べていないのが、fixturesで追加したテーブルがどうなるか。
動きを見てみると、startTestが実行する直前に毎回リセットされてるようだ。。
だからstartTest前にCREATEしてendTest後にTRUNCATEしているようだが・・・

こういうレベルでちゃんと説明しているところがほしい。
0341nobodyさん2008/02/07(木) 12:42:55ID:???
バージョン言うの忘れてた。1.2.0.6311-betaです。
0342nobodyさん2008/02/08(金) 15:28:07ID:???
勉強会瞬殺過ぎるだろ…
0343nobodyさん2008/02/08(金) 17:25:37ID:???
http://pub.studio15.jp/2008/02/08/wakuwaku-meeting/
こっちがあるよ。
0344nobodyさん2008/02/08(金) 19:11:40ID:???
CakeWebTestCaseというかsimpletestのWebTestCase便利だな。

商品をカートに入れるとカートの画面に飛ぶ。
そこからログインをクリックしてログインページへ。
ユーザー・パス入れてログイン。
そしたらカートの画面に戻っている。
そして状態でもカートに商品は残ったまま。
ログアウトボタンをクリック。
そしたらカートから商品は削除されている。
(当然この一連の処理にクッキー・セッションが使われている。)

という一連のテストを自動化できちゃったよ。
(一度書いたら何か修正しえてもそれを実行するだけ)
0345nobodyさん2008/02/09(土) 00:52:29ID:???
みんなエディタとか何使ってる?Eclipse?PHPエディタとか??
0346nobodyさん2008/02/09(土) 14:25:58ID:???
>>345
dreamweaver cs3 使ってますよ。
やっぱりこれが最強じゃないですかね。

プログラム、デザインの両方に特化していますので。
0347nobodyさん2008/02/09(土) 17:09:18ID:???
明らかになんちゃってプログラマだな。人気に伴ってCakeのレベルが落ちてきてる
0348nobodyさん2008/02/09(土) 23:16:53ID:???
cakeのレベルは落ちないだろ。
0349nobodyさん2008/02/10(日) 01:04:56ID:???
裾野が広がることがレベルが落ちるって事なのか
って事は人気のあるスポーツはどんどんレベルが落ちてるんだな
0350nobodyさん2008/02/10(日) 01:17:48ID:???
あぁ、初心者がたくさん入り込んできて
レベルが下がってるよ。スポーツは
0351nobodyさん2008/02/10(日) 01:37:18ID:???
沢山の初心者がプロの地位をより高めるだけ。
部外者からみてもピラミッドが見えるようにすればいい。
0352nobodyさん2008/02/10(日) 14:24:03ID:???
A hasMany B belongsTo C

こんなリレーションなんですが、A->findAll()すると、Bしか付いてきません。
B->findAll()とすると、Cが付いてきます。

A->findAll()でB,C一緒に持って来たいのですが、どのようにしたらよいのか分かりません。
どなたかヒントをください。
0353nobodyさん2008/02/10(日) 14:24:47ID:???
A->findAll()->findAll()
0354nobodyさん2008/02/10(日) 14:31:15ID:???
ありがとうございます!

A->findAll("","","","","",'3')

これでいけました。
0355nobodyさん2008/02/10(日) 14:37:22ID:???
>349-351
なるほど。なんか納得。
web上ではプロは目立たず素人ばっか目立つから変な感じに見えるのか。
0356nobodyさん2008/02/10(日) 15:35:17ID:???
逆にマイナーなやつだと、それを使用している人は
ごくわずかでそういうものに手を出す人は
詳しい人が多い。

実際は、使う人の問題なのに、
言語の問題といいはるRuby凶なんてのがいたな。
0357nobodyさん2008/02/11(月) 00:25:02ID:???
「プロ」は余裕が無い人が多いからね。
自分が何か情報を出すとライバルに盗まれるかも、とか足を引っ張られるかも、とか思ってるんでしょ。
もうちょっと余裕のある人はちゃんと次を育てていける。
いきなり素人が…とか言い出したりしないだろ普通。
0358nobodyさん2008/02/11(月) 00:28:41ID:???
ホントにプロなら素人と共同作業しないでしょ。

新人には仕事教える立場だし。
0359nobodyさん2008/02/11(月) 02:35:25ID:???
うーん、盗まれるってのは無いと思うけどな。
ネットに限って言えば、プロな人がいろいろ露出するのって、ほぼ趣味なんじゃないか。
PHP界隈が、趣味でやるほどの魅力がない、仕事用の言語って感じだからじゃないの?
0360nobodyさん2008/02/11(月) 02:54:33ID:???
もう作ることではなく、
言語そのものが目的だからなw
0361nobodyさん2008/02/11(月) 03:20:56ID:???
言語そのものが目的って、趣味の人だろそれ
0362nobodyさん2008/02/12(火) 08:45:57ID:???
このアソシエーションって擬似的なもん?
一括で更新とかするSql文とか作ってるわけじゃないの?
0363nobodyさん2008/02/12(火) 14:38:05ID:???
>>362
複数のテーブルを一括で更新できるか考えてみれば良い。
0364nobodyさん2008/02/13(水) 00:39:35ID:jaUT9mg5
ビューのテンプレートファイルはコントローラによってフォルダ分けされるけど、
単体で使える共用のビューを作りたい時はどうすればいいの?
app/views/common/common.ctpみたいな感じ
0365nobodyさん2008/02/13(水) 01:02:22ID:???
>>364
function common(){
$this->viewPath='common';
}

とかすれば
0366nobodyさん2008/02/13(水) 02:07:27ID:???
element使え
0367nobodyさん2008/02/13(水) 20:01:16ID:jaUT9mg5
>>365
どうもありがとうございます
0368nobodyさん2008/02/14(木) 11:30:58ID:???
ウィザード形式というか、ある項目を入れて次へ→ある項目を入れて次へ
→最後にOKで処理実行のようなページを作るにはどうしたらいいの?

ページごとにエラーチェックしたり、前の入力項目の値を元に
次のページを決めたり、想定外のページ変移に対応したりもしたい。
0369nobodyさん2008/02/14(木) 15:36:54ID:???
>>368
view1枚の中で条件分岐しまくるのはどうか
0370nobodyさん2008/02/14(木) 16:32:15ID:???
viewは一枚としてコントローラ側は?

まあ今はaction一つでやってるんだけど。

なんか一つにごちゃごちゃあって見にくいなぁと
それにページ間での値の参照・共有したいし
なんか良いやり方無いのかなぁ?
0371nobodyさん2008/02/14(木) 16:35:18ID:???
セッションでデータ保持して、ページ移動はredirectとかすればいいんじゃね
0372nobodyさん2008/02/14(木) 16:43:59ID:???
>>371
同感。
03733692008/02/14(木) 16:55:00ID:???
>>370
actionも1個でやる。controller側ではページ分割されていることを意識しない。
1ページ目のpostは、2ページ目以降の項目が未入力と見做してエラー扱い。
表示の調整をviewでやる。

まあ思い付いただけなんで上手く行くかは分かりません。
0374nobodyさん2008/02/14(木) 18:23:10ID:???
それでページの「戻る」とかちゃんと動くのかなぁ?

一ページ目入力、ニページ目入力、三ページ目入力・・・してる途中で
一ページに戻る、一ページ目訂正、
二ページ目はさっき入れたのが表示されているからそのまま次へ。
三ページ目入力

みたいな。
0375nobodyさん2008/02/14(木) 18:27:55ID:???
>>371
> セッションでデータ保持して、ページ移動はredirectとかすればいいんじゃね

汎用的過ぎて参考にならないよw

ほぼすべてのウェブアプリはセッションかデータベースにデータ保持して
ページ移動はredirectとか使っている。
0376nobodyさん2008/02/14(木) 18:33:04ID:???
じゃあそれでいいんじゃないの?
03773692008/02/14(木) 19:39:04ID:???
>>374
マイナス1ページはプラス1ページと同じだから問題ないと思うけど、
ページを飛ばすのは処理増やさんといかんなあ。

入力値でページ分岐もややこしそうだ。
あと、未入力エラーを出すか出さないかの判断も必要か。
0378nobodyさん2008/02/14(木) 21:58:46ID:???
セッション変数を使うとして、
いかに管理しやすくするかということかな。
PHP5だと普通にインスタンスをセッション保存できるから、
複数ページで1インスタンスを共有というのもありでしょう。
0379nobodyさん2008/02/15(金) 04:03:48ID:???
ていうか、CakePHPに限ったことじゃないのに悩むとか経験なさ杉だろ。
もっと普通のウェブアプリ作れ。
0380nobodyさん2008/02/15(金) 04:24:44ID:???
>>379
悩まないのならあおってないで答え書いたら?w
0381nobodyさん2008/02/15(金) 06:47:51ID:???
会員ログインID以外のデータを
セッションでデータ保持するのはバカだろ
0382nobodyさん2008/02/15(金) 06:54:30ID:???
>>368
ただの初心者だろ?普通にできるやん
0383nobodyさん2008/02/15(金) 09:08:38ID:???
やん
0384nobodyさん2008/02/15(金) 10:10:41ID:???
>379
いや、Cakeならそのケースでどうするかということで
フレームワークによってセッションの扱いは少しずつ異なるし。
0385nobodyさん2008/02/15(金) 12:21:57ID:???
>>381
んなこたーない
0386nobodyさん2008/02/15(金) 15:43:58ID:???
>>381

俺ほぼ全部を受け渡してるけどな。
だってIDのみだったら他の情報がを表示するときとかっていちいちDBから拾ってくるの?

まぁ、変更するときはDBを更新する必要があるんで接続はするだろうけど。
0387nobodyさん2008/02/15(金) 15:56:24ID:???
全部っつったって、常に表示してるのなんて、名前くらいじゃね?
そのくらいいいじゃん。
0388nobodyさん2008/02/15(金) 16:55:19ID:???
セッションはそもそも大量データを保存するものじゃない
基本的に大量データを引っ張てくるキーだけ保存するもの
0389nobodyさん2008/02/15(金) 16:59:50ID:???
>>386
いちいちDBから拾うのが基本
セッションは会員IDなど必要最小限のデータだけ入れるべき
データ大量に保存して持ちまわすものじゃない

0390nobodyさん2008/02/15(金) 17:01:59ID:???
セッションをCakePHPではじめて使う人は
セッションについて何もわかってないみたいだ
0391nobodyさん2008/02/15(金) 17:04:23ID:???
基本的にログインID以外でセッション変数を多様するのはバカ
0392nobodyさん2008/02/15(金) 17:05:37ID:???
複数のリクエストにまたがる処理の場合、セッションでデータ継続することはある。
0393nobodyさん2008/02/15(金) 17:12:24ID:???
必要最小限以外はhiddenで渡すのが基本
セキュリティ的にもやばいし
ページの前に戻ると不具合がおこりやすい
常に大量データ持ちまわすことはメモリ、CPUに負荷がかかる
0394nobodyさん2008/02/15(金) 17:14:11ID:???
セッションがダメならcookie使え!
0395nobodyさん2008/02/15(金) 17:18:54ID:???
つーかログインID以外にセッション多様することなんてないやろ?
ページまたぎ処理はパラメータで引き継げよ
0396nobodyさん2008/02/15(金) 17:27:06ID:???
>>393
>セキュリティ的にもやばいし
どういうとこが?セッション固定化とかは別の話だし

>ページの前に戻ると不具合がおこりやすい
具体的にどんな不具合?
セッションでフロー管理してるからhiddenよりも厳密にできたりするんだけど

>常に大量データ持ちまわすことはメモリ、CPUに負荷がかかる
大量っていっても、多くても数kとかだし。
何かしらのキーで毎回ストレージから取得するのも処理コストあるよね
0397nobodyさん2008/02/15(金) 17:32:39ID:???
勉強になるなぁ。

俺はセッションに入れる派。
0398nobodyさん2008/02/15(金) 17:47:48ID:???
hiddenみればわかると思うけど
yahooなどの超有名サイトほど、ログイン処理など
きわめて便利でないとこ以外はセッションを使ってない
0399nobodyさん2008/02/15(金) 17:48:37ID:???
OpenPNEもログイン処理以外はセッションを使ってない
0400nobodyさん2008/02/15(金) 18:01:38ID:???
単純に考えてもセッションが途中で切断されたとき
データの引継ぎが途中で止まる
hidddenにデータがはいってないので
最初からページ移動のやりなおし






0401nobodyさん2008/02/15(金) 18:13:03ID:???
なるほど。それは納得。

hiddenは値をいくらでも改竄できるからどうも・・・。
それすると挙動がおかしくなるサイトもあるし。
まぁ、それはそこの実装者が悪いだけなんだけど。

今のところセッションの方が生産性高いから、セッションで実装しちゃうな〜
0402nobodyさん2008/02/15(金) 18:16:11ID:???
セキュリティ的にいえば毎回DBと照らし合わせが基本
セッション多様は開発者が楽するためのもので
サイト運営者、利用者にとってセキュリティリスクでしかない
0403nobodyさん2008/02/15(金) 18:24:00ID:???
セキュリティ的にどうのこうのって、さっきから一切具体的な話がないんだよね。
0404nobodyさん2008/02/15(金) 18:49:34ID:I3wnpJfD
Not Found
0405nobodyさん2008/02/15(金) 19:08:46ID:???
毎回DBと何を照らし合わせるんだ?
リクエストされたパラメータが改竄されていないかどうかをチェックするということか?

そんなことをするならばセッションにデータを格納したほうが効率が良いだろう。
悪意あるリクエストによってサーバセッションの中身を改竄するのは、
パラメータを書き換えるよりは困難だ。

他人のセッションを乗っ取ったり、MITM攻撃などでの手法はまた違う議論。

セッションを使おうが、パラメタを使おうが、適切な処理を行わなければ
どちらもセキュリティリスクになる。

どちらの方法も処理次第では脆弱になりうる。
逆に言えば、どちらの方法でも適切な処理を行えば十分安全になる。
ここでいう*十分安全*という定義はサービスの内容によって異なる。
0406nobodyさん2008/02/15(金) 19:10:27ID:???
ページ移動にセッション使ってるやつて、どういうコード書いてるのさ
具体的に指摘してやるからコード晒してくれ
0407nobodyさん2008/02/15(金) 19:39:23ID:???
外のサイトからデータ引っ張ってきて確認画面等でページ移動するときはセッションで引き回してる
他はログインID引き回すぐらいかな
ちなみにCAKEのデフォルト通りにIPでも(自動で)チェックしてるからドコモの人はさよならな俺のサイト
0408nobodyさん2008/02/15(金) 20:04:49ID:???
>>406
具体的に?
いや、だから、あるアクションでセッションにデータ入れて関連する他のアクションで参照するっていう、ほんとそのまんま。
コード書くまでもない。
0409nobodyさん2008/02/15(金) 21:21:34ID:Q8bQtypz
セキュリティという面ならhiddenで取り回すよりもセッションの方がまだマシだと思うけど違うの?
hiddenだと改ざんされてしまうし・・・。
けど、何でもかんでもセッションにってのは確かに気持ち悪いわな。
0410nobodyさん2008/02/15(金) 21:43:28ID:???
hiddenの場合って「入力画面 -> 確認画面 -> DB登録」って時に、確認画面からhiddenでDB登録に渡すでしょ
確認画面の時にバリデートして、DB登録直前にまたバリデートって面倒じゃない?(hidden値改竄の可能性があるから)

セッションだったら確認画面でセットしたデータがDB登録の時になって変わることがないからいいんだけど
0411nobodyさん2008/02/15(金) 22:23:55ID:???
hiddenにもセッション変数にも問題はあるから、扱う情報によってケースバイケースでは?
個人的には、セッション変数を使うのが良いと思うが、
セッション変数は手軽に増やせるので、コードの質を低下させるのを気をつけたい。
例えば、index.phpですべてのリクエストを受けて、
$_SESSION['action']で場合分けみたいなコードを編集したことがあるけど、
$_SESSION['action']はsession_start()さえしておけば、コードのどこでも変更できるので、
きちんと規約を決めておかないと副作用で死ぬ。
フレームワークに期待するのは、そういう規約の部分なんだけど。
0412nobodyさん2008/02/15(金) 22:28:43ID:???
ちなみにセッションが小技的に有用だと思ったのは、
Javascriptからしか参照されないJSONで、
ユーザ固有のデータを出すときに、いちいちPOSTしなくて良い点。
遷移の上で孤立したアクションでユーザ固有のデータを使える。
0413nobodyさん2008/02/15(金) 22:30:54ID:???
セッションのサイズが大きくなったらどうするんだ?
たとえばセッションのサイズが1MBになったら、
データ読み込みに時間がかかるだろ?

反論

ページ移動するたびに、
1MBものデータをhiddenでクライアントに転送し
それをまたサーバーに送信するようなことをしたら
もっとパフォーマンス悪いだろ?
0414nobodyさん2008/02/15(金) 22:56:12ID:???
>>413
いや、そもそも、設計を見直せ、って話だろ、それ。
0415nobodyさん2008/02/15(金) 23:02:40ID:???
「設計を見直せ」というだけなら簡単
0416nobodyさん2008/02/15(金) 23:05:36ID:???
データをセッションに保存しないとしたらどこに保存するんだろうな?
セッション=ファイルなわけで、ファイルに保存するか、
データベースに保存するかの違いしかないんだが・・・
0417nobodyさん2008/02/16(土) 00:07:09ID:???
386です。

セッションIDのみでデータベースから読み出して処理するのがベストなのですか。
勉強になりました。ありがとうございます!
0418nobodyさん2008/02/16(土) 00:20:43ID:???
セッションをデータベースに保存すれば
それで終わりだなw
0419nobodyさん2008/02/16(土) 02:31:23ID:???
なんだかんだ言って、幅広い意見が聞けて有益なスレだ
0420nobodyさん2008/02/16(土) 02:42:17ID:???
>>410が言ってるような、複数のリクエスト(アクション)を一つの論理単位としてその中でのデータの受け渡しをどうするかって話だろ
なんかDBのデータ(ユーザデータとか)を全部セッションにぶちこむかどうかの議論と勘違いしてるのがいるな

途中経過のデータをセッションに入れるのはセキュリティ的によくないとか、セッションにはログインIDしか入れちゃいかんとか、その理由を述べろよ
0421nobodyさん2008/02/16(土) 03:28:41ID:???
無駄である。以上。
0422nobodyさん2008/02/16(土) 03:33:13ID:???
その無駄とは、理由を聞いても答えられないから
無駄という意味か?w
0423nobodyさん2008/02/16(土) 08:57:57ID:???
セッションは必要最小限で使えというのは
大手を含め全員一致の答え、
ページ移動でもhidden内容を何でもかんでもセッションに詰め込むのは問題

・セッション変数の重複関係でバグ
・ページ移動中に他のサイト見に行ったりしたとき
・セッション変数が開放されないことによるバグ
・セッション切断による、変数の維持ができないバグ


0424nobodyさん2008/02/16(土) 09:28:46ID:???
> ・セッション変数の重複関係でバグ
バグが問題なだけ

>・ページ移動中に他のサイト見に行ったりしたとき
ページ移動中に他のサイト見に行ったりしたとき、
hiddenだと入力途中のデータ消えるバグ

> ・セッション変数が開放されないことによるバグ
バグが問題なだけ

> ・セッション切断による、変数の維持ができないバグ
セッション切断したのに、変数が維持されるバグ
0425nobodyさん2008/02/16(土) 14:40:12ID:???
hiddenと比較するとセッションの方がバグ管理するポイントが多い
しかも致命的バグを生む可能性が高いのはセッション
0426nobodyさん2008/02/16(土) 14:50:25ID:???
>>423
>セッションは必要最小限で使えというのは大手を含め全員一致の答え
なんで大手代表できるの?全員って?
ここの書き込み見るだけでもセッションでやってる人いるよね。
まぁせまい範囲だけど、知り合いとか知ってる会社とか、セッションで実装してるとこも多々ありますよ。

>セッション変数の重複・セッション変数が開放されない
これはバグじゃなくて、これに対処するコードを書かなきゃいけないっていうセッションのデメリット。
逆にhiddenのデメリットはhtmlに埋め込まなきゃいけない、改竄に対処するコードを書かなきゃいけないってことかな。

>・セッション切断による、変数の維持ができないバグ
セッション切断されたら変数の維持がどうのこうのじゃなく処理自体継続できない。ログアウトされるから。
ログインがないシステムだったらhiddenのほうがこの問題にはちゃんと対応できるね。
0427nobodyさん2008/02/16(土) 14:53:57ID:???
楽したい低脳プログラマが使いたがってるだけだろ<セッション
0428nobodyさん2008/02/16(土) 15:01:08ID:???
>>427
楽して何が悪いw
0429nobodyさん2008/02/16(土) 15:05:46ID:???
1.2betaにはfind('count')とfind('list')を使ったとき、
afterFindが呼び出されないバグがあるな。
behaviorで文字コード変更してたら文字化けした。
だれか報告してきてくれ。

find('count')はafterFindを呼び出す例を思いつかないが
呼び出したほうがいいのだろう? たぶん。
0430nobodyさん2008/02/16(土) 15:07:33ID:w7he1Bjb
>>427
いかに楽できるのかを考えるのが(効率の)いいプログラマなんだと思うんだが
どっちのメリット・デメリットも理解した上でデメリットに対応し、自分の楽なほうを選んでるんだからいい
何の説得力も説得材料もないそんなことしか言えないお前のほうがよっぽど低脳だ
0431nobodyさん2008/02/16(土) 15:28:00ID:???
>>430
じゃあなんでyahooはページ移動にセッション使ってないんだよ
効率悪いプログラマの集団かw
yahooにはPHP創始者もエンジニアとしているんだけどなw

0432nobodyさん2008/02/16(土) 15:35:42ID:???
低脳にそんなに反応するのか
やっぱり能力の低さがコンプレックスになってる奴は違う
0433nobodyさん2008/02/16(土) 15:37:13ID:???
ヤホーじゃなくてお前の意見を言えw
0434nobodyさん2008/02/16(土) 15:38:25ID:???
>>431
yahooにとってはhiddenのメリットのほうが大きかったってことだろ
ちなみにデメリットの対処を考えると実はセッションの方が楽ではない

>yahooはページ移動にセッション使ってない・PHP創始者もエンジニアとしている
これは何の技術的理由にもならないことが分からんのか?
っていうか継続データのやり取りにセッション使ってないって保証はどこにあんの?
0435nobodyさん2008/02/16(土) 15:40:00ID:???
ここにいる低脳プログラマのやってることは
納品さえすれば、後のことは関係ないみたいなのばっか
セキュリティ0
0436nobodyさん2008/02/16(土) 15:41:09ID:???
>>431
楽天の会員登録ではセッション使っているようだが?
https://www.rakuten.co.jp/myrakuten/login.html
0437nobodyさん2008/02/16(土) 15:43:44ID:???
やり方としてはどちらもありだし、
セキュリティもどちらが上というわけじゃないのに、

たまたまYAHOOがやっていたということを根拠にするのやめてくれない?w
ちゃんと自分の意見を言おうね。
0438nobodyさん2008/02/16(土) 15:45:31ID:???
---------------------------------------

 やり方としてはどちらもありだし、
 セキュリティもどちらが上というわけじゃないのに

---------------------------------------

 同意
0439nobodyさん2008/02/16(土) 15:53:34ID:???
セキュリティもどちらが上というわけじゃないのに?
セッションよりもhiddenの方が安全に決まってるだろうがw
セキュリティで危険なのってセッション絡みが多い
hiddenで危険なのって聞かないというか
セッションだろうが最初の画面はhiddenで飛ばすし
0440nobodyさん2008/02/16(土) 15:56:02ID:???
hiddenで毎画面チェックして
最終画面でも総チェックした方が
セキュリティは上

セッションは書き換えられたらおしまい
0441nobodyさん2008/02/16(土) 15:58:36ID:???
rails様がセッションでもhiddenでもなくクッキーに書き出してるんだから
おまえらもクッキーにしようぜ
0442nobodyさん2008/02/16(土) 16:03:51ID:???
hiddenじゃセッションの代わりにはならないよ?
他のページ行ってもどってきたらデータを引き継げない。
0443nobodyさん2008/02/16(土) 16:04:24ID:w7he1Bjb
>>439
>セッションよりもhiddenの方が安全に決まってるだろうがw
うん、だからhiddenの方が安全な理由を教えてよ
「hidden セッション」とかで検索するとhiddenのほうが否定的なんだけど

>>440
>セッションは書き換えられたらおしまい
これはセッションを(少しでも)利用してるシステム全部に言えること
継続データをhiddenにするかセッションにするかとは全く論点が違う
0444nobodyさん2008/02/16(土) 16:05:52ID:???
>>439
お前の言うことと「ipa.go.jp」のどちらを信じるか言うまでも無いw

hiddenは危険(セッション変数を利用しよう)
http://www.ipa.go.jp/security/awareness/vendor/programming/a01_05.html
0445nobodyさん2008/02/16(土) 16:33:40ID:???
そんな糞みたいなサイトじゃなくてひろみちゅ先生の話聞こうぜ

安全なWebアプリ開発の鉄則 2004
http://www.soi.wide.ad.jp/class/20040031/slides/09/
2006.4.4「CSRF」と「Session Fixation」の諸問題について
http://www.ipa.go.jp/security/vuln/event/documents/20060228_3.pdf
安全なWebアプリ開発の鉄則 2006
http://www.nic.ad.jp/ja/materials/iw/2006/proceedings/T21.pdf
0446nobodyさん2008/02/16(土) 17:02:33ID:???
ここまで馬鹿と利口が鮮やかに色分けされているスレも珍しいな。
0447nobodyさん2008/02/16(土) 17:03:41ID:???
>>446
どちらが馬鹿か指摘してよ。そうすればあんたが馬鹿かかどうかわかるからw
0448nobodyさん2008/02/16(土) 17:06:26ID:???
>>447
「とりあえずお前はバカのボックスに入ってくれ」とさ
0449nobodyさん2008/02/16(土) 17:11:41ID:???
>>448
おやおや? 何か気に障りましたかな?w
0450nobodyさん2008/02/16(土) 17:52:02ID:???
見えない敵と戦ってるやつがいるな
0451nobodyさん2008/02/16(土) 21:16:52ID:???
まぁ分かりやすく言うとだな、

hidden=オナニー

セッション=セックス
0452nobodyさん2008/02/16(土) 21:29:42ID:???
ためになるスレだなー

個人的な雑感で言えば、セッション派だなぁ。
セッションってそもそもクライアントの送ってくるデータが信用できないから
渋々サーバ側にデータ置いて、金庫の鍵だけやんよって話なんだから(違ったらごめんね)、
データの信用度で言えば当然セッションの方が上だと思うよ。

たとえば、証券会社の登録フォームとかはセッションの上に
さらに短めの有効期限が切ってあって、入力ステップに時間が
空くと別人の入力と判断して強制的にやり直しするって形を取ってる。

要するにさ、hiddenってブラウザの画面上にレンダリングされないってだけで
普通のテキストエリア置いてあるのと全く変わりないんだから、
突っつきやすさから言ったらhiddenのが危なくないかな。

反論ぷりーず
0453nobodyさん2008/02/16(土) 21:32:14ID:???
あ、ただ盗まれて被害が大きいのはセッションだと思うよ。
サーバ側のファイルまで信用ができなくなるってのはやばい。
でもそれってもう入力フォームでなんちゃらって話じゃないよね。
0454nobodyさん2008/02/16(土) 21:56:28ID:???
セッション多様してるほどセッション・ハイジャックされる確率は高くなる
0455nobodyさん2008/02/16(土) 22:03:29ID:???
セキュリティというか、セッションを使う場合の注意点として。

同一セッションで、複数のウインドウ(タブ)を開かれて同じ画面を
操作された場合への対処をどうするかとか、
セッション上のデータのクリアタイミングとかをちゃんと考えてあるなら
別にセッションでもいいんだけど。

hiddenだからって、少なくとも破壊的操作が入るところではデータの
妥当性検証をするのは当たり前の話で、それをやっていないのが論外なだけ。

で、システム形態だとか対処コストを考えて実装方式を決めてください。
0456nobodyさん2008/02/16(土) 22:05:42ID:???
>>444
http://www.ipa.go.jp/security/awareness/vendor/programming/a01_05.html
これでhiddenが危険といわれてもw

会員ログインページをhiddenで判別してるんだろ?
こんなことするやつおらんやろ

テーマにしてるのは
会員ログインはセッションだけど
それ以外の確認画面や単純なページ移動でセッション多様するのを議論してる
ページ移動にかかわる、どうでもいいデータまでもセッションていうのが糞
0457nobodyさん2008/02/16(土) 22:14:00ID:???
>>455
> hiddenだからって、少なくとも破壊的操作が入るところではデータの
> 妥当性検証をするのは当たり前の話で、それをやっていないのが論外なだけ。

hiddenでデータを渡したらページごとに
同じチェックしないといけないじゃん。
そういうのは面倒だろう。

それをフレームワークで良い感じに楽にやる方法は無いのか?という話題。
0458nobodyさん2008/02/16(土) 22:15:07ID:???
セッション使えばサーバーにキャッシュがたまるからさ
どうでもいいデータまでセッションにしてると
一時的ではあってもキャッシュたくさんになるわけよ
アクセス数多いサイトだと
生産性高くても負荷的にどうなんだよ?
04594572008/02/16(土) 22:16:20ID:???
それと、POSTした内容すべてを次のページに
hiddenで表示する必要もあるね。
ここんところ、CakePHPでのスタンダードなやり方ってどうすんのさ?
0460nobodyさん2008/02/16(土) 22:22:22ID:???
459はサーバー運用した経験がないように思う
構築経験も小規模サイトの経験しかない
0461nobodyさん2008/02/16(土) 22:24:24ID:???
railsはサーバー負荷かけないようにクッキーらしいが
クッキー対応してないプラットフォームを無視してるよな
0462nobodyさん2008/02/16(土) 22:26:24ID:???
>>460
煽り厨ウザイよ
0463nobodyさん2008/02/16(土) 22:30:43ID:???
>>460
CakePHPのスレだからここ。

CakePHPでのやり方を聞くのは普通なわけ。

すでに他でやったことあるけど、それは自力でやっているだけなの。

フレームワークとはそれを簡単に提供するものなわけ。

あんたの言っていることは「CakePHPでPOSTした情報をどうやって取得するんだ」
という問い対して、$_POSTで取得すると答えているようなもん。

それはCakePHPのやり方ではない! (>>460へのレスでもある)

言っている意味。わかる?
0464nobodyさん2008/02/16(土) 22:32:38ID:???
○○機能ある?と聞いて
煽りしか返ってこないとき、
その機能は無いと思ったほうがいいよw

無いと答えるのが悔しくて煽りに走る。

もしくは>>460が知らないだけ。
0465nobodyさん2008/02/16(土) 22:41:28ID:???
460は煽りではないと思うよ
負荷的な意見には納得せざるおえない
楽だけ優先しすぎて負荷的な要素を一切考えないというのはおかしい
CakePHPがページ移動にセッションで渡せという仕様にもなってないわけだし
1.2から標準装備されたページ送りみても
セッションじゃなくてパラメータを渡す方法でページ送りする仕様だし
0466nobodyさん2008/02/16(土) 23:04:37ID:???
案件依頼だしたときに、何の確認もなく
ページ移動にくだらんデータまでセッションで使いやがったら
2度目の依頼はまずしない!!
0467nobodyさん2008/02/16(土) 23:04:42ID:w7he1Bjb
>>465
いやいや、誰もそんな議論はしてない。
ページングとかはGETパラメータで当たり前。

>>455
>同一セッションで、複数のウインドウ(タブ)を開かれて同じ画面を操作された場合への対処
これはほんとそうで、画面識別のためのトークンを発行するなどの対処が必要。
0468nobodyさん2008/02/16(土) 23:15:35ID:???
>>467
ページングとかはGETパラメータで当たり前てw
セッション使うなら
ページングにGETパラメータを渡し続ける必要ないだろ?
0469nobodyさん2008/02/16(土) 23:21:29ID:???
Cakeユーザーのしったかこえー
なんかosCommeceやOpenPNEやEC-CUBEのスレと同じ臭いがするよね
0470nobodyさん2008/02/16(土) 23:23:05ID:???
>>467
楽だからセッション使うなら
ページングもセッションつかったら楽だろうが
ページングだけセッション使わないて何でや?
検索条件増えるたびにページリンクにパラメータ記述するの面倒やろが
0471nobodyさん2008/02/16(土) 23:27:04ID:???
たとえ他でセッションを使っていようと、検索条件、ページとかはGETを使う意味があって。

それは何かというと、URLをコピーしておいて、後でそれを貼り付ければ
同じ内容を表示できるという点。
URLをメールで送って他の人に同じものを見てもらうとかね。

POSTもしくはセッションだと、同じ条件で検索し直したり
ページ移動し直さないといけなくなるけど。
0472nobodyさん2008/02/16(土) 23:31:30ID:???
>>467
おまえ画面識別のためのトークン発行なんてしてないだろ?
楽しようとするやつがそんなセキュリティ的なことするわけないやんw
0473nobodyさん2008/02/16(土) 23:53:21ID:???
してるよ。楽をするのとセキュリティを疎かにするのは別の話。
0474nobodyさん2008/02/17(日) 00:04:35ID:???
>>429
/branches/1.2.x.x/cake/libs/model/model.php (log) - CakePHP : The Rapid Development Framework for PHP - Trac
https://trac.cakephp.org/log/branches/1.2.x.x/cake/libs/model/model.php

ざっくり Revision Log見た感じChangeset 6315ってのがその修正なんじゃね?
ろくに読んでないしというか読んでも正直よくわかんないから違ったらドンマイ
0475nobodyさん2008/02/17(日) 00:39:48ID:???
>>473
してるよと言われても
セッションに関するセキュリティ対策を具体的にどうやってるのか
全く書かれてないので説得力がない

対策してるのは画面識別のためのトークン発行だけ?
これは具体的にどうやってるの?

0476nobodyさん2008/02/17(日) 01:24:22ID:???
セッションに関するセキュリティ対策は、継続データをhiddenに格納するかセッションに格納するかに関係はないよね。
セッションそのものの話だから。
一応それの対応は、ログイン時にセッションIDをはりかえる(セッション固定化の対応)。
もっと厳密にやりたい(そういう要求の)時はセッションID+ユーザエージェント(またはcookie)での認証(セッション乗っ取りの対応)。
ただこれはユーザビリティ的に問題があるからそこを説明した上で納得してもらえればって感じで。

トークンは、処理1(表示)、処理2(POST・確認)、処理3(実行)っていうときに、
処理1でトークンを生成してセッションに格納し、その値をhiddenに埋め込むか、処理2へのURLに付加する。
処理2でpostデータをセッションに格納(トークンをネームスペースとする(画面識別))。
処理3でセッションからpostデータを取り出してDBに反映。

この時、処理2でバリデート失敗なら処理4へリダイレクト(リダイレクトURLにトークン付加)。
処理4は処理1と同じ画面(同テンプレート)で、セッションのpostデータをinput valueに入れる。

この処理の間、どの処理を行ったのかをセッションで管理する。
そうすることで処理2,3,4に直接行くのを防ぐ。
またセッションに有効なトークンがない場合は処理2,3,4は実行不可。

こんな感じでやってる。
0477nobodyさん2008/02/17(日) 01:32:49ID:???
ごめん。ちょっとニュアンスが違う。

>そうすることで処理2,3,4に直接行くのを防ぐ。
1から3とか、4から3とかを防ぐ。
0478nobodyさん2008/02/17(日) 03:23:34ID:???
$form->inputの配列オプションarray('DIV'=>false)を
毎回入れるの面倒だけど、なんとかならんのかな
0479nobodyさん2008/02/17(日) 11:13:38ID:???
>>476
そういう汎用的だが面倒な処理ってのは、フレームワークでやってほしいね。
Cakeにはそんな機能無いの?
なければそういうコンポーネントとか。
0480nobodyさん2008/02/17(日) 11:18:29ID:???
>>474
おー。それであってる。branches以下を見ればよかったのか。
意図したところにちゃんとコード入ってるよ。

find('count')には入ってないけど、やっぱcountで
afterfindを呼び出す必要は無いのかな?
0481nobodyさん2008/02/17(日) 13:03:45ID:???
使い道はわかんないけどcountだからafterfind要らないって発想だとバグ生みそう
とはじめは思ったけどcountは
$results = $this->__filterResults($results, true);
省いても結果変わらないから別によくね?
初心者丸出しですいません
0482nobodyさん2008/02/17(日) 23:54:36ID:???
モデル以外(クッキーや単純なPOSTなど)のバリデーションって
どうやってる?

モデルみたいに簡単にかく方法用意されてないのかな?
0483nobodyさん2008/02/18(月) 04:05:14ID:???
cakeのソースってzendframeworkと比べると汚いんですか?
0484nobodyさん2008/02/18(月) 04:06:19ID:???
テーブル名にアンダーバーつけたら動かない
どうすれば動くの?

例)
c_userテーブル

0485nobodyさん2008/02/18(月) 04:56:32ID:???
>>483
自分で見て確かめれ。報告はいらない。
04864842008/02/18(月) 04:56:56ID:???
テーブル名にアンダーバーつけて動かないのは
メンバ変数名に[$]が自動的についてしまうのが原因かな
もっと詳しく調べてみよう
0487nobodyさん2008/02/18(月) 04:58:45ID:???
$? まあどうでもいいやw
0488nobodyさん2008/02/18(月) 05:01:46ID:???
>>484
俺は普通に動いてる
04894842008/02/18(月) 05:05:59ID:???
謎が解けた
bakeでつかって作ると
var $helpers = array('Html', 'Form', '');
helpers配列の最後に空の値が自動的に入るクサい
空の値をとったら動いた
0490nobodyさん2008/02/18(月) 05:14:55ID:???
命名規約通りなら
c_usersテーブル
app/models/c_user.php
CUser
app/controllers/c_users_controller.php
CUsersController
じゃなかったっけ試してないけど って解決したならいいや
04914842008/02/18(月) 05:20:30ID:???
bake使ったときに
helperのときの質問でライブラリ名指定するとこで
そのままエンターしたから
空の値がはいっちゃったくさい
0492nobodyさん2008/02/18(月) 06:19:30ID:???
$html->link()
でリンク作成できるみたいだけど
リンクを新しいウィンドウで開かせたい場合はどうしてますか?
04934922008/02/18(月) 06:45:36ID:???
第2引数に
array('target'=>'newwin')
でよかったんだ
0494nobodyさん2008/02/18(月) 07:28:02ID:???
cakephp使ってからコード見やすくなったけど
激的に作業スピードが変わるということはないな
0495nobodyさん2008/02/18(月) 08:27:29ID:???
>>485
見ましたがゲロ以下のソースでした
0496nobodyさん2008/02/18(月) 09:47:10ID:???
報告はいらないといったのにやっぱりするんだなw
まあ、もとからそれが目的なのだろうから仕方ないかwww
0497nobodyさん2008/02/18(月) 11:10:35ID:???
よくこんなゲロ以下のコードのFWの上ででみんなよくやるね
cakeユーザはある意味凄いと思うよ
0498nobodyさん2008/02/18(月) 11:17:26ID:???
0から作るにはフレームワークがいいけど
今まで沢山のサイト作ってきたので
0から作るようなサイトはあまりないよ
それを壊してフレームワークにするとかアホらしい作業
0499nobodyさん2008/02/18(月) 11:33:10ID:???
>>497
オプソなんだからお前が修正しろ。
もしくは自分で作れ。
0500nobodyさん2008/02/18(月) 14:50:14ID:???
汚いというか
ブラックボックスの割に 穴だらけなのが困る

フレームワークの意味ねえよw
0501nobodyさん2008/02/18(月) 17:24:44ID:???
ブラックボックス?
穴?
何の話?
0502nobodyさん2008/02/18(月) 19:28:56ID:???
ブラックボックスというか、各メソッドの引数決めに迷走した挙句
後方互換取ろうとするもんだから、メソッド内での引き回しが地獄
0503nobodyさん2008/02/18(月) 20:31:27ID:???
>>502
それには同意。引数の名前の通りに使ってくれと思う。

でも、それを理由に他のフレームワークを調べてみたんだが、
どうもCakeほど総合力で勝っているものが無い・・・
もう無くてもいいかもしれんが個人的にPHP4、PHP5コード互換と
アソシエーションとかデータベース周りが一番実用的なんだよなぁ。

※PHP4、PHP5コード互換とはPHP4用とPHP5用で同じコードが使えるという意味。
CodeIgniterはPHP4対応だが、コンストラクタがPHP4とPHP5でのやり方が違って拍子抜け。
0504nobodyさん2008/02/18(月) 20:38:36ID:???
>>503
アソシエーションって対象のモデルデータしか必要ない時も他のモデルデータくっつけるから微妙じゃない?
0505nobodyさん2008/02/18(月) 20:44:06ID:???
なんかレベル低いやつばかりだな。いくつかアプリケーション作ってから物言えよ
0506nobodyさん2008/02/18(月) 20:52:34ID:???
お前もな
0507nobodyさん2008/02/18(月) 21:34:20ID:???
Cakeの導入考えてるんだど、ちょっと質問させてください。
大きなデータベースをガシガシ使う予定があるんだけど、
やっぱりPDO使う場合に比べてCakePHPでシステム作ると
データ処理とか重くなりますか?
0508nobodyさん2008/02/18(月) 21:59:37ID:???
コード読むと穴だらけなのが使えないな

なんでわざわざフレームワークの穴埋めする必要があるのかとw
0509nobodyさん2008/02/18(月) 22:05:30ID:???
フレームワークに穴があるのか?
0510nobodyさん2008/02/18(月) 22:07:30ID:???
>>507
そりゃPDOを素で使うよりは重い
0511nobodyさん2008/02/18(月) 22:16:09ID:???
>>508
そういうのは、言い出した人が証明する義務を持つってのが
世の中の常識だってわかってる?
まあわかっていたらそんな中途半端なこと言わないと思うが。
05125072008/02/18(月) 22:19:43ID:???
>>510
やっぱそうですよね…
体感で明らかに違うくらい差がありますかね?
少しでも軽いシステムを作る場合は、Cakeは避けた方が無難
なのかな…便利そうで使ってみたかったけど…
0513nobodyさん2008/02/18(月) 22:23:52ID:???
少しでも軽いシステムを作るのなら、
C言語を使ったほうがいいよ。
0514nobodyさん2008/02/18(月) 22:24:12ID:???
>>512
>少しでも軽いシステムを作る場合は、Cakeは避けた方が無難
そうじゃない
少しでも軽いシステムを作る場合は、フレームワークは避けた方が無難
「少しでも」が何と比較してなのかはわからんが
0515nobodyさん2008/02/18(月) 22:39:15ID:???
少しでもリクエスト数への耐性稼ぎたいなら自前でキャッシュさせたり
静的HTML吐いたりとか検討すべきだし
0516nobodyさん2008/02/18(月) 22:41:31ID:???
そんなことより少しでも早く
システムを作ってさい。
0517nobodyさん2008/02/18(月) 22:54:50ID:???
フレームワークはCakePHP使ってるけど
俺俺関数はすべてc言語でPHP拡張モジュールにして利用してるよ
高速化と利便性を意識してやってる


0518nobodyさん2008/02/18(月) 23:09:21ID:???
>>511

証明するもなにも使えばすぐわかる

セキュリティホールが簡単にできてしまう
基本的なDB関係やパラメータの受け渡しで穴がある

もちろん気をつければいいんだが
フレームワークでそんなとこに気をつけなきゃいけない
というのがちょっといまいち

素人がセキュリティホールだらけのサイトつくりまくって
PHPの糞さを助長しなければいいのだが
0519nobodyさん2008/02/18(月) 23:09:23ID:???
>>504
マニュアルぐらいちょろっと読んだほうがいいよ
0520nobodyさん2008/02/18(月) 23:10:50ID:???
あれもこれもと親切すぎるわりに
規則に統一性がなく 中途半端な感じ

まあオープンソースの宿命といえばそれまでだけどね
0521nobodyさん2008/02/18(月) 23:11:32ID:???
>>518
だからさ、証明するのはあんたの仕事なんだって。
0522nobodyさん2008/02/19(火) 00:55:22ID:???
CakePHPのテーブルの命名規約って面倒なんだけど、
例えばtable1、table2ってテーブル名があったら、
table1s、table2sってしても大丈夫?
0523nobodyさん2008/02/19(火) 01:27:54ID:???
>>521

証明しないとわからない人間が使うとどうなるか…

PHPは糞言語っていわれるのがおちだなあ

1.3くらいでもうちょい使いやすくなってるといいな
0524nobodyさん2008/02/19(火) 01:35:39ID:???
>>523
だから説明する義務があるんだってば
何話すり替え店だよwww
0525nobodyさん2008/02/19(火) 01:56:18ID:???
そんなテーブル名のシステム投げ捨ててしまえ
0526nobodyさん2008/02/19(火) 02:14:54ID:???
Cakeとかの名前の付け方を見てて
つくづく英語の複数形という考え方はすごいと思うよ。
05275222008/02/19(火) 03:15:24ID:???
>>525
いや、まじで数字の入ったテーブルがあって、それを複数形にしなくちゃいけないんだよ(つД`)
可能かどうかわかる?
0528nobodyさん2008/02/19(火) 03:30:47ID:???
複数形にしようが単数形のままだろうが、
まったく違う名前にだろうが自由自在。
0529nobodyさん2008/02/19(火) 04:19:11ID:???
語尾が数字の場合は
table1 なら TableFirsts
table2 なら TableSeconds
table3 なら TableThirds

になるらしい
05305222008/02/19(火) 07:30:26ID:???
>>529
さんきゅー!!それでいってみます!
0531nobodyさん2008/02/19(火) 12:02:14ID:???
>>530
ウソなのに気づかないなんて
ホント馬鹿ですねw
0532nobodyさん2008/02/19(火) 14:11:35ID:twNHgR++
>>531
ホラっ、そんなこと言っちゃダメっ!w
0533nobodyさん2008/02/19(火) 20:39:50ID:???
>>518
>基本的なDB関係やパラメータの受け渡しで穴がある

それ結構重要な話だからkwsk
0534nobodyさん2008/02/19(火) 21:00:41ID:???
ヒント
SQLという言語には穴があるといわれている。
0535nobodyさん2008/02/19(火) 21:33:04ID:???
何を言ってるのかさっぱりわからないんだけど、
要するにフレームワーク自体にSQLインジェクションの脆弱性があるって事?
kwskkwsk
0536nobodyさん2008/02/19(火) 21:40:29ID:???
>>535
Qという文字に穴が開いてるだろうがバカw
0537nobodyさん2008/02/19(火) 23:27:20ID:???
何その程度の低さ
0538nobodyさん2008/02/20(水) 08:44:17ID:???
ここらあたりのことかな?
http://www.1x1.jp/blog/2007/07/cakephp_operator_injection.html
0539nobodyさん2008/02/20(水) 09:48:22ID:???
>>538
もしそれのことを穴とか言っているんだとしたら、
あまりに低レベルすぎて笑うんだがw
0540nobodyさん2008/02/20(水) 10:16:32ID:???
>>539
超典型的なSQLインジェクションの穴だし、たしかに低レベルだなw
ちなみにh()もhtmlspechalcharsに丸渡ししてるから、
htmlエスケープの穴も塞がれてない
0541nobodyさん2008/02/20(水) 13:04:12ID:???
>>540
笑うのは、これを穴といっている奴のことな。

たとえば、SQLインジェクションを、SQLの穴という奴はいない。
SQLを使って作った奴の問題。

世の中のRDMS用のどのライブラリ・フレームワークもSQLを直接実行できる。
だから、すべてのライブラリ・フレームワークに穴がある。といったら
馬鹿にされるぞ。

余りにも低レベルな奴だとな。
0542nobodyさん2008/02/20(水) 22:13:50ID:???
高レベルな穴とかあるん?
0543nobodyさん2008/02/21(木) 00:53:32ID:???
>>541
おまえも含めて
レスのレベル低くなってきてるぞ
くだらん話しを広げすぎ
0544nobodyさん2008/02/21(木) 00:56:20ID:???
>>541
低レベルとか相手の感情を引き出すような言葉は使うな
レスが荒れる

0545nobodyさん2008/02/21(木) 00:58:38ID:???
まともな反論が無い時点で、アフォなのは間違いないなw
あぁ。穴といっているやつがね。
0546nobodyさん2008/02/21(木) 01:19:19ID:???
>>544
もう発端や経緯抜きで、荒れさせたいだけなんだろう
0547nobodyさん2008/02/21(木) 01:36:27ID:???
>>538

それもそだねえ
h関数も同様

少なくとも この辺りの対策はフレームワークに組み込まれるべき部分
でなければ自分で書くのと大差ないわけだし

他にもDBが外部から更新されるパターンがけっこうあるよねえ
低レベルとか言っているやつがいるが
その低レベルな穴をふさぐのもフレームワークの役目

同じことやるなら 自分で書けばいいんだしな

問題なのは 独自の変なルールくっつけているわりに
そういう部分に手抜きがあるということ

そして 手抜きがあるところもあれば きちんとしているとこもある
ようは 今のCakePHPは中途半端なのね

ZendやCIのほうが変なルールがない分 作りやすいかもねえ
できたコードも見通しいいしね
0548nobodyさん2008/02/21(木) 01:46:39ID:???
フレームワークばっかいらんわ!次から次へと乱立しやがって
なんぼほど覚えることが増えんねん、いい加減にせーよボケ!!
0549nobodyさん2008/02/21(木) 02:44:48ID:???
別に増えたって無視すりゃ良いじゃん。
それとも仕事で嫌々使わされてるクチか?
0550nobodyさん2008/02/21(木) 08:17:06ID:???
ちょっと質問

Cakeで外部キーはテーブル名単数形_id(例えばuser_id)とする、といったルールになってるけど、
例えばusersテーブルのidじゃなくて、usersテーブルのuseridをuser_idに引っ張ってきたいときは
どうしたらいいですか?
usersテーブルのプライマリキーをidからuseridに手動変更するとか?
それでもuser_idに自動的に引っ張ってこれますか?
0551nobodyさん2008/02/21(木) 08:41:53ID:???
>>550
Cakephpのアソシエイトの項目よく読んだかお前?
0552nobodyさん2008/02/21(木) 09:46:20ID:???
>>547
必死だなw
これは穴とは言わない。これが穴なら他のフレームワークにもあると
何度も言われてまだわからないのかw
0553nobodyさん2008/02/21(木) 11:29:25ID:???
>>552

読んでわからなければ
きみが低脳ってこと

以上
0554nobodyさん2008/02/21(木) 12:43:43ID:???
やっぱり悪口だけで「具体的な反論」はできないんだなw
証明する義務は、穴があると言い出した側にある。以上。お前の頭は異常w
0555nobodyさん2008/02/21(木) 13:06:05ID:???
ソース読んでも穴がわからない低脳乙
0556nobodyさん2008/02/21(木) 13:10:53ID:???
そういう時はね。どのファイルの何行目って
ちゃんと言わないと相手にしてもらえないよ。

お母さんに教えてもらわなかった?
0557nobodyさん2008/02/21(木) 13:22:36ID:???

今必死にファイル検索中・・・・


見つからなかったから遠吠え↓
0558nobodyさん2008/02/21(木) 14:57:01ID:???
馬鹿の遠吠えだと思うんならスルーしてください。
ただの煽りあいでどっちも荒らしにしか見えませんよ。
0559nobodyさん2008/02/21(木) 19:07:43ID:9HKLO2wF
私もちょっと質問です。

複数のお店が複数のアイテムを販売し、不特定多数のユーザーがそのアイテムを
「お気に入り」に入れる。で、ユーザーがお気に入りを閲覧した時に
アイテム一覧では無く、お店一覧を出したい場合どうしたら良いんでしょうか?

補足:
お店とアイテムはhasManyでアイテムからお店はbelongsToな関係で、
ユーザーとお気に入りはhasOneでお気に入りからユーザーはbelongsToな関係
お気に入りにはアイテムのIDとユーザーのIDが記録されている。
お気に入りとアイテムはhasManyもしくはHABTM(まだこれを使う意味が分かってません)
これら四つのテーブルに対するモデルは作成済み

SQL的に言うと
SELECT * FROM companies
WHERE id IN (
SELECT company_id
FROM items
WHERE id IN (
SELECT item_id
FROM favorites
WHERE user_id = '$this->User->field()で取り出したusersテーブルのID'
)
)

SQLで書くとこれだけですむ問題なのですが、
うまくデータを引き出せず、かといってFavoriteモデルから取り出した後でforeachで
Companyの情報を取り出すといった事はやりたくないですし。。

どなたかご教授頂けないでしょうか。
0560nobodyさん2008/02/21(木) 20:12:27ID:???
User->Favorite->Item->Company
なんだから手っ取り早くやるなら
User->Favorite->recursive = 2;
User->Favorite->findAll('user_id = '.$userID);
でいいんじゃないの

ていうかユーザーとお気に入りがhasManyでお気に入りとアイテムがhasOneな
気がしないでも無いけど
0561nobodyさん2008/02/21(木) 20:13:15ID:???
>>559
ざっと読んで答えるが、
お気に入り->アイテム->お店
ってアソシエーションも逆から設定しておけばいいんじゃないの?

お気に入りをテーブルから取り出したら、芋づる式に取り出せるように。
0562nobodyさん2008/02/21(木) 20:15:21ID:???
アイテムとお気に入りの関係まちがいた
アイテムがお気に入りをhasManyでお気に入りがアイテムにbelongだ
0563nobodyさん2008/02/21(木) 21:06:15ID:9HKLO2wF
>560-562
>アイテムがお気に入りをhasManyでお気に入りがアイテムにbelongだ
レスありがとうございます。確かにお気に入り、アイテムの関係でみるとそうなりますね。

ただお気に入りにはアイテムのIDが当然格納しているので当然belongsの設定が出来ますが、
アイテムにはfavorite_idは持ってないのですが、hasManyの設定って出来るものなのですか?

後データとして取得したいのは$data[*]['Company']という形なのですが
教えて頂いた方法を実践したとしても$data[*][Item]['Company']という形になりませんか?
だとすると受け取ったCompanyデータは重複する可能性がありますのでその辺制御してやらんと
駄目だと思うのですが、間違ってますでしょうか。


関係ないのですが
$this->User->Favorite->findAllって書き方出来るのですね。初めて知りましたorz
05645592008/02/21(木) 21:11:32ID:???
あ、上げちまいました。すんません。
0565nobodyさん2008/02/21(木) 21:33:52ID:???
マニュアルやらブログチュートリアルやら見て関連キーの書き方をもう一度確認すべし
あとどういうデータで返って来るかは自分でdebug($data);でも書いて確認するんだ
気に入らない形だったら自分で整形しろ
それで得たノウハウはここか自分のブログにでも書けばみんなしやわせ
0566nobodyさん2008/02/21(木) 23:04:08ID:???
俺ならさっさとquery()使うな。
0567nobodyさん2008/02/21(木) 23:22:30ID:???
思ったんだけど、お気に入りにshop_id入れるってのもアリだな。
というか引っ張り出すデータを軽くしたい時はそうしてる。
0568nobodyさん2008/02/21(木) 23:35:28ID:???
>>566

cake使う意味あるの?w

↑でもでてたけどアマチュア向けのFWだし
自分で書くなら他のがおすすめ
05695592008/02/22(金) 01:11:47ID:???
冷静に読んだら可笑しな事書いてますね。ちと整理をかねて勉強し直してみます(納期許す範囲でw。

>566
私もイラっと来てquery使おうとしてたんですが、ページングしたかったので
とりあえず今はpaginateにWHERE句の後ろ全部渡す形にしちゃってますorz

皆様どうもありがとう。
0570nobodyさん2008/02/22(金) 01:16:58ID:???
あ、リロードしてなかった。
>567
設計上可能ですし私もそれ考えたのですが、
なんかそれをやると負けた気がして迷走してましたw
0571nobodyさん2008/02/22(金) 01:31:38ID:???
>>570
正しいか分からんけど、ロジックシンプルになるし、データも少なくなるしそれでいいんじゃん?
あとはmysql(ver5.1以上)のviewを使うのもありかもね。
0572nobodyさん2008/02/22(金) 05:41:42ID:???
大規模にも対応できるフレームワークはsymfonyてのがようやくわった
CakePHPのアソシエイト部分が小規模向けに設計されてる
GoogleCodeSearchで中規模程度のソースを結構見たが
大規模化するとかアソシエイト部分が、かなり複雑になっていて
とてもチーム分担できるようなソースでは無くなっている
symfonyはここが簡潔でわかりやすい
0573nobodyさん2008/02/22(金) 09:25:21ID:???
symfonyにはアソシエイトが無い。
だからCakePHPでアソシエイトを使わなければいいだけの話。
0574nobodyさん2008/02/22(金) 09:53:35ID:???
>>573
アソシエイトの意味をわかってないんじゃ。。。
0575nobodyさん2008/02/22(金) 11:55:57ID:???
モデルで共通のライブラリ的な機能を呼び出すとき
CakePHP的にはどうするのが一番いいの?

モデルからコンポーネントを無理やり使う?
ビヘイビアってライブラリというよりか
フックを入れるものだからちょっと感じが違うよね。
0576nobodyさん2008/02/22(金) 12:22:47ID:???
app_model.phpに入れるんでよくね?
0577nobodyさん2008/02/22(金) 13:09:39ID:???
>>576
たとえば、ファイル読み書きライブラリを使うとして、

$handle = $model->fopen($file)
$model->fputs($handle, $data);

とか気持ち悪いとか思わない?
継承関係になってないんだよね。

$model->findAll (このモデルのデータを検索する)
$model->save (このモデルにデータを保存する)
$model->fopen (このモデルとは関係ないが、ファイルをオープンする)
$model->fputs (このモデルとは関係ない、ファイルに保存する)
0578nobodyさん2008/02/22(金) 13:47:10ID:???
それは気持ち悪い
ファイルの読み書きだったら一個モデル作ればいいんじゃね?
モデルってデータの入出力であってモデル=DBのテーブルってわけでもないし
05795782008/02/22(金) 14:02:56ID:???
cakephp的とか考えずにvendorsに入れちゃうのが早いし簡単だけどな
0580nobodyさん2008/02/22(金) 14:48:32ID:???
>>578
今回はファイルを例にしたけど、
そういう汎用的なライブラリって使うでしょ?

そういうのはどうやって使うのがCakePHP的なのかなぁって。

vendersに入れるってことは、

 vendor('aaa/bbb');
 class MyModel extends AppModel {
  function foo() {
    $lib = new Lib();
  }
 }
こんな感じで使うってこと?
0581nobodyさん2008/02/22(金) 14:58:48ID:???
vendorsを使うとして、そうしたら、Vendorsに入れて使えば、
コンポーネントいらないんじゃね?と思えてきた。

コンポーネントは何の為に使うんだろう?
呼び出したコントローラを参照する必要がある場合?

すると汎用的なライブラリはvendorを使ったほうがいいのかな。

たとえばメール送信(1.2のEmailComponent)は
コンポーネントではなく、vendorにするべきじゃないかと思えてきた。

バックグラウンド的にモデルに変更があったらメールするなんて用途もあるだろうし。
そういう場合でもモデルを変更するコントローラで一旦変更を感知して
そこからメールするのがいいのだろうか?
0582nobodyさん2008/02/22(金) 15:02:32ID:???
コントローラ、モデル、(ビューも?)のどこででも使える
vendorsプロパティがほしいな。

class My extends ? {
 var $vendors = array('Aaa', 'Bbb', 'Ccc');
 function foo() {
  $this->Aaa->foo();
 }
}

あとpluginsってフォルダを使っている例を見たことが無い。
0583nobodyさん2008/02/22(金) 16:17:35ID:???
だから"べき"論でいけばMVC意識して書けよ
それがめんどくさいなら無節操にvendors使えばいいだろ
0584nobodyさん2008/02/22(金) 16:32:00ID:???
>>583
うん。それじゃ「べき論」をするということ前提で話を進めましょうか。

どうするのが一番いいのだろうか?
0585nobodyさん2008/02/22(金) 16:44:03ID:???
正統派な方法としてはコンポーネントじゃないの?
>>576でもいいけど、正統派じゃないでしょ。
0586nobodyさん2008/02/22(金) 18:13:20ID:???
Railsに移行したらいいのに
0587nobodyさん2008/02/22(金) 19:13:52ID:???
>>585
モデルでコンポーネントを使うという意味?
でも、フォルダからしてコンポーネントはコントロールの下にあるし、
なによりモデルでコンポーネントを使う方法が無いでしょ?
App::importで強制的に読み込むしかない。
0588nobodyさん2008/02/22(金) 19:14:27ID:???
>>586
railsが格安共有サーバーでも公式に動くようになったらねw
0589nobodyさん2008/02/23(土) 09:31:23ID:???
CakePHPは小規模向き、アソシエイト機能見て笑ったし
将来性無いなと判断する決め手になった
後はデータがオブジェクトじゃなくて配列処理してるとこね
これも、かなり小規模を前提として設計してるよね
0590nobodyさん2008/02/23(土) 09:40:42ID:???
ドキュメントの多さ大規模に向いてるsymfonyが
PHPフレームワーク主流になると思う
有名どころの大手ならCakePHPはいれない
これは断言できる、
少人数、小規模設計だから当然

半年くらいCakePHPでコーディングしてきたけど捨てるよ
CakePHP指定の案件が将来望めない
symfony案件が増加するのは間違いない

0591nobodyさん2008/02/23(土) 10:34:07ID:???
mozillaサイトにCakePHP!
http://cakephp.seesaa.net/article/31425210.html
0592nobodyさん2008/02/23(土) 13:14:45ID:???
>>589

だね

途中荒らしてるやついたが
なんであんなに必至なのかな

まあ初心者には簡単だしおすすめだけど
cakephpのサイト探すと穴空いたままで公開してるとこ多いな
0593nobodyさん2008/02/23(土) 14:17:27ID:???
急にアレな人が増えたな
0594nobodyさん2008/02/23(土) 14:20:55ID:???
>>593
仕方ないよ。穴がすきなんでしょw
0595nobodyさん2008/02/23(土) 14:22:47ID:???
俺用メモ

$db =& ConnectionManager::getDataSource('default');
$db->query('select * from table', false); ←二つ目の引数はキャッシュを使わないという意味
0596nobodyさん2008/02/23(土) 16:47:47ID:???
そもそも現時点で大規模で高負荷なサイト向きだと思っていた人がいるの?
そりゃ単に調査不足だろ
0597nobodyさん2008/02/23(土) 21:18:01ID:???
メソッド内で global $hoge ; とかしても null なのですが・・・
何かやり方間違ってますか?

例えば
配列を書いたファイル:data.php
<?php
$hoge = array( "a", "b", "c" ) ;

コントローラ:users_controller.php
<?php
include_once( "data.php" ) ;
class UsersController extends AppController
{
var $name = "Users" ;
var $uses = array( "User" ) ;

function index()
{
global $hoge ;
var_dump( $hoge ) ;
}
}
0598nobodyさん2008/02/23(土) 22:31:22ID:???
CakePHPは小規模でもかなりの小規模
たとえるなら、携帯の掲示板レベル
0599nobodyさん2008/02/23(土) 22:33:28ID:???
1年後にはレンサバ環境もPHP5が標準になるだろうから
そうなればsymfonyが敵なし状態だろうな
0600nobodyさん2008/02/23(土) 23:06:46ID:???
分かったけどここってcakephpのスレだよ?
0601nobodyさん2008/02/24(日) 14:48:47ID:???
使いたくないヤツは使わなければいい。それだけ。
チンポニーでも禅度でも好きなの使え。
0602nobodyさん2008/02/24(日) 21:59:28ID:???
cakephp v2はphp5&6専用になるよ

0603nobodyさん2008/02/24(日) 23:00:15ID:???
それは困るよかがみん(笑)
0604nobodyさん2008/02/25(月) 04:09:58ID:???
cakeの1.2でrestを実装したいんだけど
xmlの処理ってどこで実装するのが良いの?
viewにべた書きは嫌なんだけど
0605nobodyさん2008/02/25(月) 11:49:58ID:???
じゃあモデルで。
0606nobodyさん2008/02/25(月) 17:42:18ID:6F5pnXqd
cakeで自分の考えたクラス構造を実装するのはコンポーネントを使えばいいんですか?
MVCの奥でデザインパターンみたいな構造にしたいんですけど。
0607nobodyさん2008/02/25(月) 20:05:46ID:???
どのパターンかによるだろう
0608nobodyさん2008/02/25(月) 20:18:02ID:???
フォームからGETでデータを送りたいのですが、URLに「?」や「フィールド名」が付きます。

URL/データ/データ

このような感じでデータだけを送ることはできませんか?

0609nobodyさん2008/02/25(月) 22:41:02ID:???
>>608
俺はGETがきたら、名前つき引数形式のURLに変換して
リダイレクトをするコンポーネントを作った。
0610nobodyさん2008/02/25(月) 23:59:12ID:???
>>608
onsubmitでJavaScriptを呼び出してフォームのURLを動的に作成したらいいんじゃない?
0611nobodyさん2008/02/26(火) 00:24:55ID:???
>>609
>>610

アドバイスありがとうございます。

http://hogehoge/sales/1

というページから、

http://hogehoge/sales/1/2008/02

みたいにフォームを利用してさらに期間を絞り込むようなことをやりたかったのですが、
結局新しい別のビューでやることにしました。
0612nobodyさん2008/02/26(火) 12:54:22ID:???
俺俺クラスってどこに入れれば良いの?
vendor?
0613nobodyさん2008/02/27(水) 10:41:56ID:pFPJf0/n
コントローラからビューにパラメータをわたすにはどうすればいいのでしょうか?
0614nobodyさん2008/02/27(水) 12:51:45ID:???
モデルのreadとfind系(findById等)の違い。

$model->readを実行すると、$model->data に読み込んだデータが入る。

$model->findByIdだと$model->dataの値はそのまま。

確認したし、多分あっていると思うが、
これの違いを明確に書いてあるところあるかな?
0615nobodyさん2008/02/27(水) 13:12:36ID:???
>>613
1.2しか知らないけど
controller
$this->set('hoge','aiueo');

view
echo $hoge;
0616nobodyさん2008/02/27(水) 13:30:21ID:pFPJf0/n
>>615
すいません。間違えました。

コントローラからヘルパーにパラメータをわたす方法でした。
0617nobodyさん2008/02/27(水) 15:08:46ID:???
readで二つ目の引数指定してやると$model->idも入る
ソース見たまんまだけど
0618nobodyさん2008/02/27(水) 16:57:50ID:???
>>616
ヘルパーって要はviewじゃないの?
0619nobodyさん2008/02/27(水) 17:06:01ID:???
>>618
違うよ。ぜんぜん違うよ。
0620nobodyさん2008/02/27(水) 17:54:15ID:???
618の意見に賛成。

ヘルパー
function test($hoge){
echo $hoge;
}

コントローラー
$this->set('hoge','てんこもり');

これでとりあえずビューにわたるだろ?
んで、ビューからヘルパーを呼ぶと。

$helper->test($hoge);

こんで $hoge の内容が表示されますよっと。
0621nobodyさん2008/02/27(水) 19:02:44ID:???
ヘルパー使うビューの頭で

<?php $helper->init($settings); ?>

初期化命令を毎回呼べと?
0622nobodyさん2008/02/27(水) 19:23:49ID:???
$controller->set('settei', $settei);
ってビューに渡しておいてビューの頭で
$helper->settei($settei);
ってヘルパーに渡してるよ俺の場合
なんかバカっぽいけど。

App::import('Helper', 'MyHelper');
$myhelper = new MyHelper();
$myhelper->settei($settei);
$controller->set('myhelper', $myhelper);

なら渡せないことも無かったけど、MyHelperの中でHtmlHelperやFormHelper呼ぼうとしたら
自動でうまく呼び出せなかったからやめた
MyHelperの中で$this->Html = new HtmlHelper();とか手動でやってやればよかったのかな
そのときは思いつかなかったからやってないけど
0623nobodyさん2008/02/27(水) 20:00:22ID:pFPJf0/n
えーとお決まりですが、



自己解決しました(笑)
0624nobodyさん2008/02/27(水) 20:01:37ID:WlN8JrV2
CakePHPを使ってる人でビューはSmartyを使用してる人ってどのくらいいますか?また
それぞれの印象を聞いてみたいです。

俺もCakePHPを使い始めた当初からSmartyを使ってきてる一人なのですが、なんだか
実は結構めんどくさかったりする割に従来のPHP記述でのビューに比べてあんまり
パフォーマンス良くない気がしてきたもので。(例えば、ヘルパーに配列を渡す場合
Smartyでのビューだと細々とめんどくさかったり)
0625nobodyさん2008/02/27(水) 20:29:10ID:???
smarty使うならpear使っておれおれフレームワークでよいじゃん
0626nobodyさん2008/02/27(水) 21:24:24ID:WlN8JrV2
>>625
なに?おれおれフレームワークって?
知り合いがZend FrameworkのMVC(この場合はV)をCakeで使ってたけど、あれは意味ねえなあ

0627nobodyさん2008/02/27(水) 21:25:22ID:pFPJf0/n
つっこみなしか。さびしいなぁw

家に帰るのでIDかわるから、あきらめて説明すると、

コントローラで
$this->params['hoge'] = $data;
に値設定。

ヘルパーからも、$this->params['hoge']にアクセスできる。


$this->paramsを受け渡しに使うのってどうよ?と思うかもしれんが、
paginationもにたように、params['paging']を使っているからいいだろう?

他にClassRegistryを使ったやり方があって、FormHelperとかは
これを使っているみたいだが、なんかグローバル変数あつかっている感じがして却下。

もう一つ、Viewを継承した独自のビューでごちゃごちゃ変数わたしても
できるかもしれんが、余計なものを作らないといけないので却下。
0628nobodyさん2008/02/27(水) 21:49:42ID:???
おれおれってのはお手製で世の中に広まってない独自のもの
0629nobodyさん2008/02/28(木) 02:37:50ID:???
hasManyとかbelongsToとかmodelにいれとくと
$model->findAll()するとき、有無を言わさずjoinしてるみたいなんだけど
これってなんとかならんのかね。

railsだとfind(:all,:include = ...)で指定したときだけjoinとかするじゃん。
0630nobodyさん2008/02/28(木) 09:05:16ID:???
>>629
常識です。
なんとかなりますので、ぐぐってください。
0631nobodyさん2008/02/28(木) 14:04:49ID:???
>>629
>>519

0632nobodyさん2008/02/28(木) 15:35:27ID:???
Model::recursiveって1行で書けよ。
0633nobodyさん2008/02/28(木) 17:41:50ID:???
>>632 それだけじゃないけどね
0634nobodyさん2008/02/28(木) 20:45:21ID:???
つ unbindModel
0635nobodyさん2008/02/29(金) 08:40:00ID:???
将来性のないフレームワークをブームということで一生懸命に習得してるやつwwww
時間の無駄やろ。



0636nobodyさん2008/02/29(金) 08:42:38ID:???
大衆は常に誤った方向へ行くからな
頭のいい人間が少人数しかいないから
正しい方向に行くのは常に少人数
0637nobodyさん2008/02/29(金) 09:13:18ID:???
世の中将来性がないと思われていたものが
主流になっている罠w
0638nobodyさん2008/02/29(金) 09:16:04ID:???
困るのはその馬鹿だけでいいな
0639nobodyさん2008/02/29(金) 09:21:43ID:???
中国も餃子問題も同じ
反日感情が大衆を間違った方向へ進ませている
CakePHPも同じ
0640nobodyさん2008/02/29(金) 09:25:37ID:???
CakePHPは今年で無くなるであろう
小規模フレームワークは乱立しやすく
次から次へと良いフレームワークが出来る
大規模フレームワークはやはり規模がでかいから
乱立しにくい
どうせなら覚える量は少ない方がいい
そう賢い人間の選ぶ答えはsymfony
0641nobodyさん2008/02/29(金) 09:26:48ID:???
ここでいう覚える量というのは
フレームワークの数分という意味だからね
0642nobodyさん2008/02/29(金) 09:29:16ID:???
以前は活気のあったmojaviスレが廃れてるのを見れば
CakePHPも同じ道に行くのはわかるだろう
小規模フレームワークの世代交代は1年単位なんだよね
0643nobodyさん2008/02/29(金) 09:32:31ID:???
データ渡しがオブジェクトじゃないのがなあ
簡単な掲示板レベルのものしか作れないね
だから今後も有名どころのCakePHP採用実績はありえないよね
だから廃れるのも速い、その理由からも今年で終わりクセー
0644nobodyさん2008/02/29(金) 09:35:28ID:???
http://d.hatena.ne.jp/ichii386/20080221/1203527524
> firefoxのアドオンがおいてある、あのサイトが実はCakePHPで作られていたんだそうです。
0645nobodyさん2008/02/29(金) 09:40:00ID:???
>>642
以前は活気のあったmojaviスレが廃れてるのを見れば
お前の好きなフレームワークも同じ道に行くのはわかるだろう w
0646nobodyさん2008/02/29(金) 09:50:18ID:???
所詮 アマチュア向け

アマチュアも使えるきちんとしたFWなら生き延びるだろうけど・・・

CIに期待
0647nobodyさん2008/02/29(金) 10:14:57ID:???
CakePHPて小規模なクセに柔軟性がないよなwww
Viewでヘルパーのコンポーネントの呼び出し宣言出来ないとか
Viewで直接モデルをコントロール出来ないとかね
0648nobodyさん2008/02/29(金) 10:21:05ID:???
単純なロジックはincludeで呼び出し
複雑なロジックはコンポーネント化して呼び出し
複雑なロジックでかつ断片性が内容によってかわるならCakePHPはどうすんの?
0649nobodyさん2008/02/29(金) 11:20:41ID:???
symfonyのスロット機能には驚いた
なに、この便利な機能
CakePHP利用してからsymfony使うと
豊富な便利機能にただただ関心
0650nobodyさん2008/02/29(金) 11:22:31ID:???
ドキュメントもいい加減だし手抜きフレームワークだよね
作者やる気がないから将来性もクソもないがね
やる気のない社長がいる会社の株を買ってるのと同じだね
0651nobodyさん2008/02/29(金) 11:23:29ID:???
作者の気まぐれで
いつ開発中止するかわからんフレームワークをよく使えるなwww
0652nobodyさん2008/02/29(金) 11:24:22ID:???
symfonyは流行らないだろうな

アマチュアには敷居高いからね

流行らなければ廃れていくのは同じ
0653nobodyさん2008/02/29(金) 11:43:03ID:???
長い目で見れば、流行だけで中身の薄いものは確実に消える
フレームワークを次々乗り換えるんじゃなくて
期間的に長く使えるフレームワークしかいらない、
一見、CakePHPは効率よく見えるが
過去資産になりにくい時間の使い方は、非効率

0654nobodyさん2008/02/29(金) 11:50:01ID:???
0から小規模システムを作るならCakePHPが速いけど
0から作る案件はかなり少ない
スパゲッティソースでも
今までの過去資産をカスタマイズする方が圧倒的に速い
0655nobodyさん2008/02/29(金) 12:45:25ID:???
ねぇ、なんで最近symfonyの布教活発なの?
0656nobodyさん2008/02/29(金) 14:26:26ID:???
CakePHPより優れたフレームワークたくさんある
ただ知名度が優先して使ってる人が多くなってるだけ
0657nobodyさん2008/02/29(金) 14:31:12ID:???
初心者では扱いにくい難易度の高い
フレームワークが主流にならないと
初心者がフレームワーク出来ますとか
調子いい事を言うからな
初心者と経験者の差をはっきりさせて
初心者がすぐに食える状態を無くして欲しい
0658nobodyさん2008/02/29(金) 14:32:41ID:???
初心者向きの低フレームワークがCakePHP
高級志向の大人のフレームワークがsymfony
0659nobodyさん2008/02/29(金) 14:46:43ID:???
自分のスレいってやれよw
さびれてんだからさwww

13: フランチョスとsymfony (36) 
http://pc11.2ch.net/test/read.cgi/php/1201177567/l50
0660nobodyさん2008/02/29(金) 14:51:07ID:???
【徹底攻略を】symfony【徹底攻略】 (13)
http://pc11.2ch.net/test/read.cgi/php/1204113475/l50

一時期 symfony か CakePHP かって時期あったけど
これほどにまでsymfony 廃れてるとは知らんかった。

まあ、どうでもいいけど。
0661nobodyさん2008/02/29(金) 14:51:22ID:???
>>653
> 長い目で見れば、流行だけで中身の薄いものは確実に消える

それ具体的に何年後?

そりゃいつかは何もかも消えるだろうなw

そのときに、ほら消えた。俺の言っていたことは正しかったんだ。と
言えない様に、今何年後に消えるのか言ってもらおうか。

それまでに消えなければ、お前の言っていることは間違いだとはっきりする。
そのとき俺がおまえのことを思い出すことは無いだろうが、
少なくともおまえ自身は、自分の予測が外れたことを身にしみて感じるだろうw
0662nobodyさん2008/02/29(金) 14:59:47ID:???
縦読時「そ」が多い
0663nobodyさん2008/02/29(金) 20:34:53ID:???
その線でいくとPHPはどうなるぽ
0664nobodyさん2008/02/29(金) 23:39:58ID:???
すべてのページで使うような変数をまとめたファイルってどこでインクルードさせたらいいの?

core.phpに書いてるんだけど、これで問題ないですか?
0665nobodyさん2008/03/01(土) 00:37:40ID:???
俺なら、app/bootstrap.phpに書くかな。
app/core.phpはcakeの動作を変えるために設定を変えるだけで
自分で値を追加しないものと感じる。

もっとも「すべてのページで使うような変数」の内容によっては、
AppControllerにかいたりvendors以下にファイル作ってそこに書いたりする。


とここで、ふと、自分の作っているのを見たらapp/core.phpにも書いていたwww
といっても、ユニットテストのための追加設定だけどね。
0666nobodyさん2008/03/01(土) 12:28:11ID:uin8SgpQ
モデルの数値フィールドに、空文字を入力すると
データベースの値として、0が入ってしまうんですが、
これをNULLで代入させる方法ありませんか?

もちろんデーターベースのフィールドはNULL値が入るようになっています。
データベースはMySQL。クエリーとしては、
INSERTとかUPDATE 〜〜〜 number_field = '' という文が発行されています。

たしかデータベースによっては(Oracle?)、こういう場合null値を入れるやつも
あった気がしますが、汎用的な方法としてやりたいな。
0667nobodyさん2008/03/01(土) 14:35:44ID:???
更新対象の配列を未入力チェックして空だったらnullで置き換えてからsave
0668nobodyさん2008/03/01(土) 14:43:32ID:???
ユニットテストって使うのが当たり前なくらい便利なんでしょうか?

使ったこと無いので勉強したほうがいいのかなと思いまして。

先輩方、ご指導ください。
0669nobodyさん2008/03/01(土) 15:07:46ID:uin8SgpQ
>>667
それがですね。nullを入れてもだめなんですよ。
同じところで4989を代入したら強制的に値を4989に出来たので
間違いないと思うんですが。
0670nobodyさん2008/03/01(土) 15:20:41ID:???
それMySQL側の設定なんじゃないの
0671nobodyさん2008/03/01(土) 15:21:09ID:???
>>668
使っていると今までの手動テストがいかに怠けていたかがわかるよ。
今ユニットテストでやっているテストを手動でやれといわれたら泣く。

設計が固まってなくて大幅に変更するときとか、安心していじれるようになる。

ある操作をしてエラー → プログラム修正 → データ消してテストデータ入れる → もう一回同じ操作。

これを手動で何度もやらなくてすむ。操作が複雑になって、前提データが
複雑になると、もう一回同じ状態に戻して操作なんてやってられない。


あとちょっと変則的だけど、データベースの定義&その他の設定をYAMLを
使ってやっているのだが、そのスキーマのチェックにも使っている。
スペルミスとか細かいエラーに悩まされなくていいよ。

本当は、YAMLスキーマバリエータを使うべきなんだろうけど。
PHP用なさそうだし、どこまで出来るのか不安だったので。
(たとえば、名前規約、複数形でなければならないとか
このフィールドは違う設定ファイルに定義されてなければならないとか)
0672nobodyさん2008/03/01(土) 15:23:37ID:uin8SgpQ
>>670
多分、それもあるとは思います。

しかし、同じ設定のまま、phpMyAdminではnullを入れられます。
もちろんこのときに発行されるSQL文は、
INSERTとかUPDATE 〜〜〜 number_field = null ですね。

MySQL側で設定できたとしても設定は変えられないと思われるので、
アプリ側で対処したいのですが。
0673nobodyさん2008/03/01(土) 15:30:04ID:???
/controller/action/1/2/param1:a/param2:b?c=test1&d=test2

今、このようなアドレスにいるとして、
ここから、以下のようなアドレスを作り出す
一番シンプルな方法は何でしょうか?
(param1の内容だけを変えたいということです。)

/controller/action/1/2/param1:z/param2:b?c=test1&d=test2


URL文字列形式じゃなくて、params配列形式でもOKです。
むしろこっちのほうがいいです。
0674nobodyさん2008/03/02(日) 01:29:16ID:???
>>673
$thisをvar_dumpして必要な値で構成して、変更したいところを置き換えればいいんじゃない?
0675nobodyさん2008/03/02(日) 01:41:30ID:???
>>674
今それでやってますけど、これぐらいフレームワークが用意していてもよさそうじゃない?

関数名($this->params, array('named'=>array('param1'=>'z')))
ってな感じ。
0676nobodyさん2008/03/02(日) 02:35:41ID:???
>>671

ありがとうございます!ご丁寧に教えて頂いてうれしいです。
早速勉強したいと思います。
0677nobodyさん2008/03/02(日) 12:37:53ID:???
Akelosこれいいよ
ドキュメントが少ないからソース解析しながら大変だけど
この作業がわりと楽しい
理解を深めながらコーディングできる。
ちょっとした不具合でもデバッグ文でググるんじゃなくて
まずソース解析、こっちの方が正しくて速いことに気づいた
0678nobodyさん2008/03/02(日) 12:40:00ID:???
Akelosを調べあげるほどRoRとそっくりw
Akelos自体にドキュメント無くてもRoRと照らし合わせれば
ドキュメントが要らないくらい、完全コピーされてるw
0679nobodyさん2008/03/02(日) 12:42:47ID:???
AkelosはCakePHPの4倍くらいの作業効率が速い感じがする
なんで流行してないのかわからないwww
ドキュメント量が少ないと何も出来ない人が多いからか?
0680nobodyさん2008/03/02(日) 12:47:14ID:???
CakePHPのfindall(null,nullnull,nullnull,nullnull,nullnull,nullnull,nullnull,nullnull,nullnull,null)
これ見ると、もう萎える
どんだけブームでもOOPじゃないフレームワークはいらない
0681nobodyさん2008/03/02(日) 13:03:23ID:???
そんなソースなん?
キティガイすぎワロタ
0682nobodyさん2008/03/02(日) 13:05:31ID:???
馬鹿が自作自演しているので、本当の定義をさらしておきますね。
function findAll($conditions = null, $fields = null, $order = null, $limit = null, $page = 1, $recursive = null) {
0683nobodyさん2008/03/02(日) 13:06:44ID:???
ヌルヌルフレームワークwww
0684nobodyさん2008/03/02(日) 13:09:50ID:???
>>680
嘘つくなら、せめてコンマだけはちゃんといれようなw
null,null と打ってそれを適当な回数コピペしたのばればれだから。
0685nobodyさん2008/03/02(日) 13:14:03ID:???
メソッドの引数を持ち出して、OOPじゃないと言うってことは
Akelosはメソッドの引数がオブジェクトなん?

$params = new Parameter()
$params->setConditions(・・・);
$params->setFields(・・・);
$params->setOrder(・・・);
findAll($params)

いくら引数が少なくてもこんなのはいやだw
0686nobodyさん2008/03/02(日) 14:03:11ID:???
お前らいつの話をしているんだ。
1.2からfind系関数はfind()に全て纏められて、推奨引数もシンプルになっている。
http://bakery.cakephp.org/articles/view/new-cakephp-releases

簡単に言うと find($type, $options) この二つだけ。

$typeには文字列all, first, list, countなどが入る。
この指定でそれぞれfindAll(), read(), generateList(), findCount()に対応するようになった。

$optionsには検索条件を指定する連想配列を入れていく。
要するに、 >>682 の引数conditions, fields, order, limit, page, recursiveなどを纏めて管理できる。

CakePHPの投げやりな引数は少しずつ改善されつつある。
頭の悪い愚痴ばかり垂れる暇があったら記事読めば?
0687nobodyさん2008/03/02(日) 15:43:01ID:???
これからは、findメソッドを使ったほうがいいのかな?
0688nobodyさん2008/03/02(日) 15:43:59ID:???
CakePHPにまったく興味ない
0689nobodyさん2008/03/02(日) 15:50:03ID:???
>>686
readは違う。モデルのインスタンスはテーブルの一行に当たるんだが、

readは、この一行のデータをモデルに読み込むもの。
具体的に言うと、$model->dataが変更されるもので、

find系メソッドはクラスメソッドのような扱いで、
インスタンスの状態は変えずに、値を取得するもの。
0690nobodyさん2008/03/02(日) 17:48:14ID:???
select pc,count(pc) as cnt from pclists gloup by pc
こんな感じでgroup by使って集計ランキング作りたいときfind使ってる?




0691nobodyさん2008/03/02(日) 18:32:01ID:???
なんとなく類推して>>686っぽく書いてみた
$this->User->findByEmail('hoge', 'first', array('recursive' => 1));

発行されたSQL
SELECT "User"."first" FROM ほげほげ WHERE "User"."email" = 'hoge' ORDER BY recursive" 1 ASC LIMIT 1

SQL Error: 1: SQL logic error or missing database

よええ…
0692nobodyさん2008/03/02(日) 18:59:37ID:???
691が何をしたいのかさっぱりわからない。
06936912008/03/02(日) 19:11:42ID:???
$this->User->findByEmail('hoge', null, null, null, null, 1);
がどうにかなるのかなと思ったんだよ
もちろんこっちのヌルヌルならSQL通るよ
0694nobodyさん2008/03/02(日) 20:26:37ID:???
>>690

似たようなことをやってるんだけど、自分でSQLで書くようにしている。
0695nobodyさん2008/03/02(日) 20:45:48ID:???
find、findAllは比較演算子インジェクションの問題があるからfindBy系を主に使ってるけど
こちらは結局今までどおりヌルヌルで書くしかないってこと?
0696nobodyさん2008/03/02(日) 21:22:14ID:???
書きたくなければ自分でAppModelでオーバーライドしたら?
0697nobodyさん2008/03/02(日) 21:28:46ID:???
>>693
nullが一個多いぞ。お前使ってないで文句言ってるだろw

で、たった四つの引数でなにごちゃごちゃいってんの?w
0698nobodyさん2008/03/02(日) 21:31:13ID:???
gloup by 使うというか
カラム名をasで別名で使う場合は
直接SQL書かないとダメなんかな

select ここがカラム名だけじゃない複雑な場合 from test

は直接SQLがいいのかな
0699nobodyさん2008/03/02(日) 21:34:46ID:???
$this->User->findByEmail('hoge', null, null, null, null,null, null, null, null,null, null, null, null,null,1)
これがオブジェクト指向なん?wwwwwwwwwwwwwwwwwwwwwwwwww
0700nobodyさん2008/03/02(日) 21:35:58ID:???
まさにヌル指向言語ですな
0701nobodyさん2008/03/02(日) 21:43:22ID:???
>>696
>>686で書かれているfind系の新しい記述法がfindBy系に適用されるのかどうか
単に確認したいだけなんだけど
現状のCakeだと、findBy系の使用が推奨されること多かったから使ってる人も多いだろうし
0702nobodyさん2008/03/02(日) 23:02:02ID:???
>>688

なぜ、このスレにいるの?
0703nobodyさん2008/03/02(日) 23:24:35ID:???
>>699
また存在しない引数を勝手に増殖ですかw
0704nobodyさん2008/03/02(日) 23:48:57ID:???
ここでどんなに騒ごうが、流れは変わらないよなぁ。
自分のFWのスレいって有用な情報で賑わせればいいのに(´・ω・`)
0705nobodyさん2008/03/03(月) 00:12:48ID:???
考えてみれば、このスレの1は俺が立てたんだったなぁ。
そうか、1年前以上も前からはじめてたんだな。
このスレ立てて正解だった。

あれから俺もずいぶんと成長したな。
いまじゃユニットテストもちゃんと使えるようになったし。

Akelosは名前もすっかり忘れていたが、こっちも俺が立てたんだったなw
こっちは残念ながらぜんぜん伸びず。

たぶんね。俺がつかって色々書いているからスレ伸びてるんだと思うよ。
Symfonyはたぶん、4月ぐらい?から俺が使うから伸びると思うよ。
PHP4対応を考慮しなくて良い、個人的なソフトで使う。
それまで、我慢してくれよ。
0706nobodyさん2008/03/03(月) 00:17:28ID:???
ヌル指向言語
0707nobodyさん2008/03/03(月) 00:27:38ID:???
Akelosはヌルを使用しない完全オブジェクト指向。
引数は全部ひとつだけしかない。

foo(array('hiki1'=>1, 'hiki2'=>2, 'hiki3'=>3))
0708nobodyさん2008/03/03(月) 01:08:53ID:???
どんだけクソなフレームワークでも人気が出れば
それについていくしかない。
英語が言語的に最低でも、みんな英語使ってるなら使うしかない
0709nobodyさん2008/03/03(月) 01:50:22ID:???
http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%90%E3%83%87%E3%82%A3
0710nobodyさん2008/03/03(月) 01:51:11ID:???
すみません、誤爆しました。
0711nobodyさん2008/03/03(月) 01:58:44ID:???
【PHP】ヌルームワーク CakePHP 2ぬめり目
0712nobodyさん2008/03/03(月) 02:57:27ID:???
どんなスレでも湧く粘着ってある意味すごいなと思う今日この頃
0713nobodyさん2008/03/03(月) 08:09:27ID:???
>>709
カバディカバディ
0714nobodyさん2008/03/03(月) 13:22:21ID:???
ComponentからModelを直接参照するのって
設計的にどうなん?
0715nobodyさん2008/03/03(月) 13:37:57ID:???
戯れにdatabase.phpファイルの
var $default = array('driver' => 'mysql',

var $default = array('driver' => 'postgres',
に変更したらまあ当然の様にエラーが出た。

Warning: mysql_connect() [function.mysql-connect]: Unknown MySQL server host 'host='example.com' port='5432' dbname='bakesale' user='watashi' password='hogehoge'' (11004) in C:\www\temp\cake\cake\libs\model\dbo\dbo_postgres.php on line 90

しかし、
var $default = array('driver' => 'mysql',
に直しても何時までも上記エラーが出てしまう。
cakePHPでは一度読み込んだ設定ファイルをどっかに溜めてたりするのかな?
教えて下さい偉い人!
0716nobodyさん2008/03/03(月) 14:32:56ID:???
DBからデータを引っ張ってきて、表示するときはループで表示することが多いですよね?

そこでなんですが、ループで回しやすいように配列を整えると思うのですが、この作業はどこでやるのが正しいんですか?
コントローラ/ビュー/ヘルパーどこがよいのでしょう。
0717nobodyさん2008/03/03(月) 16:40:58ID:???
基本はコントローラ以外にロジックを書くべきじゃないと思ってる。
っていうかそればMVCの基本だよね?
0718nobodyさん2008/03/03(月) 17:36:05ID:???
俺はHTMLの生成は全部ヘルパーでやってるな。
コントローラーはバリデーションして、モデルからデータを取得して、ビューに変数をセットするだけなんじゃないの。

0719nobodyさん2008/03/03(月) 18:11:48ID:???
>>718
htmlの生成じゃなくて、データの整理の話じゃないの>>716が言っているのは・・
0720nobodyさん2008/03/03(月) 19:05:23ID:???
おまえはほんとうにバカだなwwwww
0721nobodyさん2008/03/03(月) 19:21:11ID:???
質問なのだけど、
MingやGDのような外部ライブラリと、それを操作する関数群をCakeに持ってくる場合
ライブラリは当然app/vendorsフォルダに入れれば良いと思うのだけど、
関数群の方はどうしてやるのが良いんだろう?
呼び出し元が二か所になるので、呼び出し側のコントローラにベタでは書きたくないので

そうするとこいつもvendorsの中に入れてコントローラ内でvendor()で呼ぶのか
それとも専用コントローラを作るのか。はたまたコンポーネント?

ちょっと知恵を貸して下さい。
0722nobodyさん2008/03/03(月) 21:01:55ID:???
多分Cakeに限って言えば俺俺クラスもCake式に使えないならvendorになる。そもそも外部というのは自分以外という意味じゃなくCake式に拡張した(例えばコンポーネント)もの以外を使いたい場合に利用するのが作法だと解釈してる。Cakeからしてみたらどっちも外部だからね
0723nobodyさん2008/03/03(月) 21:06:07ID:???
>>714
コンポーネントってMVCでいうところのコントローラなんだから
そこからモデルを直接参照しないで何するんだ?
$Component->Controller->Modelだときもちわるくね?
0724nobodyさん2008/03/03(月) 23:13:06ID:???
>>717
> 基本はコントローラ以外にロジックを書くべきじゃないと思ってる。
> っていうかそればMVCの基本だよね?

ぷっ。3ページ目のBad Cakeそのものですねwwww
http://cakephp.org/files/OCPHP.pdf
0725nobodyさん2008/03/04(火) 00:50:21ID:???
>>724
うーん?モデルに含めるって事?
良く分かんないな
07267212008/03/04(火) 03:21:21ID:???
>722

レスサンクス。やっぱりそれが妥当なんですね。

つかまだCake使い始めだからってのもあるのだけど、
こういう事する場合、あれでもこれでも出来るじゃなくて、
あれの場合はこういう手続きで。みたいなのきちっと一本化して欲しいなぁ。
こういう答えが明確でない事で悩む時間がかなり多い。。
もちろん関数とパラメータの意味を調べる為にソースにらめっこにも時間が取られるわけですが。。

社内ライブラリ群でやってる同規模の案件の倍以上かかってるよorz<当然残業コース。。トホホ
0727nobodyさん2008/03/04(火) 03:35:17ID:???
>>723
コンポーネントの意味がわかってねーなwww
Mコンポーネント
Vコンポーネント
Cコンポーネント
コンポーネントはMVCのそれぞれにあるんだよwww
低フレームワークをいじってるやつの基礎知識の無さは半端ねーな

0728nobodyさん2008/03/04(火) 03:41:25ID:???
>>726
フレームワーク覚えながら仕事できるっていい会社ですね
基本的に勉強は勤務外だから
とろとろ覚えながらやるなんて、まず無理
0729nobodyさん2008/03/04(火) 09:30:35ID:???
>>727
だからぁ
Mコンポーネント…Behavior(同じ処理に振る舞いを付ける時)
Vコンポーネント…Helper(表示に関してロジックが必要な時)
Cコンポーネント…Component(手続きを纏めて再利用する時)
Cakeの中ではCコンポーネントの事を単にコンポーネントって
呼んでいるんだから、いかに的外れな事を言ってるのか分かってね。

>>723
直接参照で問題ないでしょ。
データソースを扱いたいためにコンポーネントが
コントローラに依存し出したらそれこそ意味不明。

>>714
何が問題だと感じているの?
0730nobodyさん2008/03/04(火) 09:42:57ID:???
>>727
CakePHPにおけるComponentは
Controllerにしかないよ。
0731nobodyさん2008/03/04(火) 10:25:20ID:???
> >>714
> 何が問題だと感じているの?

>>729
コントローラに追加していないモデルを
どうにしかしてコンポーネントで使うということです。
0732nobodyさん2008/03/04(火) 11:34:34ID:???
>>728
> フレームワーク覚えながら仕事できるっていい会社ですね
> 基本的に勉強は勤務外だから

家では仕事しない主義なんでw
0733nobodyさん2008/03/04(火) 11:46:57ID:???
>>731
現実の構成から考えると、Cakeのコンポーネントはあくまで
コントローラに書く記述の共通化用だからな
コントローラをインジェクションして使うものだと割り切った方がいいのでは?
0734nobodyさん2008/03/04(火) 12:23:27ID:Oi3CmVe3
AuthComponentの場合
http://api.cakephp.org/1.2/auth_8php-source.html#l00674

ClassRegistry::init('名前')でモデルを使用可能にしているみたいだけど。
0735nobodyさん2008/03/04(火) 12:24:43ID:???
コントローラにモデルを書いて
コンポーネントに渡すなんてことをしないで、

コンポーネント内部で、uses()を使って
モデルを直接読んでいいですかね?
0736nobodyさん2008/03/04(火) 13:39:48ID:???
コンポーネントの意味が理解できねーやつばっかりwww
コントロール=コンポーネントていう考えがおかしい




コンポーネント

まったく別物だからwww
=で考えるなよバカwww
0737nobodyさん2008/03/04(火) 13:42:36ID:???
コンポーネントは再利用するためのカプセル化をいうんだから
確かにコントローラとコンポーネントを=で結びつけるのは変だね
0738nobodyさん2008/03/04(火) 13:51:01ID:???
>>729
もっと理論立てて書いてくれないかな
言葉足らずというか、自分にしかわからない書き方やめてくれる
0739nobodyさん2008/03/04(火) 14:08:44ID:???
Mコンポーネントの中にはMの処理をカプセル化したもの
Vコンポーネントの中にはVの処理をカプセル化したもの
Cコンポーネントの中にはCの処理をカプセル化したもの

だからCコンポーネントの中にMやVの処理を入れてはダメ、Cの処理だけ
複雑化したら、それはコンポーネントといえない
なぜなら再利用化に適さないから
コンポーネントは複雑な処理じゃなくて、出来るだけ単純化したものを書くべき

0740nobodyさん2008/03/04(火) 14:09:38ID:???
>>736
CakePHPでは

Controllersフォルダ中にComponentsフォルダがあるの知ってる?w
Modelsフォルダの下behaviorsフォルダ。
Viewsフォルダの下にHelpersフォルダ。

どうせ知らなかったでしょ? 勉強してでなおしなさい。ば〜かば〜か
0741nobodyさん2008/03/04(火) 14:12:50ID:???
CakePHPがいうコンポーネントはていうのやめてくれる
誤解の元だから。
なんでCコンポーネントていえないのかね
07427352008/03/04(火) 14:15:36ID:???
で、コンポーネントの中でモデルを直接
生成しちゃうのってどうなんでしょうか?

>>734がネタばれしちゃったけど、標準の一部のコンポーネントでは
直接生成しているのよね。

それなら設計的にはコンポーネントにもusesプロパティが
あってもいいと思うんだけど、実際には無い。

コンポーネントにusesプロパティが無いのがおかしいのか、
それともコンポーネントでモデルを直接生成している
一部のコンポーネントの方がおかしいのか。
0743nobodyさん2008/03/04(火) 14:16:14ID:???
フォルダ名にコンポーネントて書いてなければコンポーネントじゃないのか?www
0744nobodyさん2008/03/04(火) 14:17:22ID:???
>>741
ここはCakePHPスレなので、Componentで問題ありません。

誤解のもの? あなた誤解していたんですかw
0745nobodyさん2008/03/04(火) 14:18:20ID:???
どうやら、CakePHPを知らない奴が混じっているようだw
0746nobodyさん2008/03/04(火) 14:19:09ID:???
コンポーネントの中でモデルを直接
生成するてのは再利用化に欠けるんだよ

MとCにそれぞれコンポーネント作って
つなげればいいじゃんか
0747nobodyさん2008/03/04(火) 14:22:23ID:???
>>744
CakePHP使ってるやつのコンポーネントの理解の低さには参った
0748nobodyさん2008/03/04(火) 14:22:37ID:???
> なんでCコンポーネントていえないのかね

シーコンポーネントなんて恥ずかしい言い方は論外として

コントローラコンポーネントでぐぐったらStrutsが出てきた。
どうやらJava厨かw

CakePHPスレでStruts用語使わないでくれないかな。誤解の元だから。
0749nobodyさん2008/03/04(火) 14:23:59ID:???
理解とかそういうことじゃなくて、
単にお前の用語の使い方が間違っているんだよ。

Cコンポーネントなんて用語はCakePHPにはでてこない。
0750nobodyさん2008/03/04(火) 14:25:11ID:???
>>746

Mにコンポーネント?を作るとして、
そのファイルをどこに配置すればいいのですか?
答えてください。
0751nobodyさん2008/03/04(火) 14:26:28ID:???
コンポーネント=Cコンポーネントという意味で議論すると非常にわかりにくくなる


0752nobodyさん2008/03/04(火) 14:27:29ID:???
>>750
その質問は強烈すぎw

Cake知らない人には答えられないし、
答えたとしたら、自分のマヌケさを露呈することになるw

答えまだかな?逃げるかな?♪
0753nobodyさん2008/03/04(火) 14:28:53ID:???
>>751
わかってないのはお前だけだって。ここはCakePHPスレ
0754nobodyさん2008/03/04(火) 14:31:39ID:???
>>750
behaviors
0755nobodyさん2008/03/04(火) 14:32:35ID:???
behavirosの下にコンポーネントを作る?
behavirosの下ならそれはコンポーネントじゃなくてビヘイビアだろw
0756nobodyさん2008/03/04(火) 14:36:12ID:???
これ機会にコンポーネント=Cコンポーネントという理解してたら
外注先で赤っ恥かきそうだなw
0757nobodyさん2008/03/04(火) 14:37:01ID:???
Cコントロールに訂正
0758nobodyさん2008/03/04(火) 14:37:38ID:???
Cコンポーネントに再訂正
0759nobodyさん2008/03/04(火) 14:39:02ID:???
外注先でシーコンポーネントなんて自社用語使ったら確実に赤っ恥かくぞw
0760nobodyさん2008/03/04(火) 14:44:18ID:???
コンポーネントとビヘイビアをつなぐとして
誰がつなぐのでしょうか?

コントローラからモデル内部のビヘイビアは
普通直接見るもんじゃないですよね?

コントローラで、コンポーネントとモデルをつなぐというのならわかるのですが?


あとここはCakePHPスレなのでCakePHP用語で話してください。
0761nobodyさん2008/03/04(火) 14:47:59ID:???
>>760
コントローラからモデル内部のビヘイビアは
普通直接見るもんじゃないですよね?

具体的に?
0762nobodyさん2008/03/04(火) 14:49:56ID:???
>>761
あなたは、何がわからないのですか?
質問は具体的に。
0763nobodyさん2008/03/04(火) 14:51:13ID:???
>>762
は?
0764nobodyさん2008/03/04(火) 14:52:16ID:???
>>763
嵐はご遠慮下さい。<m(__)m>
0765nobodyさん2008/03/04(火) 14:53:04ID:???
>>764
嵐?
0766nobodyさん2008/03/04(火) 14:53:18ID:???
>>762>>763の知能の差に吹いた
0767nobodyさん2008/03/04(火) 14:55:20ID:???
>>766
自演乙
0768nobodyさん2008/03/04(火) 14:58:04ID:???
で結局、AuthComponent(認証コンポーネント)の実装ってどうなんでしょう?

そもそもAuthComponentはコンポーネントで実装するものなのか?

AuthComponentはコンポーネント内部で、呼び出しもとの
コントローラが知らないモデルを、直接参照しているが
これは設計としてありなのか?

設計があまりよくないというのなら、こういうものを作る場合
本来はコントローラにモデルを参照させて、
コンポーネントに渡すべきなのか。

コンポーネントとビヘイビアをつなぐといっている人が
いるみたいですが、この人の頭は大丈夫なのか。

以上よろしくお願いします。
0769nobodyさん2008/03/04(火) 15:00:26ID:???
ずっと752が常駐してる模様
0770nobodyさん2008/03/04(火) 15:01:32ID:???
752常駐乙
0771nobodyさん2008/03/04(火) 15:02:08ID:???
752に言われたことが一番痛かった予感
0772nobodyさん2008/03/04(火) 15:03:58ID:???
この時間帯にいるのは俺とお前だけwww
自演激しすぎwww
0773nobodyさん2008/03/04(火) 15:04:54ID:???
じゃあ俺の書き込み以外は全部お前ということかw
言っている言葉がめちゃくちゃだな
0774nobodyさん2008/03/04(火) 15:06:34ID:???
この時間帯にこのレス量は異常だよ
そう俺とお前が激しく書き込んでるだけだよwww
0775nobodyさん2008/03/04(火) 15:08:17ID:???
766 :nobodyさん:2008/03/04(火) 14:53:18 ID:???
>>762>>763の知能の差に吹いた


767 :nobodyさん:2008/03/04(火) 14:55:20 ID:???
>>766
自演乙


これ書いたの両方お前だなw
0776nobodyさん2008/03/04(火) 15:09:59ID:???
いやいや全部おまえだからwww
07777662008/03/04(火) 15:58:40ID:???
>>760
CakePHPのビヘイビアは構造上モデルに依存するため
モデルを介さずコンポーネントとビヘイビアを
直接繋げるなど全く理解不能であり脳障害患者もいいところ。
って、分かってて言ってるんだろうけどね。

>>768
俺は「アリ」だと思う。
一般にMVCにおいて、コントローラはユーザからのリクエストを受け取り処理をモデルへ、表示をビューへ依頼するんだけど
モデルへのアクセスを必ずコントローラを通さなくてはならない、とは規定されていない。
現にMVCモデル図などググって見てみると表示担当のはずのビューからすらモデルへ矢印が引かれているだろ?

CakePHPのコントローラは「便利だから」簡単にモデルアクセスする機能が実装されているけど
それを理由に「コントローラ以外はモデルに触っちゃダメ」とは言っていないよね。
つまりコンポーネントからのモデルアクセスは設計的に十分可能であり、後はプロジェクトのコーディング規約次第。

心情的に、あっちこっちからモデルが参照されるとコ汚い感じがするよねって話なら同意。
AuthComponentはコンポーネント内で完結するには結構無理したよねって話も同意。
あれはCakePHPの開発チームが
「コントローラに$components = array('Auth')って書くだけで認証機能組み込めちゃうんだぜー!」
って言うために詰め込んだと思うんだ。アメはそういうの大好きだし。

>>775
>>776
ちげーよこの馬鹿ども。
0778nobodyさん2008/03/04(火) 16:02:45ID:???
>>777

脳障害患者 これは言い過ぎ。
0779nobodyさん2008/03/04(火) 16:05:41ID:???
>>778
ごめん
0780nobodyさん2008/03/04(火) 16:29:53ID:Zbgc5QoE
CakeについてるViewテンプレートって機能的にはどうですか?
パフォーマンス悪いのかな。実装にあたりPHPで書かなきゃいけなかったり、拡張子
がctpだったりと精神衛生的に気持ち悪い印象があります。
Smartyをビューコンポーネントとして使ったほうがいいのかな、結構利用者っていますかね
0781nobodyさん2008/03/04(火) 19:28:59ID:???
>>777
やっとまともなレスがw

なんかそういうサンプルレベルじゃなくて実運用レベルで
ちゃんとしたMVCになっているオープンソースのアプリ無いかな。
参考になる奴。

もう一つ別の疑問があって、Sessionはモデルではないのか?
という疑問。いろいろな理由で本来あるべき設計を崩すことに
抵抗は無いけど、本来あるべき設計というのを知りたいな。
0782nobodyさん2008/03/04(火) 19:36:20ID:???
>>780
拡張子が違うだけの生PHPだから、機能はPHPで出来ることすべてだし、
Smartyよりもパフォーマンスが悪いということは無いよ。

Smartyが使いたいのなら、それもありだと思うよ。
そういう記事結構あるし。ただやり方はいくつかあるっぽい。
どうせなら、綺麗に違和感なく組み込みたいが・・・。
0783nobodyさん2008/03/05(水) 00:14:06ID:???
Formのバリデーションってどうやっていますか?

Modelに保存しないので、Modelの$validate に設定する方法は使えません。

それでいながら、emailのチェックなどコントローラで
自力でやるのは面倒なので、Modelのvalidateで使える機能を
そのまま使いたいです。
0784nobodyさん2008/03/05(水) 00:18:32ID:???
>>783
modelに依存しないから、$validate使えないってありがちな勘違いじゃなかったっけ?
0785nobodyさん2008/03/05(水) 00:20:36ID:???
>>784
えっ? どうやって使うんですか?
0786nobodyさん2008/03/05(水) 00:27:23ID:???
POSTってmodelに存在しないtestって項目を作ればいいだけ。
Post/test

あとはコントローラーでvalidateチェックも出来るよ
0787nobodyさん2008/03/05(水) 00:35:07ID:???
いえ、モデルが存在しなくても、
$form->create(なんたら)
$form->input(なんたら)
$form->end(なんたら)
でフォームが作れて、データを送信できるのは知っています。

また、コントローラで$this->dateの入力チェックができるのもしっています。

ただ、こういうときに、validate変数に条件を定義するだけで
簡単に入力チェックができるModelの機能と
同等レベルの簡単さでコントローラで入力チェックがしたいのです。
0788nobodyさん2008/03/05(水) 00:39:22ID:???
>>787
'test' => VALID_NOT_EMPTY
って書けば出来るけど?

もうちょっと工夫してから文句言ってくれ
0789nobodyさん2008/03/05(水) 00:49:26ID:???
>>788
それをどこに書くのでしょうか?
それが問題なのですよ。
0790nobodyさん2008/03/05(水) 00:51:56ID:???
var $validate = array(
'test' => VALID_NOT_EMPTY,
);
0791nobodyさん2008/03/05(水) 00:57:39ID:???
>>790
いや、ね。だからですね。
それはモデルに書くのであって、
今回の話はモデルを使わない場合です。
0792nobodyさん2008/03/05(水) 01:00:31ID:???
ん?モデル使わないってmodelには記述しないって事?
じゃ、コントローラでチェックするしか無いじゃん。

しかもその縛りの理由がよくわかんね。
0793nobodyさん2008/03/05(水) 01:02:02ID:???
いいかげん、最初に戻っていいですか?

783 名前:nobodyさん[sage] 投稿日:2008/03/05(水) 00:14:06 ID:???
Formのバリデーションってどうやっていますか?

Modelに保存しないので、Modelの$validate に設定する方法は使えません。

それでいながら、emailのチェックなどコントローラで
自力でやるのは面倒なので、Modelのvalidateで使える機能を
そのまま使いたいです。
0794nobodyさん2008/03/05(水) 01:06:21ID:???
別にモデルに保存しなくても、modelのバリデート使って、特定の値だけコントローラで処理してからsaveすればいいじゃん。
それすらしたくないなら、コントローラでやればいい。
0795nobodyさん2008/03/05(水) 01:07:59ID:???
>>794
質問は「どうやっていますか?」です。

あなたは、それやっていないですよね?
0796nobodyさん2008/03/05(水) 01:08:28ID:???
やってますが?
0797nobodyさん2008/03/05(水) 01:15:07ID:???
>>796
では具体的にコードを出してそれを証明してください。
0798nobodyさん2008/03/05(水) 01:17:41ID:???
なにこの展開アホらしいw
0799nobodyさん2008/03/05(水) 01:19:51ID:???
まったくだw
最初のカキコにちゃんと書いているのに、
それを理解しないで見当はずれなレスをつけやがる。
まったく馬鹿につかまったもんだ。

ほかの人、お願いします。
どうにかモデルのバリデーション機能を有効活用できないでしょうかね?
単に関数を呼ぶだけなら簡単なんですが、そのエラーメッセージを
ちゃんと表示できるようにしようと思うと?で。
0800nobodyさん2008/03/05(水) 01:26:17ID:???
知らないなら、素直に知らないって謝った方がいいよw
0801nobodyさん2008/03/05(水) 01:42:45ID:???
モデルに正規表現チェックの形式を書いて、コントローラでチェックして、エラーフラグ立てるのは出来るでしょ。
0802nobodyさん2008/03/05(水) 01:46:23ID:???
どうやら、モデルを使わないで、FormHelperで
エラーを出すには、ClassRegistryあたりを呼び出さなきゃならないようだ。

そこに登録されていないと、$form->validationErrorsが設定されない。
ビューの頭で$form->validationErrorsを設定すればどうにか出せるが・・・

>>801
何度もいいますが、モデルは使いません。
0803nobodyさん2008/03/05(水) 02:29:12ID:???
モデルを使わない理由とか、そもそも何がしたいか分からないんじゃね?
その質問の仕方だと
0804nobodyさん2008/03/05(水) 02:57:49ID:???
モデルを使わない理由なんてすぐ思いつくと思ったんですが?
たとえばセッションに保存したいとか。
0805nobodyさん2008/03/05(水) 03:20:25ID:???
$useTable = falseにしたModel Hogeを作って

$this->Hoge->set($this->data['Hoge']);
if ($this->Hoge->validates()) {

(成功)

} else {

(Viewに戻るとエラータグにvalidateのメッセージが表示される)

}

これじゃ駄目なの?
DBとの関連が無いModelなら別に使っても問題ないのでは?
0806nobodyさん2008/03/05(水) 03:33:48ID:???
>>804
だからセッションに保存するだけで、DBに保存しなくても。
モデルのバリデートを使用する事は出来るって答えもあったじゃん。

なんか根本的にコミュニケーションが上手くいって無いというか、もっと柔軟に考えたら?
自分が分かるからって他の人が分かるとは限らないし、目的が分かれば違うアプローチもあるかもしれないし。
まぁ、こんだけ答えてもらってありがたいと思わないんだから何言っても無駄だろうけど。
0807nobodyさん2008/03/05(水) 04:11:55ID:???
そんな無理やり実装じゃなくて
まともなのはないのか?
0808nobodyさん2008/03/05(水) 04:25:34ID:???
>>807
App:import('Core','Validation'); //これは多分いらんかも
$obj = Validation::getInstance();
あとてきとーにチェック
0809nobodyさん2008/03/05(水) 04:30:30ID:???
今中身みてたが
getInstanceでオブジェクト取得する必要は無さそう
Validation::ip();
とか
Validation::date();
で良いみたい

つーかこれぐらい探せば直ぐ見つかるだろうに・・・・
Model→バリデートメソッド検索→バリデート部分をざっくり読む→
Validationクラスが見つかる
0810nobodyさん2008/03/05(水) 04:46:50ID:???
3連続でレスすまん

因みに調べたcakeのバージョンは1.2の方ね
1.1は見てみたら仕様が糞過ぎるので自分でやった方が早い

0811nobodyさん2008/03/05(水) 08:19:49ID:???
バリデーションのクラスって引数渡すとboolean返してくれるだけだろ?
エラーセットしてくれないしコントローラーでValidation::chibi($debu, $hage);を使うのは意味無さ過ぎね?
equalToなんてもう最高だよね
0812nobodyさん2008/03/05(水) 09:35:38ID:???
Validationは判定専門だよ
Model用に作ったFormのデータからカラム毎にvalidateしているのはModel自身
それなのにModel使うのが無理矢理とか言ってるんだから、後はもう自分で作れば?w
ていうか少しぐらい自分でソース読めよ
0813nobodyさん2008/03/05(水) 10:25:04ID:???
>>812
また昨日の自演自宅警備員ですか?
書き込みのクセですぐわかるんですが・・・
0814nobodyさん2008/03/05(水) 10:30:12ID:???
最近、精神障害者が約1名常駐してる模様
0815nobodyさん2008/03/05(水) 10:31:41ID:???
>>814
766
0816nobodyさん2008/03/05(水) 10:41:46ID:???
>>781
まともじゃないからwww
自演してスレ嵐してるだけやん
0817nobodyさん2008/03/05(水) 13:11:50ID:???
バリデーションなんか自作しても面倒くさくないだろう。
ここで聞く方がメンドクサイ。
0818nobodyさん2008/03/05(水) 13:27:00ID:???
FormHelperって使いにくくね?
一つのフォームで二つのテーブルにデータ格納するときとか、
どういうコードで保存して、それでちゃんとエラーメッセージを
出すようにするとかわけわからん。


単純な例では便利なのはわかるけど、コントローラからビュー(というかFormHelper)への
値(エラーメッセージ含む)のセットや「モデルのデータ型から適切なフォーム生成」の
所が見えないところで行われているからぜんぜん流れがつかめない。
0819nobodyさん2008/03/05(水) 13:51:38ID:???
一回腰すえて作ってみて、情報収集すれば結構何とかなる事が分かると思うけどね。
0820nobodyさん2008/03/05(水) 14:18:03ID:???
自演とか死ぬほど下らん話題でよく盛り上がれるね。羨ましいぞ。

>>781
CakePHPだと実運用しているサイト自体がまだ少ない上、バージョンによって仕様が激変するため
これだけは入れとけor見とけ!というキラーアプリはまだ出ていないな。YOU作っちゃいなよ。

まー何だかんだ言ってAuthComponentもかなりいいと思うぞ。例えば
----
アカウント名とパスワードを使ったログインが済んでいて、顧客区分がXXXまたは###かつ女性のユーザのみが
アクセスできるコントローラだが、%%%のアクションにだけはアクセスさせたくない。
----
…と頭の痛くなるアクセスコントロールなども少し頑張れば出来る。

モデルはデータの入出力を司るんだから、セッションもモデルの一部じゃね?という話なら理解できる。
データソースがあって、そこへの入出力があるからね。

俺は、モデルの扱うデータソースをほぼRDBMSに限るってルールは単純に歴史的なものだと思うぞ。
セッションは大量検索しないし、接続ごとに切れる特殊性があるだろ!とか言われるかもしれないんだけど
そもそもSQLを使うRDBMS自体が特殊で他と相容れないものなんだから、情報の入出力という観点で取捨選択した結果
最もコスト対効果の大きなものの(=RDBMS)サポートに専門化したんじゃないかな。

今後、XMLDBやODBMSやらが高速かつ手軽に投入できたり、誰かが言ってた
ステートフルWebアプリケーションとやらが台頭してきたら状況が変わってくるかもしれないけど。

つーかモデルってデータの出し入れだけじゃなくて、もっと広義の意味だとビジネスロジック全般を書く所なんだから
何でもかんでもコントローラに詰め込む最近の風習ってちょっと違和感ないか?
コントローラって要はユーザリクエストの受け口じゃん。
0821nobodyさん2008/03/05(水) 14:20:05ID:???
だからコントローラにいろいろ書くのは
まずいケーキだってケーキ様が言っている。

http://cakephp.org/files/OCPHP.pdf
0822nobodyさん2008/03/05(水) 14:26:43ID:???
これは面白い。thx
0823nobodyさん2008/03/05(水) 14:35:10ID:???
>>819
ソースコード見た?

さわりだけじゃなくて、完全に近いマニュアルが無い以上
ソース見なきゃいけないんだけど、$options[?]に何が使えるのか
混沌としすぎている。がんばれば出来るのかもしれないが、
あんなのとがんばるのはもう嫌だ。

もう俺は自作ヘルパーに置き換えたからどうでもいいけど、
管理画面はともかく、あれで思い通りに作るのは無理だろう。

たとえば、データベースの一行だけでなく、複数行をいっぺんに表形式で入力したい。
ここまでは質問&答えがあったきがするけど、
そのとき、どこか一行でもエラーがあれば全部保存しない(それはトランザクションで解決)
で、入力エラーがあったフィールドの下にエラーメッセージを表示させる。

自作のはさらに、同じテキストフィールド入力フォームでも
表形式の場合と通常の状態でプロパティ一つで形を変えられるようにしたり、
ビューのviewとeditでほぼ同じコードが使えるように、入力可能状態と
閲覧状態をフィールド名を指定することで切り替えたりする機能があるけどね。
0824nobodyさん2008/03/05(水) 15:12:54ID:???
>>823
激しく必要制の無さそうな自作ヘルパー




0825nobodyさん2008/03/05(水) 15:18:23ID:???
きのうから既にあるものを再開発しようとしている人がいないか?
0826nobodyさん2008/03/05(水) 15:19:23ID:???
>>842
便利だよ。仕事で作っている奴だからあげられないけどw

作っているアプリでFormHelperを使っていたところあったけど、
いろいろ修正する必要があって、それでもFormHelperでがんばっていたけど
あまりの使いにくさに、自作のヘルパーに置き換えちゃったw

これは作りこんでいる人じゃないとわからないだろうね。

上のほうでモデルを使わない状態でのバリデーションの話をしている人がいるけど、
自作の奴はモデルの有無に依存しない
(データおよびエラーメッセージをコントローラで設定する)
ので、そういう用途にもちょっとの修正程度で使えるだろう。
0827nobodyさん2008/03/05(水) 15:20:16ID:???
>>820
AuthComponentは使えない。オレオレ的な使い方がしにくい
認証後の飛び先を認証直前の画面に設定できない
だからAuth系はできるだけ単純な方がいい
AuthComponentは柔軟な拡張には向かない
0828nobodyさん2008/03/05(水) 15:21:35ID:???
>>825
> たとえば、データベースの一行だけでなく、複数行をいっぺんに表形式で入力したい。
> ここまでは質問&答えがあったきがするけど、
> そのとき、どこか一行でもエラーがあれば全部保存しない(それはトランザクションで解決)
> で、入力エラーがあったフィールドの下にエラーメッセージを表示させる。

少なくともこれが出来たら、「既にあるもの」と認めてもいいけど?
0829nobodyさん2008/03/05(水) 15:27:50ID:???
>>828
この自作ヘルパーしなくても普通に出せるやん。
入力エラーがあったフィールドの下にエラーメッセージを表示させる。だろ?
0830nobodyさん2008/03/05(水) 15:28:36ID:???
>>829
ただし、入力はエクセルのような表形式で複数行同時に。
前提をちゃんと読もうぜw
0831nobodyさん2008/03/05(水) 15:39:35ID:???
最近文章読めない奴多すぎw
文章が読めないのか、都合が悪い所を見ようとしないのか。
0832nobodyさん2008/03/05(水) 15:50:54ID:???
>>827
こないだ実装されたよ
以前は激しく使えなかったが最近はCakeにしちゃあ大分素直になってきてる
08338322008/03/05(水) 16:04:24ID:???
>>823
複数行一括入力は俺も試したけどFormHelperつかえねーよな。
少しでも手を入れようと中身を見ると余計な機能ばっかり大量に付いてて振り払う手間の方がかかる。
粒度の感覚がないんだろうな。もっと乱暴に言うと、おもてなし精神がねえ。
わかるよね言いたいこと。
0834nobodyさん2008/03/05(水) 16:12:26ID:???
おもてなしっつか、わきまえてねえって言った方がいいのかな。難しいな日本語。
0835nobodyさん2008/03/05(水) 16:18:08ID:???
>>833
Helperの癖に、モデルに依存しまくりなんだよな。激しく意味がわからんし。

たとえば、FormHelper::createだけどこんなコードになっている。
$currentModelってなに? ClassRegistry::getObject($currentModel);ってなに?

ClassRegistryって何をするもの? レジストリってことは誰かがどこかでその名前で登録するわけ?

> is_a($currentObject, 'Model')
モデルかどうかって何でそんなの調べるの? って感じだからね。
0836nobodyさん2008/03/05(水) 16:18:35ID:???
function create($model = null, $options = array()) {
 $defaultModel = null;
 $data = $this->fieldset;
 $view =& ClassRegistry::getObject('view');

中略
 if (empty($model) && $model !== false && !empty($this->params['models'])) {
  $model = $this->params['models'][0];
  $defaultModel = $this->params['models'][0];
 } elseif (empty($model) && empty($this->params['models'])) {
  $model = false;
 } elseif (is_string($model) && (strpos($model, '/') !== false || strpos($model, '.') !== false)) {
  $path = preg_split('/\/|\./', $model);
  $model = $path[count($path) - 1];
 }

中略

 if (ClassRegistry::isKeySet($model)) {
  $object =& ClassRegistry::getObject($model);
 }

 $models = ClassRegistry::keys();
 foreach ($models as $currentModel) {
  if (ClassRegistry::isKeySet($currentModel)) {
   $currentObject =& ClassRegistry::getObject($currentModel);
   if (is_a($currentObject, 'Model') && !empty($currentObject->validationErrors)) {
    $this->validationErrors[Inflector::camelize($currentModel)] =& $currentObject->validationErrors;
   }
  }
 }
0837nobodyさん2008/03/05(水) 17:38:57ID:???
誰か simpletest でコントローラをテストする方法教えてください。
モデルは乗ってるんだけど、コントローラーのやり方がいまいちわからない。

このスレに神がいたらブログにまとめてアップしてくれたらうれしいです。
・・・願ってます。
0838nobodyさん2008/03/05(水) 18:30:03ID:???
>>823
こいつが書く文章だけ、やけに読みにくい

データベースの一行だけでなく、複数行をいっぺんに表形式で入力したい
コミュニケーション能力無いやろ?
0839nobodyさん2008/03/05(水) 18:33:41ID:???
>>823
>>820

自分しかわからない書き方やめてくれるw
単語はわかるんだけど
文章のつながりが滅茶苦茶
0840nobodyさん2008/03/05(水) 18:58:46ID:???
>>827

認証後の飛び先だけ自分でコントロールすればいいだけじゃねの?

認証後の飛び先を認証直前の画面に設定ぐらい楽勝

その程度でオレオレ的っていうのか、しらんが

0841nobodyさん2008/03/05(水) 19:30:33ID:???
>>840
楽勝ならコード書いてみせて
口だけならなんとでも言える
0842nobodyさん2008/03/05(水) 19:41:00ID:???
>データベースの一行だけでなく、複数行をいっぺんに表形式で入力したい

この説明"すら"理解できないの?
0843nobodyさん2008/03/05(水) 19:45:29ID:???
書籍スレにいたAHOがこのスレに来てるwww
0844nobodyさん2008/03/05(水) 20:17:33ID:???
>>842
理解が出来る出来ない問題じゃなくて例えが悪すぎるよな
こういやつの書くコードは、どういうコード書くかなんとなくわかる
自分にしかわからないコードしか書かないよな
0845nobodyさん2008/03/05(水) 20:53:16ID:???
>>841
認証にこけて認証ページにリダイレクトする前にurlをセッションに入れて
認証完了後にそのurlに飛ばせばいいだけじゃね
0846nobodyさん2008/03/05(水) 21:02:22ID:???
リダイレクト先指定出来た筈だけど
0847nobodyさん2008/03/05(水) 22:44:19ID:???
たとえが悪いかどうかはおいといて、

意味がわかんないのに、”できる”と断言しちゃうやつ。
こいつのほうがよっぽどアフォだろ。
0848nobodyさん2008/03/05(水) 22:45:58ID:???
>>844
断言する。お前が理解能力無いだけ。
0849nobodyさん2008/03/05(水) 23:21:45ID:???
>>847
よく分かんない文章にこれがしたいの?
って提案してるだけだろ、本当にコミュニケーションが出来ないんだな。
0850nobodyさん2008/03/06(木) 02:45:38ID:???
>>848
理解能力とかより、わかりにくい文章でも度が過ぎるよな
特に>>820>>823
普通のコミュニケーションでもよく聞き返されるやろ?
もっと簡単な文章にできないか?
密度の薄い内容のクセに長文になってんだよwww


0851nobodyさん2008/03/06(木) 02:54:05ID:???
>>820
日本語でおk
0852nobodyさん2008/03/06(木) 03:01:56ID:???
>>847
>>848
同一人物による煽りw
もっと投稿時間の間隔空ければ不自然すぎるよ
0853nobodyさん2008/03/06(木) 09:43:53ID:???
>>852
勝手に同一人物にするなw

理解能力も無い、この程度の長文(?)も読めない、コミュニケーション能力も無い。
その上妄想で他人をあおることしかできない。
0854nobodyさん2008/03/06(木) 09:54:29ID:???
>>853
長文というか80%が駄文だし
そんな駄文を理解しようとする為に無駄なパワーを使いたくないから
もっと楽に読める内容の濃いわかりやすい文章にしろよ
0855nobodyさん2008/03/06(木) 10:45:54ID:???
えーと、具体的に820のどこが理解できないか教えてくれないかな(´・ω・`)
YOUの部分を日本語に訳せばいいのかな。

個人的には、MVCの役割分担の考え方についてはフレームワーク自体の根深い部分だと思うから
他の人の話もききたかったりする。Cakeの実装の是非とか。
0856nobodyさん2008/03/06(木) 11:06:31ID:???
こいつ(>>で書くのは面倒。言わなくても本人含めてわかるだろ?)の場合、
理解力が無いというより、単に実戦経験が無いのだろうな。

実戦経験があれば、表形式での入力とか、
セッションもモデルの一部じゃね?(という疑問)とか
そういうのは、これだけ書いてあっていても、あーあのことねって
わかると思うんだが。
0857nobodyさん2008/03/06(木) 11:22:57ID:???
>>837
> 誰か simpletest でコントローラをテストする方法教えてください。

コントローラのテストは少なくとも二つのやり方がある。

一つは、CakeTestCase::testAction($url, $params = array()) で
actionを呼ぶ方法。

もう一つはCakeTestCaseの代わりにCakeWebTestCaseを継承したテストクラスを作り
CakeTestCase::get(アドレス)、CakeTestCase::click、CakeTestCase::clickLinkById、
CakeTestCase::setFieldByName、CakeTestCase::clickSubmitById
CakeTestCase::assertPatternなどで、あたかもブラウザを操作しているかのごとく
ページを移動していきながらテストする方法。

> このスレに神がいたらブログにまとめてアップしてくれたらうれしいです。
まとめたいのは山々なんだが、時間が・・・。
0858nobodyさん2008/03/06(木) 11:26:31ID:???
あと、CakeWebTestCaseを使った場合の注意点だけど
普通のテストではテスト用のデータベース設定が使われるわけだが
(つまりtest_suite_というプリフィックスがついたテーブルを使用する)

CakeWebTestCaseはブラウザでアクセスしていることになるので、
テスト用のデータベース設定が使われない。
これじゃいろいろまずいので↓ここの記事ではCookieを設定することで対応している。
http://gignus.com/blog/posts/view/13

一方俺は、CakeWebTestCase::addHeader を利用した。
0859nobodyさん2008/03/06(木) 15:18:52ID:???
>>857
>>858

おぉ〜!神様、仏様。
ありがとうございます。

simpletestじゃなさそうですが、コントローラーはsimpletest でテストできないってことでOKでしょうか。

cakewebtestcase 見てみます!ありがとう。
0860nobodyさん2008/03/06(木) 17:08:09ID:???
>>855
駄文が多いだけで、意味のあることがひとつも書いてない
あとは自作ヘルパーの自慢?
悪いけどオナニー的な文章になってるんだよ
気づいてない?
>>856
自演乙
0861nobodyさん2008/03/06(木) 17:14:50ID:???
>>856
だろう運転と会話は事故の元
誰もが自分と同じ思考をし理解してくれるなんてありえない。
しまいには相手を馬鹿にして切り捨てる。

個別の技術的な話っていうより、文章の分かりにくさと対応がつっこまれてるんだと思うよ。
0862nobodyさん2008/03/06(木) 17:21:49ID:???
>>855
どう考えても他の人の話を聞く姿勢ではないよな!
攻撃的な姿勢でどうやって有意義な情報を聞き出すことが出来るんだよ

0863nobodyさん2008/03/06(木) 17:30:26ID:???
小馬鹿にする表現が多いよな
脳障害患者とかな!
一言で言えば嵐に近い。

最近は>>777が常駐して荒らしてるだけだから
0864nobodyさん2008/03/06(木) 17:33:27ID:???
>>855
他の人の話もききたかったりする

脳障害患者呼ばわりしたいから?w
0865nobodyさん2008/03/06(木) 18:00:39ID:???
>>859
simpletestだよ。

というか、まさかと思うけど、CakePHPはsimpletestに対応していて
simpletestをvendorだっけ?にインストールして、
/test.php にアクセスするとテスト環境になるってこと知らないとか?

1.2の話だけど、1.1でも同じじゃなかったかな?

で、simpletestにはブラウザのようにアクセスするWebTestCaseってのがついている。
CakePHPはそれを継承してCakeWebTestCaseにしているだけ。
0866nobodyさん2008/03/06(木) 18:01:39ID:???
>>863 いや、常駐しているのはお前。嵐もお前。
0867nobodyさん2008/03/06(木) 19:28:46ID:???
っていうかID出ないからそんな事言いあっても時間の無駄
0868nobodyさん2008/03/06(木) 21:33:38ID:???
>>865

ありがとうございます。simpletest なのですね。

test.php でアクセスするとできるのも見ました。
勉強します。ありがとうございます!
0869nobodyさん2008/03/06(木) 22:57:57ID:???
837     誰か simpletest でコントローラをテストする方法教えてください。 モデルは乗ってる...
└857     >>837 > 誰か simpletest でコントローラをテストする方法教えてください。 コ...
 └859     >>857 >>858 おぉ〜!神様、仏様。 ありがとうございます。 simpletestじ...
  └865     >>859 simpletestだよ。 というか、まさかと思うけど、CakePHPはsimpletes...
   └868     >>865 ありがとうございます。simpletest なのですね。 test.php でア...

テストの仕方ってあんまり情報無いよね。
どこかにまとまってないのだろうか。
0870nobodyさん2008/03/07(金) 00:28:29ID:???
>>869
>>869
0871nobodyさん2008/03/07(金) 13:19:14ID:TbKF7E3a
質問させてください。
Windows & cake1.2 です。
app/config/bootstrap.phpに下記のような記述をしました。
$myDefines['aaa']['bbb'] = array(
'a' => 'あ',
'b' => 'びー',
);
これをビューやコントローラーで使用したいのですがどうすれば。。
現状、pr( $myDefines); とかやると定義されてないよnoticeエラーがでる。
0872nobodyさん2008/03/07(金) 14:59:15ID:???
>>869

教えて頂いたお礼に 頑張ってまとめてアップしてみたいと思います。

CakeWebTestCase ← これいいっすね。
0873nobodyさん2008/03/07(金) 15:31:36ID:???
>>872
期待してます。

こちらだと問題あれば、こっそりcakephpの日本フォーラムとかでも嬉しいかも
08748712008/03/07(金) 16:43:55ID:???
関数にすることで自己解決しました。
function temp(
 return $myDefines['aaa']['bbb'] = array(
  'a' => 'あ',
  'b' => 'びー',
 );
);
0875nobodyさん2008/03/07(金) 18:40:12ID:???
>>871
なんか使い方が間違っている気がする・・・
どういう内容の変数なのかによるからなんともいえないけど。
08768712008/03/07(金) 18:59:05ID:???
>>875
うへぇ
enum型の表示名とかがおもです。
define使えば問題なく使えるんですが、配列で欲しいわけです。
globalなんてしたくないし・・・。
ダメですかねーん?
08778752008/03/07(金) 19:48:19ID:???
>>876
言った本人が言うのもなんだけど、どうなんだろう?
どうも最近そういうグローバルな値なんて使わないもので、
enum型もほしいと思ったことが無いんだよな。
そういうのは大体クラス内部で収まっているし。

設定ファイルに書いて、必要な箇所(関数の頭かクラスのコンストラクタ)で
読み込むことが多いし。でも確かに少量ならbootstrapに書いたほうがいい気もする。

なんだろう。このもやもや。
0878nobodyさん2008/03/07(金) 20:35:01ID:???
こんふぃぎゃーらいとでいいじゃん
0879nobodyさん2008/03/08(土) 06:53:02ID:???
>>871
明らかに変だろw


ツーか最近変数スコープの事考えない奴多すぎないか
08808712008/03/08(土) 16:27:54ID:???
>>879
具体的にどうやれば正解なの?
0881nobodyさん2008/03/08(土) 16:58:13ID:???
>>880
http://book.cakephp.org/view/39/configuration
0882nobodyさん2008/03/09(日) 07:50:38ID:???
>>871
CakePHPは2次元の連想配列は使えない
0883nobodyさん2008/03/09(日) 07:54:39ID:???
>>877
グローバルな値はCakePHPがデェフォでかなり埋め込んでるけどな
グローバルを全く使わないって発想はCakePHPを否定してるよな
0884nobodyさん2008/03/09(日) 08:01:58ID:???
>>877
おまいらのクラス定義は全部グローバルやんwww
CakePHPは名前空間を使ってないグローバルなフレームワークやんwww
なにを今さらグローバル気にしてんねん
0885nobodyさん2008/03/09(日) 08:24:21ID:???
PHP5の最新機能全然使えてないじゃん
こんなグローバル指向なフレームワーク使うんやったら
自分でフレームワーク作った方がマシやろ
0886nobodyさん2008/03/09(日) 10:41:20ID:???
グローバル変数がよくないのであって、
クローバスクラス定義は普通のもの。
0887nobodyさん2008/03/09(日) 19:37:33ID:???
グローバル変数がよくないって
全く無いのもダメだろ要はバランス
CakePHPのような最初から骨組みが決定してるものは
仕様方針と骨組みが多少異なれば
はみだしたこともしないといけない
0888nobodyさん2008/03/09(日) 19:42:05ID:???
PHP4自体がグローバル多様を考えて作られてる
要はスクリプト言語のメリットを活かし
プログラム言語のような複雑化を避けるため
グローバルを気にして設計するなら
Javaとかに移るべき
PHPはグローバルを使うことでメリットのある言語
0889nobodyさん2008/03/09(日) 19:45:41ID:???
PHPは言語的にまだまだオブジェクト指向向きではない
それなのにRailsの影響でフレームワーク化してるけど
PHPの方が全く追いついてない状態
0890nobodyさん2008/03/09(日) 19:51:46ID:???
おかしいなぁ。CakePHPを使ってから、
global ってキーワードを使った記憶がないんだが?
0891nobodyさん2008/03/09(日) 20:04:12ID:???
CakePHPがしっかりとしたオブジェクト指向だから
グローバル変数なくても作れるね。
0892nobodyさん2008/03/09(日) 20:08:55ID:???
CakePHPでしっかりしたオブジェクト指向作るのは不可能
なぜならPHP自体がしっかりしてないんだから
グローバル変数使いまくりの方がPHPにはメリットがある
Railsのマネするなら
Rubyみたいにしっかりとしたオブジェクト指向言語じゃないと
0893nobodyさん2008/03/09(日) 20:32:06ID:???
CakePHPはデフォでかなりののグローバル変数が定義されてるんですが・・・
小さい掲示板つくるだけで、こんなに余計なグローバル変数定義されるのかよ
0894nobodyさん2008/03/09(日) 20:48:54ID:???
まじ?聞きしに勝るゲロ以下さだなwww
symfonyなんて律儀に使った変数をunsetしていくのにwww
0895nobodyさん2008/03/09(日) 21:00:06ID:???
CakePHPは定数の量も半端なく異常
0896nobodyさん2008/03/09(日) 21:20:15ID:???
食ったら腹壊すwww
0897nobodyさん2008/03/09(日) 21:21:07ID:???
>>893
お前、PHP知らないだろ?w

PHPではグローバル変数を使うときには、
global って書かないといけないんだよ。
だから使っていて、知らないということはありえない。

CakePHPでは、globalを使わなくて作れるのは事実。
0898nobodyさん2008/03/09(日) 21:27:54ID:???
CakePHPのコアライブラリをglobalという単語で検索したが、
一箇所しか、使っていなかったな。

その一箇所も、ADODB用のデータベースライブラリで
ADODBの動作モードを変更するためのだけのコード。
0899nobodyさん2008/03/09(日) 21:54:15ID:???
>>898

897がCakePHPでは、globalを使わなくて作れるのは事実。

0900nobodyさん2008/03/09(日) 21:57:23ID:???
クラス外で変数(ローカル変数じゃないよね?)定義するのはOKてこと?
0901nobodyさん2008/03/09(日) 22:00:31ID:???
クラス外ってどこで定義するんだよ?
0902nobodyさん2008/03/09(日) 22:02:01ID:???
グローバル変数の意味をわかってない奴が多い

グローバル変数

変数にはスコープと呼ばれる有効範囲があります。
スコープの最も外側の部分、 スクリプト中でどの関数にも含まれていない部分で
定義された変数をグローバ ル変数とよびます。
0903nobodyさん2008/03/09(日) 22:02:41ID:???
>>901
スコープの最も外側の部分、 スクリプト中でどの関数にも含まれていない部分
0904nobodyさん2008/03/09(日) 22:04:30ID:???
>>901
たとえば、コントローラクラスなどの

<?php
class XXXController extends AppController {
}
?>

の<?php と classの間とか。

まあ、普通はこんなところに、書かないよね?
0905nobodyさん2008/03/09(日) 22:06:21ID:???
>>904
ボロが出たなw素人乙!
0906nobodyさん2008/03/09(日) 22:07:59ID:???
>>904
クラス外に変数定義することは普通にあるよ
0907nobodyさん2008/03/09(日) 22:08:05ID:???
>>905
どこか間違っているか?

CakePHPでは、作るコードのほぼすべてを
クラスとしてつくり、普通の作り方をすると、
グローバル変数なんか使わないだろ?
0908nobodyさん2008/03/09(日) 22:08:55ID:???
>>906
どこ?
0909nobodyさん2008/03/09(日) 22:21:11ID:???
関数内でグローバル変数を参照するとき、
global 変数名 ってしないと参照できないって仕様、
最初はウザイと思っていたが、グローバル変数使わなくなってからは
どうでもよくなったな。これもCakePHPのおかげかな?
0910nobodyさん2008/03/09(日) 22:30:37ID:???
>>909
それはCakePHPのおかげというのがよくわからない・・・
0911nobodyさん2008/03/09(日) 22:37:41ID:???
クラス外変数(グローバル変数?)の定義ファイルで
変数宣言してる行数
2000行見つけたんですが!
ちなみに変数名は
$config
これって各クラスでグローバル参照できる変数だよね
0912nobodyさん2008/03/09(日) 22:38:56ID:???
>>910

CakePHPというオブジェクト指向のフレームワークのおかげで、
クラスを使ってコアのクラスを継承して実装することが求められ、
必要な値が、クラス変数に格納されるから、しっかりした作り方ができる。
0913nobodyさん2008/03/09(日) 22:40:31ID:???
>>911

変数名でグローバルかどうかなんてわかるはずないだろw
それがどのファイルに定義されていたのか
なぜ、それをいえない?
0914nobodyさん2008/03/09(日) 22:45:26ID:???
本来、一つ宣言すれば十分なグローバル変数が
「変数宣言している行数2000行、その変数名は$config」の時点で
嘘だとばれるだろ。常識で考えて。
0915nobodyさん2008/03/09(日) 22:51:21ID:???
確かにcasefoldingフォルダの中に
恐ろしいほどスコープに括られてない変数(グローバル変数?)がある
0916nobodyさん2008/03/09(日) 22:52:20ID:???
>>915
ホントだw
0917nobodyさん2008/03/09(日) 22:59:32ID:???
きっとそれをグローバル変数だと勘違いしているのだろうが、

簡単に言うと、このようにローカル変数として展開されている。
class ??? {
 function ??? () {
  include(そのファイル)
 }
}

一見、ファイルだけを見て、それがクラスの中にないからといって、
それがグローバル変数だとは限らないんですよ。

アフォが自滅して終わりです。ちゃんちゃん。
0918nobodyさん2008/03/09(日) 23:02:26ID:???
>>917
どのファイル?
0919nobodyさん2008/03/09(日) 23:03:54ID:???
string.php
0920nobodyさん2008/03/09(日) 23:11:12ID:???
extract.php

これはクラス外で宣言してるのは何で?
0921nobodyさん2008/03/09(日) 23:15:12ID:???
cakeが黒こげwww
0922nobodyさん2008/03/09(日) 23:15:16ID:???
>>920
そのファイルも、ほかのクラスの関数から
読み込まれているからローカル変数になっている。

それがグローバル変数だと思ったら、どこかの関数で
global その変数名; って書いて、実際にその変数を参照できるか調べろよ。
(別に関数じゃなくても、変数定義されている、そのファイル自身と
そのファイルの呼び出し元関数以外ならどこでもいいが)

できないからさ。
0923nobodyさん2008/03/09(日) 23:20:07ID:???
>>922
どのクラス関数から読み込まれてるんだ?
調べたが、どのクラス関数からも呼び出されてないぞ
0924nobodyさん2008/03/09(日) 23:24:41ID:???
>>922
クラス定義されてるファイルを
クラスから呼び出すということは

クラス内でクラスを作るということになるんだが?

a.inc
<?php
$a="a";
class A{
}
?>

class A {

include "a.inc";

}
0925nobodyさん2008/03/09(日) 23:28:52ID:???
>>923
i18n.phpのvar $tasks = array('DbConfig', 'Extract');変数設定により、
フレームワークから読み込まれていますが?
0926nobodyさん2008/03/09(日) 23:34:25ID:???
フロントコントローラで作られたPHP製のアプリで
globalキーワードがついていない、変数定義は
ほぼすべて、グローバル変数ではないと思っていい。

フロントコントローラとは、要するに、どのアドレスでアクセスしても、
まず最初に、index.php といった決まった、phpスクリプトが呼ばれる。

そこからユーザーが作ったコードは、関数の中から呼び出された関数の
そのまた中の関数から呼ばれた関数の・・・といくつかの関数(当然メソッド含む)を経て実行される。
つまり、ほとんどが、関数内に読み込まれるファイルとして成り立っているので、
その関数内スコープで、グローバル変数を定義するには、globalキーワードが必要不可欠。

globalキーワードを使わずに、グローバル変数を作るには、どの関数からも呼ばれていない
index.php ぐらいで定義するしかない。
0927nobodyさん2008/03/09(日) 23:34:30ID:???
>>925
それは変数に値を入れてるだけじゃん
どうやって読み込んでるの?
0928nobodyさん2008/03/09(日) 23:35:40ID:???
>>924
だからなに?
クラス&関数と変数では、話が違うの知らないの?
0929nobodyさん2008/03/09(日) 23:37:22ID:???
>>927
そのクラスの継承元クラスが、その変数の値を見て、
その名前からファイル名に変換して、
そのファイルを呼び出す関数に渡して、その関数が読み込んでいます。

意味、わかりますか?
0930nobodyさん2008/03/09(日) 23:41:03ID:???
>>928
クラス内でクラスをincludeするって
内部クラスが利用できるってこと?
0931nobodyさん2008/03/09(日) 23:42:19ID:???
>>930
マニュアルぐらい嫁。

http://www.php.net/include/

ファイルが読み込まれるとそのファイルに含まれるコードは、
include()もしくはrequire()が実行された 行の変数スコープを継承します。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

しかし、読み込まれたファイル内で定義されている
関数やクラスはすべて グローバルスコープとなります。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
0932nobodyさん2008/03/09(日) 23:43:19ID:???
>>929

>>904でいう普通書かれないコードが
extract.phpに書かれてますが、これは何なんでしょう?
0933nobodyさん2008/03/09(日) 23:45:50ID:???
>>925
だからどこでincludeしてるの?
0934nobodyさん2008/03/09(日) 23:45:59ID:???
>>904が間違いってだけの話。

正確に言えば、こフレームワークのことは忘れて、
そういうコードがあったとして、そのファイルをURL指定で
直接アクセスされた場合、確かにグローバル変数になる。

しかし、CakePHPではフロントコントローラ。
つまり、>>904のファイルは、index.phpを基点として
いくつかの関数を経て呼び出されるから、
それがグローバル変数になることはない。
0935nobodyさん2008/03/09(日) 23:48:06ID:???
>>933
configure.php の App クラス の import メソッド
0936nobodyさん2008/03/09(日) 23:51:57ID:???
もうそろそろ、あらかたやっつけたかな?
0937nobodyさん2008/03/09(日) 23:56:41ID:???
>>935
そんな記述どこにあるんだ?
0938nobodyさん2008/03/09(日) 23:57:27ID:???
>>935
i18n.phpのどこに書いてあるんだ?
0939nobodyさん2008/03/10(月) 00:00:57ID:???
>>938
i18n.phpの親クラスのshellにrequire_onceって書いてあるだろ。

App::importは使ってないなw
0940nobodyさん2008/03/10(月) 00:07:10ID:???
>>939
お前の書いてること誤りばっかりやん
0941nobodyさん2008/03/10(月) 00:08:19ID:???
>>940
App::importだけだろ。
でお前の反論は、それで終わりか?
反論になってないがな
0942nobodyさん2008/03/10(月) 00:09:38ID:???
で、結局グローバル変数なの?
違うよね? じゃあ。俺の言っていることは
最終的にただしかったんじゃんか。

CakePHPはちゃんとしたオブジェクト指向。
当然グローバル変数もほぼ使わずに作られている。
0943nobodyさん2008/03/10(月) 00:10:49ID:???
>>942
じゃあグローバル変数を1個でも見つけたら俺が正しいの?
0944nobodyさん2008/03/10(月) 00:12:04ID:???
なんかお前ら暇なのな
0945nobodyさん2008/03/10(月) 01:51:21ID:???
このケーキってカビだらけなんですね
0946nobodyさん2008/03/10(月) 01:54:01ID:???
たとえコアにグローバル変数が山ほど使われていたとしても
デベロッパにそれを意識させず開発できるのなら問題ないと思うんだけど…
0947nobodyさん2008/03/10(月) 01:56:29ID:???
問題と思うなら放置しろよ釣られすぎだぞ
0948nobodyさん2008/03/10(月) 01:57:03ID:???
問題無いと・・
の間違いだふ
0949nobodyさん2008/03/11(火) 14:09:57ID:???
Cakeとは関係ないんだけど、質問させてください。

DBからデータを持ってくるんだけど、画面によって表示するデータがちょっと違う時ってどうしてますか?

1 - データを取得するメソッドを1個作って、後はViewで調整(使わないデータを持ってくるのがもったいない)
2 - Viewごとにデータを取得するメソッドを複数作る(コードが増える、DBの仕様が変わると作業量が増える)

考え方をお聞かせください。
0950nobodyさん2008/03/11(火) 14:51:27ID:???
前者
引数でconditionsなりfieldsなり変えればいいんじゃね
0951nobodyさん2008/03/11(火) 17:42:25ID:???
>>949
どっちもいいと思う。
だけど view で調整のが楽かなぁとも思うし、モデルに書いておいた方が楽なような。

0952nobodyさん2008/03/12(水) 04:14:55ID:???
>>949
条件がちょっと違うってだけじゃなんともいえん。
もっと具体的な例でないと
0953nobodyさん2008/03/12(水) 15:16:31ID:AyOV8gPT
hasManyでアソシエーションしている場合(A : 1/B : 多)
で、Bの hoge というフィールドが n の場合という条件を
WHERE句にいれる場合は findAll でどうやればいいのでしょうか?
09549532008/03/12(水) 15:22:10ID:???
>>953
ちなみに、モデルで conditions を指定するやり方ではなくて
B.hoge = n に該当する Aレコードを取得したい、ということです。
0955nobodyさん2008/03/12(水) 17:07:21ID:???
>949
必要なテーブルだけ関連付けてviewで調整してる
テーブルの中のカラムは富豪的に全部持ってきてもバチ当たらないだろ

>953-954
findする前にbindmodelでくっつけてやるのれす
あとそのままだとleftjoinだからinnerjoinにでもしてやればいいんじゃないのかな
でもそんなの調べてる間にSQL書いちゃう方がはえーよたぶん
0956nobodyさん2008/03/12(水) 21:50:06ID:???
書き込み、削除、編集、表示
をワンセットでやりたい場合はアソシエーション機能を使うのが便利だけど

テーブル結合させたカウントランキング表示みたいな
表示だけにしか使わない複雑なものはSQLで書いた方が効率いいのかな?
これって書き込み編集削除で再利用できないし
0957nobodyさん2008/03/12(水) 22:19:07ID:???
SQLで書いた方がというより、普通にfindでいいんじゃないの?
0958nobodyさん2008/03/12(水) 23:24:42ID:???
>>957
group by つかうときとか
0959nobodyさん2008/03/13(木) 01:07:36ID:???
なんでgroup by 正式にサポートしないんだろ?
conditionsに書けばできるのは知っているんだが、
へんな書き方をしないといけないし。
0960nobodyさん2008/03/13(木) 01:15:18ID:Kbjia7Gd
質問です。
EntryモデルとUserモデルという、2つのモデルがあるとして、
以下のようなことをすると、

--------------------
[1] Entryのデータを編集(/entries/edit/1)
 ↓
[2] Entryのデータを確認(/entries/index、/entries/view/1)
 ↓
[3] Userから確認(/users/myentries)
--------------------

[2]では即時に[1]での編集内容が反映されるのですが、
[3]では反映されず表示が古いままなんですが、これって何のキャッシュですか?
アクセス元(?)のモデルが違うだけなのにどうして表示される結果が違うんでしょうか?
まだ始めたばかりなので、もし見当違いな質問してたら申し訳ありません、
ヒントだけでも示してもらえると助かります。
0961nobodyさん2008/03/13(木) 01:24:22ID:???
>>960
F5
0962nobodyさん2008/03/13(木) 04:04:24ID:???
PEARみたいに外部から問い合わせて貰う為のXML-RPCを作成しようとおもっているのだけど、
Cakeの場合こういうのは何処に置いたらいいの?
通常のWebサービスと同じくコントローラ作ってそこに書くのが定石?
09639622008/03/13(木) 04:19:53ID:???
って書いてすぐ気が付いてしまった。
クラス外でhandleCallしたりしなきゃだからベンダーに置くしかないのかな。
09649532008/03/13(木) 09:23:03ID:???
>>955
ありがとです。
とりあえずINNER JOINで解決しました。
やっぱりSQL書いた方が早い&分かりやすいですねぇ。
フレームワーク初めてだから、ついつい全てルールに沿ってやろうと考えてしまう…。
0965nobodyさん2008/03/13(木) 12:37:07ID:???
複数のモデルをアソシエーションでつないだとき、
ビヘイビアのafterFindとかは、モデルごとに呼び出されるのか、
親モデルで一回だけ呼び出されるのか仕様知らない?

たしか親モデルで一回だけ呼び出されるような感じなんだが、
1.2はbetaだし、それがバグなのか仕様なのかわからない。
0966nobodyさん2008/03/13(木) 15:13:16ID:ERgQfDPO
>>965
デバッグモードにして投げてるSQL分を追跡してみれば?
というアドバイスはナンセンス?
0967nobodyさん2008/03/14(金) 10:50:23ID:???
CakePHPて恐ろしくメモリ食うな
8Mじゃすぐリミットオーバーするね
0968nobodyさん2008/03/14(金) 10:59:44ID:???
規模が少しでも大きくなるとモデルファイルが凄いみにくい状態になるなw
アソシエーションは便利だけど、ちょっと利用させてもうらために
無駄なSQLもくっついてくるのを我慢しないといけない
0969nobodyさん2008/03/14(金) 11:01:09ID:???
CakePHPは中規模でも使えないわ
モデルまわりの統制がとれない
0970nobodyさん2008/03/14(金) 11:10:06ID:???
とてもじゃないけど、こんな高負荷なフレームワークは自社で採用したくないな
悪魔でも生産性だけを考えた外注用のフレームワークだな
0971nobodyさん2008/03/14(金) 11:22:16ID:???
このごろ定期的に、CakePHPの根拠無しに批判を
していく奴がわいているなw
いつも同じ感じだからすぐばれるぜwww
0972nobodyさん2008/03/14(金) 11:30:51ID:???
エラー出力ありで開発するとデザインが崩れまくりなんですが
もっとよい出力場所がないのか?
0973nobodyさん2008/03/14(金) 11:32:06ID:???
希望としてはSQL出力は別画面表示してもらいたい
0974nobodyさん2008/03/14(金) 11:38:02ID:???
>>973
俺はSQL出力は、CSSとJavaScript使って折りたためるようにしているよ。

エラー(黄色い奴)はそもそも、なくさなきゃいけないものだし、
デザインが崩れるだけだからほうっておいている。
0975nobodyさん2008/03/14(金) 11:39:28ID:???
Core.phpでは
Configure::write('debug', 0);
と設定して
エラー表示したいコントローラーのメソッドの中で
Configure::write('debug', 2);
これ入れたり消したりしながら作業することにした
他に楽な方法あったら教えて
0976nobodyさん2008/03/14(金) 11:41:36ID:???
>>974
SQLだけ表示てどうやるんですか?
0977nobodyさん2008/03/14(金) 11:44:06ID:???
あとSQLに関してはCakePHPガイドブックに書いてあった、
SQLをログに記録するコラムを参考にdbo_mysqlを継承して
ログを取ることが出来るdbo_mysql_logを作った。

この本は1.1用で、1.2では少しフォルダ構造が違っているから説明しておくと
作ったdbo_mysql_log.phpは /app/models/datasources/dbo に置く。
これフォルダが無いけど、作ればちゃんと動くよ。
0978nobodyさん2008/03/14(金) 11:48:00ID:???
>>976
どうしても”SQLだけ表示”じゃないといけないのか?w

デバッグ用なんで力入れて作るものでもないから、
/app/views/layouts/default.ctp に CSSを付け加えて
display:noneで下のSQLの部分を非表示にし、同じく付け加えた
JavaScriptでON/OFFしているだけだけど。
0979nobodyさん2008/03/14(金) 11:58:52ID:???
コントローラ内で各ページで処理する関数を定義できるけど
コントローラにどのページをいれるべきなのか要領がつかめない
0980nobodyさん2008/03/14(金) 12:24:27ID:???
svnの設定もできて開発環境ばっちり
これからCakePHPをいじくりまわしてやるぞ
0981nobodyさん2008/03/14(金) 12:29:49ID:???
>>967
> CakePHPて恐ろしくメモリ食うな
> 8Mじゃすぐリミットオーバーするね

どっかのブログに書いてあった”間違い”を鵜呑みにするな。
バグで無限にメモリ消費しているだけだ。
0982nobodyさん2008/03/14(金) 14:52:16ID:???
>>981
967じゃないが
ググるとメモリ食うとかなり書いてあるんだけど。
素人書き込む場所ちゃうで
0983nobodyさん2008/03/14(金) 14:54:30ID:???
CakePHPの中規模以上で8Mで運営できてるやつおらんやろ?w
09849672008/03/14(金) 14:57:46ID:???
>>981
"Hello World!"を表示させたんですが!
0985nobodyさん2008/03/14(金) 14:59:06ID:???
8メガなんかで運用したいとか思ってる時点で、フレームワークやめろ
0986nobodyさん2008/03/14(金) 15:08:33ID:???
どうせウソだろと思って、ためしに4Mに制限して
やっているんだが、普通に動くんだが?

どういうことをしたらメモリが足りないのか書いてくれないと
誰も信用しない。

グーグルで検索したというのなら、当然それを見つけているはずなのだから、
どこに書いてあったかかけるはずだ。その書いてある記事を見て判断する。
0987nobodyさん2008/03/14(金) 15:10:03ID:???
>>983
質問するなよ。「俺は知らない」といっているのと同じ意味だぞw
0988nobodyさん2008/03/14(金) 15:24:23ID:???
CakePHPを使う大きな理由の一つがPHP4で動くということなんだから、
PHP4のデフォルトのmemory_limitの値、8Mで
CakePHPが動かないとしたらもっと話題になってるだろ。

常識で考えて。
0989nobodyさん2008/03/14(金) 22:10:57ID:???
嘘じゃなくて僕の環境も8Mオーバーはよくしますよ
フレームワークだからという結論で気にしてないのですが
0990nobodyさん2008/03/14(金) 22:12:25ID:???
googleで「cakephp メモリ」 と検索してみれば出てくるから
0991nobodyさん2008/03/14(金) 22:55:37ID:???
それで検索しても、信頼にたる情報はまったくないが?
0992nobodyさん2008/03/15(土) 01:17:46ID:???
>>991
頑固オヤジかw
素直になれよ、実際におこってるんだからしょうがないやん
0993nobodyさん2008/03/15(土) 01:29:06ID:???
まさかとは思うが、あの1行エントリが根拠とか言い出さないよな?
0994nobodyさん2008/03/15(土) 02:21:39ID:???
>>993
ブログラムの暴走じゃないのに8Mいくことがあるし
こんな現象はCakePHPだけ起こってるんだよ
PHPの実務経験8年ある俺が
暴走するプログラムつくるわけねーだろボケが
0995nobodyさん2008/03/15(土) 02:34:17ID:???
経験年数とか年がなんたらいうやつは大したことないのが世の常だが、確かにCakeはメモリーオーバーする。
大概はデバッガのせいかな。
0996nobodyさん2008/03/15(土) 02:37:44ID:???
>>994
知るかよw
cakeの肩を持つ訳ではないが。
0997nobodyさん2008/03/15(土) 02:44:27ID:???
ここは素人の集まりかよ
メモリオーバーするの俺だけじゃねーだろ?
おまいら見てるだけで実は作業してないんだろ
0998nobodyさん2008/03/15(土) 02:51:51ID:???
確かに私も最初にメモリオーバーしたよ
何でもプログラム暴走と決め付けるのはおかしいよ

常識的に考えて
0999nobodyさん2008/03/15(土) 02:53:34ID:???
a
1000nobodyさん2008/03/15(土) 02:53:55ID:???
>>996
おまえにいってないから死ねよ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。