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

このエントリーをはてなブックマークに追加
1nobodyさん
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです。

※sage推奨
※日本語マニュアルURLを貼るときは、http://book.cakephp.org/ja/view/1/ のようにしましょう(末尾のエンコードされたタイトル部分は不要)

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

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
2nobodyさん:2009/03/09(月) 10:56:11 ID:???
■過去スレ
【PHP】フレームワーク CakePHP 5ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1229669539/
【PHP】フレームワーク CakePHP 4ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1213892680/
【PHP】フレームワーク CakePHP 3ホール目【本命】
http://pc11.2ch.net/test/read.cgi/php/1205475360/
【PHP】フレームワーク CakePHP 2ホール目
http://pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/
3nobodyさん:2009/03/09(月) 10:56:29 ID:???
■その他いろいろ
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/

日本のcakePHP ユーザのためのハブサイト
http://cakephp-users.jp/

CakePHP 規約ワードメーカー WordMaker for CakePHP Conventions
ttp://www.cpa-lab.com/tech2/inflects/

あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/

CakePHP Note
http://www.garacter.com/notes/CakePHP+Note/ni:5

CakePHP入門リンク集
ttp://pub.studio15.jp/2007/11/13/cakephp-links/

CakePHPを使ったMVC設計のベストプラクティス - Sooey
ttp://www.sooey.com/journal/2008/03/26/717/

Qdmail(日本語メールコンポーネントとして利用可能なライブラリ)
ttp://hal456.net/qdmail/

CakePHPカンファレンス東京
http://conference.cakephp.jp/
4nobodyさん:2009/03/09(月) 10:57:11 ID:???
■ver1.1用
CakePHP プログラマーズ リファレンスガイド
http://cakephp.jp/doc/

連載:CakePHPで高速Webアプリ開発|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/cakephp

CakePHPフレームワークによる快速WEB開発 |codezine
http://codezine.jp/a/article/aid/670.aspx


■関連書籍(対応バージョンは2009/02時点)
・ver1.2系
CakePHP ポケットリファレンス※ver1.2beta
http://www.amazon.co.jp/dp/4774135038
CakePHP徹底入門
http://www.amazon.co.jp/dp/479811717X
・ver1.1系
CakePHPガイドブック
http://www.amazon.co.jp/dp/4839924317
Fast CakePHP
http://www.amazon.co.jp/dp/4774133418


■関連スレ
【PHP】フレームワークについて語るスレ12【総合】
http://pc11.2ch.net/test/read.cgi/php/1229960175/
5nobodyさん:2009/03/09(月) 10:57:55 ID:???
テンプレらしきものは以上
補足があればどうぞ

Have a Nice Cooking !

つか、なぜ前スレ落ちた?
6nobodyさん:2009/03/09(月) 13:19:06 ID:???
hasAndBelongsToMany で3つ以上のモデルを連携させることはできるでしょうか?

例えば、A,B,C という3つのモデルが連携して、A_id と B_id が決まったら
C_id が返る、というようなイメージなのですが。
7nobodyさん:2009/03/09(月) 15:20:58 ID:VNswFz5T
ガイドブックの1.2版まだ〜?
8nobodyさん:2009/03/09(月) 16:46:13 ID:???
8ゲットだぜ!
テンプレ作った人、乙です♪
9nobodyさん:2009/03/11(水) 09:16:15 ID:???
AjaxでOnchangeのときに一部分を更新させたい場合どうやって書くんでしょうか
$ajax->formと$form->endの間でreturn this.form.submit();
をやった場合には全部更新されてしまいました。
10nobodyさん:2009/03/11(水) 12:09:06 ID:???
>>9
optionsのupdateに書き換えたいdivのidを書いた?
11nobodyさん:2009/03/11(水) 13:40:54 ID:???
>>10
書きました。
form->endのボタンの場合はちゃんと指定部分だけ更新されるんですが、
その途中のform->selectのonChangeだと全部更新されてしまいます。
12nobodyさん:2009/03/11(水) 15:34:20 ID:57BlDi5P
更新時刻のmodifiedだけを簡単に更新する方法ってありますか?
普通にmodifiedだけupdateなりすればいいかなとは思ってますが、おすすめの方法があれば・・。
13nobodyさん:2009/03/11(水) 18:09:40 ID:???
関数の引数にIPアドレスを渡したら、セキュリティのためか
値が正常にわたってないみたいです。
IPアドレスを渡す方法があれば教えてください
14nobodyさん:2009/03/11(水) 18:38:42 ID:???
>>13
さすがにその質問はぼんやりしすぎてる気が・・。
もうちょっと具体的に書いたほうがいいかも。
15nobodyさん:2009/03/11(水) 19:06:24 ID:???
リンクで
http://hogehoge/コントローラ/関数/引数(IPアドレス)/
に飛ぶとコントローラ側に値が入ってません。NULLになっています。
リンクを作る前にIPアドレスを適当な英語に変換して
また関数側で英語をIPアドレスに変換すればうまくいくんですが・・・
16nobodyさん:2009/03/11(水) 19:23:03 ID:???
>>15
普通に出来たけど・・
値の取り方がおかしいんじゃないかな。
debugモードはオンにしてる?
17nobodyさん:2009/03/11(水) 20:50:52 ID:???
あー。コロンが入ってると駄目みたいです。
IPアドレス:ポート番号って値だったので。
なんとかして、そのまま受け取ることはできないかな
18nobodyさん:2009/03/11(水) 20:54:25 ID:???
エンコードしろよ
19nobodyさん:2009/03/11(水) 23:38:14 ID:???
>>17
逆にコロンそのままじゃなきゃいけない理由はあるの?
/で区切るとか、置換するとか>18さんの言うとおりエンコードするとか・・
20nobodyさん:2009/03/12(木) 00:14:51 ID:???
理由は特にないです。base64エンコードでやることにします。
ありがとうございました。
21nobodyさん:2009/03/12(木) 01:35:37 ID:???
逆に:付きでparams->namedでそのまま取り出せる気もするけど。
22nobodyさん:2009/03/12(木) 01:36:25 ID:???
間違った。$this->params['named']ね。
23nobodyさん:2009/03/12(木) 01:55:47 ID:???
もう少しデバッグ表示のパラメータをじっくり見たほうが色々応用が利く
24nobodyさん:2009/03/12(木) 04:42:04 ID:???
paginatorで出力される
page:1とかsort:createdとかが、見た目にクセがあるので
page=1&sort=createdみたいに普通のクエリストリングにしたいのですが、
ヘルパーに手を入れる必要がありますか?
25nobodyさん:2009/03/12(木) 08:09:24 ID:???
SQLクエリって1ページに何個くらいなら大丈夫かな。
キャッシュ使えば多少多くても大丈夫なんだろうけど、キャッシュなしで 7個は多いかな。
26nobodyさん:2009/03/12(木) 08:15:39 ID:???
>>25
SQLの内容によるからなんとも言えんな。
27nobodyさん:2009/03/12(木) 08:52:05 ID:???
>>26
ありがとう。そのままクエリコピペしようと思ったけどムリだった。。。
cakephpに限ったことじゃないけど、できるだけSQLに頼らず PHP側で処理した方が
動作が軽くなるって認識でOKですかね。
28nobodyさん:2009/03/13(金) 03:26:08 ID:P2u6tjWp
>>27
処理が何か知らないけど、SQLのほうがいいんじゃ。
基本debug=2で画面下にでる各SQLの実行時間を見ながら考えれば?
29nobodyさん:2009/03/13(金) 13:25:07 ID:???
>>27
ありがと。SQLの時間が見れたんだね。気づかなかった。
bindModelやったらだいぶ処理時間が短くなった。
アソシエーションは大事だね。
30nobodyさん:2009/03/14(土) 17:17:20 ID:Spxmyd/m
http://d.hatena.ne.jp/ngtn/20080208/1202400164

ここを参考にCake1.2で空メール処理を作ってたのですが、
Shellのクラス内で$uses = (モデル名)をやると

Error: Missing Database Connection. Try 'cake bake'

と表示され、データベースに接続することができません。
そもそもバッチファイルではデータベース接続設定が
独自に要るとか何か原因になりそうなことはないでしょうか?
31nobodyさん:2009/03/14(土) 23:39:30 ID:???
>>30
appの位置を変えたとか
32nobodyさん:2009/03/16(月) 05:17:54 ID:???
AuthComponentって、自動的にパスワードハッシュされるってことは、登録時にパスワードをsha1しておかないとダメなの?
33nobodyさん:2009/03/16(月) 07:59:04 ID:???
>>32 ん?どういうこと?既存のユーザーについて?
34nobodyさん:2009/03/16(月) 08:31:43 ID:???
いや、認証するときにpasswordフィールドはハッシュされるけど、ということは登録時にpasswordをハッシュしとかないとダメなのかなと
うまくいかないもんで聞いてみますた
35nobodyさん:2009/03/16(月) 09:06:11 ID:???
password()使ってハッシュ化
36nobodyさん:2009/03/16(月) 10:08:00 ID:???
>>34
登録時もAuthが自動でやってくれる。
$this->data['User']['password']に入ってれば。
37nobodyさん:2009/03/16(月) 10:13:29 ID:???
あ、ホントだ出来たスマンありがとう!
38nobodyさん:2009/03/16(月) 15:57:02 ID:???
もう少し試してから悩んでくれw
39nobodyさん:2009/03/16(月) 16:17:55 ID:???
逆にいうと、$this->data['User']['password']に入ってると問答無用でハッシュ化されるから、
バリデーションのとき面倒なのよね。
40nobodyさん:2009/03/16(月) 17:24:43 ID:???
>>39
しょうがないなぁ・・。
俺はここ最後まで呼んだらすごい楽になったよ。

ttp://cakephp.jp/modules/newbb/viewtopic.php?topic_id=706&forum=14&post_id=3741#forumpost3741
41nobodyさん:2009/03/16(月) 17:59:57 ID:???
ttp://www.atmarkit.co.jp/fdb/rensai/db_enginer03/table01b.gif
ここの第3正規形、注文明細の表を見てもらいたい。

商品:姫トランスと満月を探してサウンドトラック
を注文した顧客のデータを取得したい場合
cakeならどうやって取得するんですか?
アソシエーションを定義しててもうまく取得できないのですが
何かいい方法があるのでしょうか。
mysqlなので積集合が使えないしサブクエリ出来れば使いたくないです。
42nobodyさん:2009/03/16(月) 21:55:34 ID:???
>>41
ヒント:recursive, ContainableBehavior
43nobodyさん:2009/03/17(火) 06:49:48 ID:SCdB4QMU
どこか1.2のBakeしたものに対するCSSテーマの
サンプルとかいっぱいあげてるサイトないですか?
4424:2009/03/17(火) 09:48:33 ID:???
>>24
のページネーションのURLのカスタマイズについて、
どなたかわかりませんでしょうか?
45nobodyさん:2009/03/17(火) 10:47:08 ID:???
そこに労力をつぎ込む意味ってあるか?
46nobodyさん:2009/03/17(火) 13:19:25 ID:???
>>44
>>45 に同感だが、
やるとすればrouterの$namedのパラメーターで設定じゃないかな。
やったことないから実際はわからんけど。
4744:2009/03/17(火) 13:47:50 ID:???
>>45
>>46
Cakeで作られたサイトをいくつか見たのですが、
ページング処理のあるページのURLにコロンなどが含まれていなかったので、
みなさん、なにか細工されているのかと思いまして・・・

routerでnamedパラメータの区切り文字「:」を変えることはできるのですが、
それだと、
page=1/order=created
のようになるだけなので・・・

あまり拘っても意味ないのかな。
48nobodyさん:2009/03/17(火) 13:56:59 ID:???
snsの掲示板で登録ユーザーがユーザ名を変更すれば、
掲示板のユーザー名も変更される場合、
掲示板テーブルにはユーザIDと本文を記録して
ひとつのレスごとにIDで検索かけて名前を取ってくる
って方法でいいんでしょうか?
49nobodyさん:2009/03/17(火) 15:02:43 ID:???
>>48
そうです。
アソシエーション作っておいてユーザーテーブル勝手に持ってこさせるのがcakeです。
50nobodyさん:2009/03/17(火) 15:25:42 ID:???
>>47
検索エンジンのクローラーを別とすると、URLを見ているのは、HTML分かる人だけだわな。
とすると、クエリストリングだろうが、見慣れないcake式だろうが、そういう人が見ればどれでも一緒ということになる。
だからあまり気にすることないかと。
それよりは、面倒なところをcakeに任せた方がつくるのもメンテも楽だと思う。
5141:2009/03/17(火) 16:45:45 ID:???
>>42
まさに求めていたものでした。ありがとうございます。
ただ 'conditions'=>array(
conditionsに商品名=姫トランス&&商品名=満月を(ry
とした場合うまくいきませんでした。 )
52nobodyさん:2009/03/17(火) 17:40:40 ID:???
>>51
'conditions' =>array('AND'=>array(.......))
とかで出てこないすか?マニュアルのモデルの所読んでみて。
53nobodyさん:2009/03/17(火) 23:12:06 ID:???
javascript使って、フォームの入力欄を増減させたり、並べ替えたり、
選択肢を変化させたり、hiddenの値を変化させたりすると、
Securityコンポーネントに引っかかっちゃうんですけど、
なにか対処法はありませんかねぇ・・・。
54nobodyさん:2009/03/18(水) 03:24:16 ID:???
逆にpagenationのajaxとかは引っかからないの?
55nobodyさん:2009/03/18(水) 04:41:39 ID:O+T5YpCd
>>47
sessionにConditions入れて、beforeFilterとかで、controllerとaction
みて、sessionを破棄とかしてた時期もあった。
56nobodyさん:2009/03/18(水) 11:04:58 ID:???
>>52
購入者名 商品名
________
購入者A 商品A
購入者A 商品B
購入者A 商品C
購入者B 商品A
購入者C 商品A
購入者C 商品B

というようなテーブルから商品AとBを買った購入者だけ取るのって難しくないですか?
AもしくはBなら簡単に出せるのですがandとなると
商品名がAかつBという行が存在出来ないので取れないんですよね。
5753:2009/03/18(水) 12:10:57 ID:???
>>54
ページネーションとかは問題ないですね。
フォームを出力したあとにjavascriptなどで変更してしまうと、
フォームヘルパーが出力したトークンと一致しなくなるので、
トークンチェックに引っかかってしまうわけです。
原因はわかるんですが、対処法が・・・
58nobodyさん:2009/03/18(水) 21:41:22 ID:???
javascriptで、5段くらいの連動selectタグを
作りたいのですが、
cakeで実行するのに、どのような方法が便利か、
あれば教えてもらえませんか?

quickformでやろうとしたのですが、
DBから検索して配列に突っ込んで、と
あまりスマートにできません。
59nobodyさん:2009/03/19(木) 03:39:36 ID:L7hopyy3
>>58
量が少ないなら、データ全部JSONで吐いて処理するけど、
多いなら普通選択されたキーをAJAXで渡して、JSONでとって、次のセレクトの中身入れ替える。
jqueryならかなり簡単。
60nobodyさん:2009/03/19(木) 08:55:11 ID:???
AjaxヘルパーをjQueryにしてくれればいいのに・・・。
61nobodyさん:2009/03/19(木) 15:52:49 ID:???
>>60
俺もそう思う。
そろそろその時代かな。

ただjqueryヘルパーってどっかで見かけた覚えあるけど。
62nobodyさん:2009/03/19(木) 17:59:32 ID:???
ビューでAuthコンポーネントのメソッド使いたいときって、どうしてますか?
63nobodyさん:2009/03/19(木) 19:37:58 ID:???
>>62
beforeRenderとかで$this->set('controller' ,$this)
64nobodyさん:2009/03/20(金) 04:10:24 ID:???
>>63
え、そんなんでメソッド使えんの?
65nobodyさん:2009/03/20(金) 07:03:07 ID:???
idとnameを対応付けるテーブルhogeがあって、登録時にhoge_idをselectで自動で選びたいんだけど出来る?
66nobodyさん:2009/03/20(金) 07:13:57 ID:???
サーセン、cookbookに載ってました。ごめんなさい。
67nobodyさん:2009/03/20(金) 08:24:36 ID:???
>>60  >>61
JQueryヘルパーあるよ
07/09/38 JQuery Ajax Helper for CakePHP
http://www.tuliofaria.net/jax-jquery-ajax-helper-for-cakephp/
07/03/05 CakePHP jQuery Helper
http://www.consulenza-web.com/cakephp-jquery-helper.dc-28.html
68nobodyさん:2009/03/20(金) 09:17:36 ID:???
その存在は知っているが、やはり標準にしてほしい・・・。
69nobodyさん:2009/03/20(金) 09:50:18 ID:???
>>68
「標準」って良いかなあ???
CakePHP1.2から「Emailヘルパー」が標準になったけど、安心して使えないのでひどい目に
あった。安定稼働させる為にあれこれ調べメチャ手を取られた。
結局「Qdmail使うしかない。」の結論になった。
CakePHPは、部品が簡単に追加できるから、良い部品を追加して使う方がしあわせになれる
のでは?
70nobodyさん:2009/03/20(金) 10:26:20 ID:???
んー、そういう考え方もあるかな。
71nobodyさん:2009/03/20(金) 16:28:56 ID:???
「Emailコンポーネント」がCakePHP1.2から標準装備となった件で言うと、
Email関連ツールがCakePHPの標準装備となった点はユーザとして喜ばしい事であるよね。
しかし、実際に使って見るとマルチバイト文字を使う所で制約が大きかったり、使えなか
ったりする所があり「なんだEmailコンポーネント使えねージャン。」と言う事になって
いる。しかし、本来は標準装備された事はありがたい事なので、我々マルチバイト文字文
化圏の人間が、CakePHPメンバに協力し、CakePHP1.2のEmailコンポーネントがマルチバイト
文字でも正しく動くように改良出来ればいいんだよね。
(ただし、誰がやってくれるのか?の問題があるけど)
72nobodyさん:2009/03/20(金) 16:46:34 ID:???
バリデーション周りもマルチバイトのことはほとんど考慮されてないね。
ま、拡張は楽だけど。
73nobodyさん:2009/03/20(金) 18:10:29 ID:???
Cake固有の話題ではないのですが、
たとえば、
あるUserが投稿したPostの一覧を表示するアクションがあるとすると、
そのアクションはUsersControllerとPostsControllerのどちらに実装するものなのでしょうか?
MVCをはじめて間もないので・・・
よろしければ理由と一緒に教えていただけないでしょうか?

また、参考になる書籍やページがあればそれも教えてください。
74nobodyさん:2009/03/20(金) 18:20:40 ID:???
>>73
Postの一覧を表示するアクションは、PostsControllerに記述している。
理由は、DBでPostsテーブルを作り、Bakeすると、Postの一覧を表示するアクションは
PostsControllerの中に、index()アクションとして自動生成されるから。
(これがCakePHPの標準的な考えかたと理解してます。)
http://kuri6005.sakura.ne.jp/cake/wiki/index.php?Bake%A4%C7%A5%D6%A5%ED%A5%B0%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB%A4%F2%BC%AB%C6%B0%BA%EE%C0%AE%A4%B7%A4%C6%A4%DF%A4%BF
7573:2009/03/20(金) 18:28:42 ID:???
>>74
すべてのPostの一覧ならばそうするのですが、
「あるUserが投稿したPostの一覧」の場合にどうしようかと思いまして・・・
76nobodyさん:2009/03/20(金) 19:22:42 ID:???
>>75
どんなURL(controllerとactionと引数)になるかを考えてみよう
/posts/index/user_name or /posts/list/user_name
/users/posts_list
のどちらかになる
postの一覧から特定のユーザーのpostを表示するのならPostsControllerで
ログインしたユーザーが自分のpostを一覧するとかなら、後者でもよいと思う
7776:2009/03/20(金) 19:28:07 ID:???
当然、後者のパターンも
/posts/mylist
でPostsControllerで実装してもよい
78nobodyさん:2009/03/20(金) 19:29:15 ID:???
これで作ったものって
画像のプロテクトできる?
79nobodyさん:2009/03/21(土) 02:25:58 ID:???
>>78
そもそも画像のプロテクトってどんなのを想定してるの?
80nobodyさん:2009/03/21(土) 03:48:06 ID:???
>>71
そんな事はチラシの裏にでも書いとけ
81nobodyさん:2009/03/21(土) 05:52:16 ID:???
>>71
お前に言われなくても、そんなこたー皆んな知ってる
CakePHPのマルチバイトをお前が整備したらほめてやる
82nobodyさん:2009/03/21(土) 11:34:24 ID:7xjpEJ1g
人の作ったDBをCakeで焼きなおしているのですが、Postgre7.4です。
ContactテーブルとAddressテーブルがあり、ひとつのContactは2つAddressを
もてるような設計です。ContactテーブルがAddressのキーを2つ持ってる感じです。

ContactモデルでbelongToで、Address1、Address2にそれぞれのforeign_keyで
つないでいる感じなのです。

saveAllを使ってAddress1,2もContactも全部保存しようとしているのですが、
編集時、Address1,2のUpdateはできるのですが、ContactのUpdate時に
それぞれの外部キーが空のSQLが実行され、エラーとなります。

saveAllの前に渡す配列に直接外部キーを別途取得して書き込んでも、無理です。

バグなのでしょうか?1.2の最新版なのですが。


83nobodyさん:2009/03/21(土) 12:43:40 ID:???
>>82
まずコード晒してみたら?
84nobodyさん:2009/03/21(土) 15:08:18 ID:???
>>78
画像のプロテクトの意味がよくわからないけど printscreenで取られないようにってこと?
それだったらどうやっても無駄だよ。

最終手段はデジカメ撮影でパクられるから。
85nobodyさん:2009/03/21(土) 15:50:04 ID:???
>>84
もしデジカメでしか出来なくしたら十分効果あるだろ
何この頭悪い発言
86nobodyさん:2009/03/21(土) 16:12:37 ID:???
プリントスクリーンまで禁止にするって事は
OSの機能いじるって事だがな
そこまでやるのかって話だろ
87nobodyさん:2009/03/21(土) 16:34:08 ID:???
>>86
「デジカメで取られるから何しても無駄」って風に書いてあるだろ
文章がおかしいんだよ
88nobodyさん:2009/03/22(日) 22:51:16 ID:???
betaまでしか対応していないのが分かってたけど「CakePHP ポケットリファレンス」を買ってしまった。
結構知らないメソッドとかあるんだなぁ。

早く1.2正式版対応のを出してくれ!
89nobodyさん:2009/03/24(火) 10:19:40 ID:VfITkfEn
Zendにしようかコッチにしようか悩んでます
皆さんはどのへんにメリット感じてこちらを選んだんですか?
90nobodyさん:2009/03/24(火) 10:48:10 ID:???
Qdmailコンポーネントをつかって、SimpleReplace的な事をするにはどうパラメータをわたせばいいの?
91nobodyさん:2009/03/25(水) 00:05:18 ID:???
>>90
これ読んで出来ないならしらね
ttp://hal456.net/qdmail/simple_replace
92nobodyさん:2009/03/25(水) 11:45:22 ID:???
CakePHPによる実践Webアプリケーション開発 (単行本(ソフトカバー))
安藤 祐介 (著), 岸田 健一郎 (著), 新原 雅司 (著)
http://www.amazon.co.jp/dp/4839930651/
発売日: 2009/4/8
93nobodyさん:2009/03/25(水) 11:47:53 ID:???
>>92
■目次
Chapter 1WebアプリケーションフレームワークCakePHP
1-1 CakePHPについて
1-2 CakePHPのダウンロード
1-3 CakePHP 1.1と1.2の違い
1-4 基本的な仕組み

Chapter 2アプリケーションを作り込んでいく
2-1 グループウェアをつくる
2-2 予定表
2-3 ユーザ管理
2-4 関連を作る
2-5 ACLを使ったアクセス制御
2-6 見た目を調整する

Chapter 3テストコードを記述する
3-1 テスティングフレームワークを利用する
3-2 モデルのテスト
3-3 コントローラのテスト
3-4 コンポーネントのテスト
3-5 ヘルパーのテスト

Chapter 4機能を拡張する
4-1 アラートメール
4-2 携帯電話の対応
4-3 CSVでの出力
94nobodyさん:2009/03/25(水) 14:54:45 ID:???
国際化したとして、登録された時間が全部タイムゾーンでずれる訳ですけど、どのようにしてます?
95nobodyさん:2009/03/25(水) 17:29:44 ID:???
modelでバリデーションを定義して、controllerでvalidate()実行すると、
バリデーションが正常に機能していることが確認できるところまでできました。
しかしview側にエラーメッセージが表示されません。

ぐぐったら $form->error('Model.field') を使う、とありましたが、表示されません。
$form->input() のoption配列のerrorも指定していません(のでエラー出るはずですよね?)

validate()を実行するだけではエラーメッセージをビュー側で使えないのでしょうか?
96nobodyさん:2009/03/25(水) 17:55:32 ID:???
>>95
Model::validateにmessageは指定されている?
97nobodyさん:2009/03/25(水) 18:00:52 ID:???
>>96
はい、指定されています。
controller内でmodel::validationErrorsを出力してみると、
エラーメッセージがセットされていることも確認済みです。

CORE/cake/lib/view/helper/form.php の error()を見ると、
if ($error = $this->tagIsInvalid()) {
とあるのですが、ここが毎回falseになってるようです。
モデル、フィールド名を引数に取るメソッドらしく、
デフォルト引数がnullなので取れてない??
うーん・・・なぞだらけです
98nobodyさん:2009/03/25(水) 18:11:42 ID:???
原因がわかりました。
バリデーションで引っかかった場合にredirectしていたため、そこで初期化されてたようです。

ということは、ログインのメソッドをmember_controllerに実装した場合、
ログインフォームのビューはview/members/以下におかないとダメなのでしょうか?
複数ページにログインフォームを置きたいのです。。。
99nobodyさん:2009/03/25(水) 18:33:20 ID:???
>>98
つエレメント
100nobodyさん:2009/03/26(木) 10:37:51 ID:???
なんでコミュニティの人って気難し屋の変な人ばっかりなの?
101nobodyさん:2009/03/26(木) 10:54:26 ID:???
コミュニティってどこの?
102nobodyさん:2009/03/26(木) 15:18:49 ID:???
プログラマ特に職業にしてる人なんて、そんなもんだろ。
まぁ、「ばっかり」っていうのは単なる主観だと思うが。
さらに文章だけでドンだけ分かるのかと・・。
103nobodyさん:2009/03/26(木) 22:37:43 ID:???
104nobodyさん:2009/03/27(金) 12:25:18 ID:???
paginateでアソシエーション先のデータもとってくるときの話だけど。

アクションごとに取ってきたい条件や、フィールドが違う場合どうするのが賢いの?

バインドしまくるのもなんか変な気がするし。

モデル作りまくればいいのかね
105nobodyさん:2009/03/27(金) 17:23:07 ID:???
>>104
BIND
UNBIND
じゃないの?

モデルでもうちょっとスマートにBINDするとか
106nobodyさん:2009/03/28(土) 11:56:46 ID:???
すみませんが、質問です。他スレで質問したのですが、レスがなかったので...。

【Apache】mod_rewriteについて語るスレ
http://pc11.2ch.net/test/read.cgi/php/1023791370/373

あるアプリケーションで、フロントコントローラであるindex.phpを、一般画面
用と管理画面用との2つ用意したいのです。アプリケーションも独立させます。

www(ドキュメントルート)
|
+ index.php(1. 一般画面用)
|
+ admin
     |
     + index.php(2. 管理画面用)

そして、http://ドメイン名/admin/... となったリクエストだけ、2.の管理画
面用index.phpに渡すようにしたいのです。

http://ドメイン名/hoge → index.php?hoge (1.の一般画面用)
http://ドメイン名/hoge/fuga → index.php?hoge/fuga (1. の一般画面用)
http://ドメイン名/admin/hoge → index.php?hoge (2. の管理画面用)
http://ドメイン名/admin/hoge/fuga → index.php?hoge/fuga (2. の管理画面用)

このような設定を、.htaccessなどで指定することはできるでしょうか?

--

要するに、admin routing を使いたくないのです。管理画面と一般画面とで
バリデーションを変えるために、モデルを独立させたいのが主な理由です。
107nobodyさん:2009/03/28(土) 19:21:55 ID:???
>>106
rewriteruleじゃ駄目なの?
108nobodyさん:2009/03/29(日) 18:39:50 ID:???
同じテーブルへ外部キー2つ張りたい場合のCakeの命名規約ってどうなってるの?
調べても出てこなかった
109nobodyさん:2009/03/29(日) 22:30:44 ID:???
外部キーは一つでも二つでも百個でも同じだと思うが
110nobodyさん:2009/03/29(日) 23:11:16 ID:???
フィールド名どうするのって話
111nobodyさん:2009/03/30(月) 01:25:18 ID:???
112nobodyさん:2009/03/30(月) 01:28:40 ID:???
フィールド名声源されてるのってidと時間だけだろ
113nobodyさん:2009/03/30(月) 01:55:47 ID:???
え、時間も?
意識したことなかったけど、
どういう時に制限されるんですか?
114nobodyさん:2009/03/30(月) 02:46:48 ID:???
作成日時はcreated
更新日時はmodified

別に規約無視して自分で手動で突っ込んでもいいけど
115nobodyさん:2009/03/30(月) 06:28:38 ID:???
titleとnameもあるよ
116nobodyさん:2009/03/30(月) 11:12:14 ID:???
>>112
だからid二つ作りたい時にどうするの?って聞いてるんだけど
user_idを二つ置くわけにはいかないでしょ?
外部キーって普通他テーブルのidにしか張らないよね
117nobodyさん:2009/03/30(月) 11:13:32 ID:???
AテーブルにBテーブルのb_idと言うフィールドを2つ置けないでしょ?って話
118nobodyさん:2009/03/30(月) 11:30:06 ID:???
だからフィールド名はなんでもいい。って皆さん教えてくれてるじゃん。
119nobodyさん:2009/03/30(月) 12:01:42 ID:???
とりあえずRDBMSのリレーションとは何なのかと、そのリレーションのやり方を勉強してから噛みついて欲しい
120nobodyさん:2009/03/30(月) 12:47:34 ID:???
>>116

associationを自分で書いて、foreignKeyに好きなfield's nameヲ設定シロ。
∴ foreign keyの命名ruleは、実質存在しない。

命名rule気にするときは、bakeする時
121nobodyさん:2009/03/30(月) 12:50:55 ID:???
>>118
例えばrecursive=1で検索したときに、
b_id1とb_id2があったら
2つのBモデルが結果に含まれるのか?って話をしてるんだけど。
122nobodyさん:2009/03/30(月) 12:51:59 ID:???
>>120
そういえばそうか
ありがと
123nobodyさん:2009/03/30(月) 12:52:32 ID:???
リアルで馬鹿なのか?
124nobodyさん:2009/03/30(月) 12:54:23 ID:???
外部キー制約を張るフィールドは規約でこう命名しろ、ってされてるから
同一モデルに複数張る場合は無いのかと思っただけだよ
でも実際フィールド名で規約を守る意味自体が確かにbakeのためくらいしかないね
125nobodyさん:2009/03/30(月) 14:29:00 ID:???
んなこたーない
126nobodyさん:2009/03/30(月) 15:45:19 ID:???
無いというだけ言わずに例示したら?
127nobodyさん:2009/03/30(月) 15:48:22 ID:???
上に書いてあるじゃない
128nobodyさん:2009/03/30(月) 15:51:46 ID:???
フィールド命名規約を守る意味は実質無いとは書かれてるね
129nobodyさん:2009/03/30(月) 17:59:51 ID:???
cakephp1.1 から 1.2 って全然スピード変わったよね。
cakephp 1.1 はもっさり動作でサイト作った後キャッシュやらんと使い物にならんかったが
cakephp1.2 だとキャッシュしなくても全然イケル。

こりゃいい!
130nobodyさん:2009/04/03(金) 11:08:47 ID:???
findでfieldsにcount()とかsum()を使うと、
戻り値が
data[0][0]['count']みたいになっちゃうんだけど、
afterFindとかで整形する方法以外で、
なんとか
data[0]['post']['count']に入れる方法ないかな?

count(*) AS Post.count
とかやってみたけどエラー出ちゃう;
131nobodyさん:2009/04/04(土) 01:15:43 ID:???
ごめん、教えてちょ。

アクション内で、動的にテーブルの列の追加をやっているんだけど、
デバッグモードON時(1以上)に、列追加後にfindかけると
キャッシュからスキーマ読まれて、追加した列が取得できない。

ブラウザの更新ボタンを押せば、追加した列を取得して表示してくれる。

デバッグモードOFFであれば大丈夫なんだけど、
ONの時にもちゃんと列を取得してもらうにはどうすればいいのかな?
132nobodyさん:2009/04/04(土) 14:44:04 ID:???
>>131
追加した時にキャッシュをクリアすれば良いのでは。
133131:2009/04/05(日) 01:20:53 ID:???
>132
キャッシュのクリアはやってるつもりなんだけど、
合ってるのかわからん。

これでいいんだよね。
$this->モデル名->cacheQueries = false;


列追加はALTER TABLE ADD をSQL直書きで、queryメソッド。

上のcacheQueriesはどこで設定したらいいか判らないから、
findする前後、列追加の前後、
いろんなところに書いてみたけど、ダメだった。

デバッグモードOFFなら大丈夫って書いたけど、
追加した列はupdateできなかった。


ローカルのテスト環境はWindows
XP、PHP5.2.8、cakePHP1.2.2.8120、MySQL5.0.67

本番テスト環境はさくらサーバ
FreeBSD、PHP5.2.8、cakePHP1.2.2.8120、MySQL4.0.27


誰か教えてちょ〜。
134nobodyさん:2009/04/05(日) 03:31:04 ID:???
>>133
Modelのsaveメソッドでは条件が合えば自動でキャッシュをクリアしてる。
自前でテーブル足すとかしたらこれが効いてないんでしょうかね。

Modelクラスのソースのsaveメソッドの最後の方ででてくるから参考にしてみては。
135131:2009/04/05(日) 09:18:55 ID:???
>>134
サンキュー!
ちょっと見てくる!!

でも解決しなかったら、また教えてちょ。
ありがとうね!
136nobodyさん:2009/04/05(日) 09:47:10 ID:???
if(isset($box)){

}
137nobodyさん:2009/04/05(日) 09:49:49 ID:???
if(isset($box)){
if($box == 'hako'){
echo '処理1';
}
}

ってやらずに
if($box == 'hako'){
echo '処理1';
}

だけだとnoticeエラーが出る。
なんかスマートな書き方ありませんでしょうか。

if(isset($box) == 'hako'){
echo '処理1';
}

だと$boxがセットされているだけでtrueになっちゃうし。。。
138nobodyさん:2009/04/05(日) 10:14:24 ID:???
if( isset($box) && $box == 'hako' ){
echo '処理1';
}
じゃだめ?
1行にしただけだけど。
139131:2009/04/05(日) 11:07:23 ID:???
>>134
解決しました!!
ありがとう!!

仰ってた通りModelクラスの最後の方の
_clearCache()を見てたら判りました!


似たような事やる方がいらっしゃるかもしれないので、
解決した方法を書いておきます。

私はバカでただのゴミ野郎なので、
判りづらい事書いちゃったらすんません。


cakePHPは現時点最新の1.2.2.8120。
まず、アプリ名\cake\libs\model 内のmodel.phpから
_clearCache() が怪しいと睨む。

同ソース内のsaveメソッド最後の方の
$db->delete($this)
辺りで、
$this->_clearCache();
こんな感じで_clearCache()が引数無しで呼ばれたりしてる。

_clearCache()、やってる事はよく判らんが、
最終的に
clearCache($assoc);
っていうのをやってる。

次に続く・・・
140131:2009/04/05(日) 11:09:46 ID:???
139の続き

$this付いてねーから、e()とかh()みたいに、
どこでもが使えて、みんなが大好き
アンパンマンみたいな存在の関数なんじゃねーのと思い、
アプリ名\cake\basics.php
を探してみると、
clearCache($assoc);
発見。

clearCache($params = null, $type = 'views', $ext = '.php')
こんな感じになってて、引数指定しないとデフォルトでviews、
アプリ名\app\tmp\cache\views 内を
一掃するようになってるみたい。

ならばfindかける前に
clearCache(null,'models');
すればいんじゃねーのと思い、やってみたがダメ。
もしかしたら、findの全然前に、既にモデルキャッシュ読んでるんじゃねーのと思い、
逆に、列追加(ALTER TABLE ADD)のクエリー発行した直後に書いてやったら
無事成功!!!!

ローカルテスト環境のWindows、本番のさくらサーバ環境、ともに出来てる事を確認。

以上です!
長々と失礼しますた〜。


さー!次は携帯用の表示、振り分け方法を考えないと!!!
141nobodyさん:2009/04/05(日) 14:05:16 ID:???
>>138
あ!それでいけそうな予感。
ありがとうございました!
142nobodyさん:2009/04/05(日) 14:41:48 ID:???
検索結果のcreatedが同一のものを
一件に纏めてpaginate compornentしたいのですが
これはcakeではどのように書けば良いのでしょう?

ヒントを頂けると有難いです
143nobodyさん:2009/04/07(火) 04:31:48 ID:???
マスタをセレクトボックスに出してるんだけど
並び順をモデルのデータから自動的に行う方法ってある?
例えばorderフィールドを作っておけば自動的に参照するとか。
144nobodyさん:2009/04/07(火) 06:31:21 ID:???
orderフィールドを作っておいてそれがorderだと指定すれば
145nobodyさん:2009/04/07(火) 06:32:54 ID:???
ちなみに指定の仕方はlimitとかと同じ
146nobodyさん:2009/04/07(火) 06:34:05 ID:???
order句を指定したくないんだけど
find時またはformヘルパーで自動的に解釈してくれる機能は無いのかなと
147nobodyさん:2009/04/07(火) 12:44:21 ID:???
指定されないのに勝手にソートされたら逆にものすごい困ると思うが
148nobodyさん:2009/04/07(火) 13:21:48 ID:???
afterFindでSet::sortでもかけるとか。
149nobodyさん:2009/04/07(火) 14:22:06 ID:???
こんにちは
デフォルトのデザインダサいので変えたいのですが、どうすればいいのですか?^^;
150nobodyさん:2009/04/07(火) 14:28:55 ID:???
>>149
スタイルシート外しちまえ。
結構テンプレあるぞ。
151nobodyさん:2009/04/07(火) 18:36:33 ID:???
>>147
orderフィールドを作らなきゃ良いだけでしょ
フレームワークにその手のものは多数あるのに何言ってんの
152nobodyさん:2009/04/07(火) 20:03:52 ID:???
>>149
「cakephp テンプレート」でググレカス
153nobodyさん:2009/04/07(火) 20:13:46 ID:???
>>152
鬱せーカス
154nobodyさん:2009/04/07(火) 20:21:23 ID:???
コントローラーが多い場合どうしてる?
フォルダで階層化してもclass名とか衝突するからうざいよね。
155nobodyさん:2009/04/07(火) 20:36:59 ID:???
クラス名の衝突なんて起こったことないわ
そもそもフレームワークの枠組みの中でしかクラス作らないし
156nobodyさん:2009/04/07(火) 21:15:02 ID:???
Folderモデルとか作ろうと思ったら、コアのFolderクラスと衝突するね。
コアのクラスにはCake〜とかプレフィックス付けといてくれればいいのに。
157nobodyさん:2009/04/07(火) 23:56:01 ID:???
すみません
paginateのcompornentを使ったときに、
group byで纏めたデータが何件あったのか、sqlで書くところの
from *, count(data) as countみたいのをやりたいのですが、
どういう項目に書けばいいのでしょう??
158nobodyさん:2009/04/08(水) 00:20:31 ID:???
>>156
こっちが適当に名前かえるしかないね。
フレームワークはそういう規約的な知識は求められても仕方が無い。
159nobodyさん:2009/04/08(水) 03:47:51 ID:???
>>154
フォルダで階層化なんて普通するの?
俺そんなことやらないけど。
コントローラー作りすぎなんじゃないの?
160nobodyさん:2009/04/08(水) 03:53:25 ID:???
作りすぎたところで名前が被るとかおかしい

名前が同じなら同じコントローラにすればいいし
161nobodyさん:2009/04/08(水) 04:12:52 ID:???
コントローラ名というかクラス名がコアで使われてるのとかぶっちゃうんでしょ。
俺も前に添付ファイルを扱おうと思って
「File」モデルとか作ろうと思ったら作れなくてちょっと悩んだことあるw
つってもかぶりそうなクラス名はFile、Folder、Page、Configureぐらいじゃないかな?
162nobodyさん:2009/04/08(水) 04:15:54 ID:???
それコントローラの増加と関係ないじゃん
163nobodyさん:2009/04/08(水) 05:47:30 ID:???
containで、任意のフィールドで結合するにはどうすれば?
164nobodyさん:2009/04/08(水) 06:25:51 ID:???
俺はテーブル名にプレフィックス付けるからモデル名が被ったことなんかないな。
165nobodyさん:2009/04/08(水) 06:56:54 ID:???
cakephpは予約語一覧とかでてないんだっけ?
166nobodyさん:2009/04/08(水) 13:00:36 ID:???
みんなフリーワード検索とかどう対応してんの?
全文検索したいんだけど。スフィンクスは使いたくないんだよね。

CAKEだけで全文検索をスマートにやるやり方を!!
167nobodyさん:2009/04/08(水) 13:02:29 ID:???
>>149

views/layouts/以下に、default.ctpを作って、好きなようにHTMLを書く。
その、default.ctpが優先的に呼ばれるようになる。
168nobodyさん:2009/04/08(水) 13:50:09 ID:MhIiLyHN
>>166
LIKE句じゃ駄目ずらか?
169nobodyさん:2009/04/08(水) 14:42:57 ID:???
>>166
DBのを使ってます
170nobodyさん:2009/04/08(水) 14:50:25 ID:???
>>168
LIKE検索より数十倍高速な全文検索
というフレーズにあこがれてるんです><
171nobodyさん:2009/04/08(水) 16:53:26 ID:???
いやだからデータベースにデータが入っている以上
データベースのアクセス速度は越えられないわけで
172nobodyさん:2009/04/08(水) 17:01:13 ID:???
>>171
MySQLならLIKE検索とFULLTEXT_INDEXを使った検索では何十倍も速度が違うぞ。

>>166
>>CAKEだけで全文検索をスマートにやるやり方を!!
NamazuなりLuceneなりを使うしかないんじゃない?
173nobodyさん:2009/04/08(水) 17:16:31 ID:???
誰もMySQLとは言ってないので
というか汎用的なものじゃないとフレームワーク使う意味ないので
174nobodyさん:2009/04/08(水) 17:16:53 ID:???
>>172
ですよねー。
でもレンタルサーバ等でそういったものを
インストール出来ない環境が多いんでなんとかしたいんですよね。

今さくっとNgramで全文検索用作ったけどinodbとmyisamが混じって気持ち悪いし
トランザクション効かないしで><
175nobodyさん:2009/04/08(水) 17:25:03 ID:???
>>173
全文検索の無い主要なRDBなんてあるとおもってるの?
LIKE検索なんて比較対象じゃないわ
176nobodyさん:2009/04/08(水) 17:26:12 ID:???
ちなみにLIKE検索は、前方一致しかインデックスが使われない。
○○%は速くても
%○○や
%○○%はシーケンシャルアクセスになりオンデマンドサービスで使えるものじゃない
177nobodyさん:2009/04/08(水) 17:27:30 ID:???
で、俺はセナっていうMySQL用全文検索エンジン使ってる。
レンタル鯖で入れられないならRDB標準のを使えばそれまでだろ。

標準のはテーブル越しのインデックスが作れなかった気がしたがな
178nobodyさん:2009/04/08(水) 17:36:18 ID:???
179nobodyさん:2009/04/08(水) 18:11:52 ID:???
これでおk

$ret = `find . -type f | xargs grep あああ`;
180nobodyさん:2009/04/08(水) 18:12:55 ID:???
>>178
質問者はMySQLなんて一言も言ってないのにMySQLの話をし出したから
誰もMySQLとは言ってないという指摘になったわけで
181nobodyさん:2009/04/08(水) 18:52:51 ID:???
>>180
> >>178
> 質問者はMySQLなんて一言も言ってない
からこそ、RDBMSの具体例としてMySQLを挙げたんじゃないか?

君は集合の概念があまりわかってないみたいだね。
182nobodyさん:2009/04/08(水) 19:47:21 ID:???
MySQLだろうとなんだろうと全文検索はある
183nobodyさん:2009/04/09(木) 00:24:09 ID:GNSodjfY
しかし日本語の全文検索はというと
184nobodyさん:2009/04/09(木) 00:50:39 ID:???
あるかどうか知りたいなら調べてきたら?
185nobodyさん:2009/04/09(木) 09:35:38 ID:???
>>180
後半のこと
186nobodyさん:2009/04/09(木) 19:23:23 ID:???
自分で作ったスクリプトもvendorsに入れて使っていいですよね?
187nobodyさん:2009/04/10(金) 01:41:28 ID:TR2k1lyd
そうさ明日からお前が vendor of the ship
188nobodyさん:2009/04/10(金) 09:36:51 ID:???
実践本買った
おすすめ
189nobodyさん:2009/04/10(金) 21:57:29 ID:???
上のほうで話題になってたけど、
コアのクラスでモデル名と衝突しそうな
File、Folder、Page、Configure、
それぞれ、なにか代わりになるいい名前ないかな?

自作CMSに挑戦しようと思ったら、使えないモデル名ばっかりで
いっきにモチベーションが・・・
MyFile、MyFolderなんてのもカッコ悪いしなあ・・・

ConfigureはConfigurationでもいけるか。
PageはContentかな・・・?
190nobodyさん:2009/04/10(金) 22:15:51 ID:???
Myのが正しい
と言うか本家のコアクラスで同じ事ができないのかを考えるべき
継承してAppつけるのも良い
191189:2009/04/10(金) 22:27:15 ID:???
>>189
いえ、ライブラリじゃなくて、モデル名なんですよ。
フォームに

name="data[MyFile][hoge]"

とか表示されるのは、なんかかっこ悪いので・・・

symfonyはコアのクラスにはsfってついてるのになぁ・・・
192189:2009/04/10(金) 22:28:06 ID:???
間違えました;
>>190 です。
193nobodyさん:2009/04/10(金) 23:01:54 ID:???
>>189
File → Document
Folder → Directory
194nobodyさん:2009/04/10(金) 23:18:39 ID:???
そういう言いかえをするくらいならMyの方が良い
意味的にはっきりしてる
195nobodyさん:2009/04/11(土) 02:37:51 ID:1ZQJOiPg
Yourでもいいよね
Ourとか
196nobodyさん:2009/04/11(土) 13:10:59 ID:???
>>188
この実践本いいよね。
安い中古商品でたら買う予定。出たら教えてチョ
09/4/8発売「CakePHPによる実践Webアプリケーション開発」3,150円
(264ページ。値段の割にチョイページ数少ない。SimpleTestの項、もう少しページ数を
割いてくれてる事を期待してたのにチョイ少ない。残念!)

09/3/14発売の「CakePHPによるWebアプリケーション開発」2,940円も安い中古商品で出た
ら買チャオ  現在2,690円(2,350+340)あり。どうしようかな?買チャオかな?
197nobodyさん:2009/04/11(土) 13:12:35 ID:???
いま箱根でやってる合宿もいいよね。
ttp://d.hatena.ne.jp/yandod/
4名のEthna工作員が潜入してんだ。
ttp://d.hatena.ne.jp/sotarok/20090410/1239325405
198nobodyさん:2009/04/12(日) 08:50:57 ID:???
pagenateのパラメータ指定をモデルに設置したいのですが、何か良い方法はありますか?

わざわざコントローラに
$this->pagenateでパラメータを指定すると行数が増えてしまいますし、
データの取得はなるべくモデルでしたいと思いまして。
199nobodyさん:2009/04/12(日) 08:57:33 ID:???
そういえば$this->paginate()と言うメソッドと
$this->paginateと言うプロパティがあるんだな。
これじゃあ、$this->paginate()の関数ポインタ使う場合どうしたら?とか思ってしまう。

ところでモデルからコントローラを使う手段は無かったと思うから
やるならコンポーネントだと思う
200nobodyさん:2009/04/12(日) 09:05:50 ID:???
>>199
パラメータのほうは Controller::paginateParam とかにしてほしいね。
ぱっと見、わかりにくいし。
というか、findみたいに、毎回指定する方法じゃだめだったんだろうか?

>>198
モデルからコントローラをインポートすればできそうだけど、
そこまで無理をする必要はないかと。
201200:2009/04/12(日) 09:25:56 ID:???
ところで、上のほうで書いたんだけど、まだ解決しないので・・・

findのfieldsのなかでCountとかSumを使うと
戻り値のモデル名のところが「0」になっちゃうよね。

http://cakephp.blog16.jp/index.php/2009/03/06/p88
このページを参考に、
COUNT(*) AS Post__countみたいに指定してみたんだけど、
うまくPostに入ってくれない・・・

なにか良い方法ないかしら?
202nobodyさん:2009/04/12(日) 10:21:50 ID:???
>>198
pagenateなんか自前でやってるわ
203nobodyさん:2009/04/12(日) 10:27:59 ID:???
paginateを一々指定したくないと言うならこんな方法も考えられる
1.app_controllerでmyPaginate()を定義、paginate()をラップ
2.myPaginate()内でModel->paginateParamを取得する
3.各モデルにpaginateParamを定義

ただ、paginateのパラメータはモデル毎じゃなくてコントローラ毎に発生するものだと思うけどね。
もしやりたいというならこういう設計もあると言う事で。
204nobodyさん:2009/04/12(日) 10:44:26 ID:???
>>202
用意されてるのに、わざわざ自前でやる理由を知りたいなぁ。
もしかして、ログイン処理とかも自前?

>>203
>>paginateのパラメータはモデル毎じゃなくてコントローラ毎に発生するものだと思うけどね。
同意見ですね。
ほかで使いまわすことも少ないだろうし。
205203:2009/04/12(日) 11:25:52 ID:???
やるとしても、myPaginate()で
orderとかlimitが指定されていなかった場合に自動的に補完する、と言う程度が良いと思う。
コントローラ側から上書き可能な形にしておけば、やって損と言う事は無いと思う。

あまりコード量は減らないし構造が複雑化するからお勧めしないけどね。
206nobodyさん:2009/04/12(日) 14:46:32 ID:???
>>199
ありがとうございます。
paginate用コンポーネントにpaginateのプロパティを書いて
$this->コンポーネント名->メソッドで呼び出すことにしました。
コントローラーがすっきりして良いですね。
207199:2009/04/12(日) 14:50:45 ID:???
俺だったらinitialize()でcontroller->paginateに規定値をセットして
コントローラではそのままcontroller->paginate()を呼び出すかな
208nobodyさん:2009/04/12(日) 14:51:35 ID:???
ペジネートの機能の読み込まれるタイミングによってはinitializeじゃなくstartupかも
209nobodyさん:2009/04/13(月) 07:04:51 ID:???
>>204
202じゃないけどログイン処理は自前でやってるよ。
他は全てライブラリやコンポーネント使うけど、authコンポーネントは苦手。
210nobodyさん:2009/04/13(月) 07:36:02 ID:???
FW使うのが目的になってるよなw
211nobodyさん:2009/04/13(月) 07:47:40 ID:???
AuthもFWだけどね
MVCの仕組みだけと言うべきかな

Authは最新版なら有用だと思う
というか自前でセキュリティホールの無い認証機構作るとかめんどくさすぎるから
212nobodyさん:2009/04/13(月) 09:32:33 ID:???
>>210
それは誰に対していってるの?
全部Cakeの機能で賄おうとしてる人に対して?

私は >>211 に同意です。
213nobodyさん:2009/04/13(月) 12:58:49 ID:???
>>209

> authコンポーネントは苦手。

その気持ち分かります。
以前、Authコンポを使って、グループ毎にログイン後のアクセス画面を変えるというのを作ったけど、
loginRedirectプロパティを書き換えたページ振り分けが上手くいかなくて苦しんだ。
※最初のユーザをログアウトして、別のユーザでログインすると何故か最初のユーザの画面が表示されてしまう...

結局、loginRedirectのプロパティ値は、Sessionに含まれ続けるという事を知って、
ログアウト毎にセッションをクリアすることで上手くいくと思ったのだが、上手く行かず...
結局、autoRedirectしないようにして、グループ情報を確認後に改めてリダイレクトするようにして対応した...orz

214nobodyさん:2009/04/13(月) 13:49:00 ID:???
皆さんはCakePHPのパフォーマンスをどんな具合で上げていきますか。
特にパラメータによって頻繁に情報が変わる検索ページとか。
215nobodyさん:2009/04/13(月) 16:02:37 ID:???
>>201
fieldsでグループ化のカラムを書くと、なぜかidも出そうとしてSQLエラーになった。
$params = array(
'fields' => array(
'type',
'COUNT(type) AS "Post__count"',
),
'group' => array('type'),
);

しょうがないからquery使った。
216nobodyさん:2009/04/13(月) 18:04:13 ID:wqehV7U5
CakePHPをインストールしたんだが、何故かインストール時に
表示されるページにCSSが適用されない。
Apacheのドキュメントルート/cake/ 以下にインストールしたんだが、
ここにアクセスするとHTMLのCSSの読み込み部分が
href="/cake/css/cake.generic.css"
と、なって、
app/webroot/css/cake.generic.css
にも
cake/console/libs/templates/skel/webroot/css/cake.generic.css
にもならない。
baseUrlという変数の中身が鍵らしいというところまでは
分かったんだが、それ以上が何とも。
誰かご教示頼む。
217216:2009/04/13(月) 18:54:34 ID:???
とりあえずほっといてチュートリアル進めているうちに自己解決しました。
.htaccessがコピーされてないだけだった('A`)
218nobodyさん:2009/04/13(月) 22:52:24 ID:???
>>210
わかる。フレームワークの機能をどうしても利用しようとして、少しのことでもこだわり過ぎて
逆に効率が悪くなるという。

>>213
気持ちわかってくれてうれしい。同じ人もいたんだ。絶対否定されると思ったけど^^

>>214
自分は3つくらいのサイトをcakephpで作ったけど、ひたすらプラグインにまとめてデザイン無しのページを作り、
それを元にして新たなサイトを構築していってる。
プラグインにまとめまくると普通のコントローラーやビューがごちゃつかないのでいいよ。
特にユーザーログイン、画像アップデート、プロフィールアップデートなどをプラグイン化しておくと、
新たなサイト作ったときもその機能を作らなくても良いので楽。

以前このスレで 慣れるとビヘイビアが多くなる って人がいたけど、今は自分もビヘイビアを多く使うようになってきた。
219nobodyさん:2009/04/13(月) 23:01:54 ID:???
>>218
プラグイン多用しているということで聞きたいのですが、
たとえばユーザー管理の仕組みをUserプラグインにまとめると、
モデル名にプラグイン名がついて、UserUserモデルになってしまって不恰好なのですが、
どうされてますか?
他にもCommentプラグインのCommentCommentモデルなど・・・
とにかくモデル名が長くなってしまって困っているんですが・・・

あと、そのCake製のサイト見てみたいです。
・・・2chで晒すのはアレですかね?
220nobodyさん:2009/04/14(火) 09:12:22 ID:???
>>219
218じゃないけど、Userみたいなのはプラグイン名にしない。
もうちょっとまとめたもの、例えばMeiboみたいなのを付ける。
221nobodyさん:2009/04/14(火) 12:23:38 ID:???
CakePHPを始めたばかりです。
CakePHP 1.2.2.8120とsqlite3を使っています。
インストールには成功したのですが、チュートリアルを
http://book.cakephp.org/ja/view/330/
まで進めた後にインストールの確認ページを見ると、
Cake is NOT able to connect to the database.
というエラーがでてしまい、困っています。
/posts/index を見ても、
Error: Database table posts for model Post was not found.
と出てしまいます。
database.phpの設定は以下の通りです。
var $default = array(
         'driver' => 'sqlite'
         'connect' => 'sqlite_open',
         'persistent' => false,
         'host' => 'localhost',
         'login' => '',
         'password' => '',
         'database' => 'cake.db',
         'prefix' => '',
         'encoding' => 'utf8'
     );
どうかよろしくお願いします。
222nobodyさん:2009/04/14(火) 12:43:42 ID:???
>>221

hostは空でいいよ
つまり、

'host' => '',
223nobodyさん:2009/04/14(火) 18:56:14 ID:???
>>219
ug プラグインにしてる。で、あとはroutes.php でルーティング。
これだとパスとか関係ないのでイイと思う。逆にルーティングを使わないと
パス名長すぎてかっこわるくなるね。
224221:2009/04/14(火) 21:27:15 ID:???
>>222
hostsを空にしてみてもダメでした。
dbファイルが無いときはちゃんとdbファイルが作られて、
インストール確認ページに、
Cake is able to connect to the database.
と表示されるのですが、
このdbファイルにテーブルを手動で作ってやると、
Cake is NOT able to connect to the database.
に変わってしまいます。
ユーザはapacheのユーザですし、試しにdbファイルを
777にしてみてもダメでした。
どうかよろしくお願いします。
225nobodyさん:2009/04/14(火) 23:39:51 ID:b4g3iQJt
つか、sqlite3ってまだ未サポートじゃなかったのかと思ってたがどうなんだ
226221:2009/04/15(水) 12:57:21 ID:???
>>225
とりあえず去年の2月の時期で未サポートという情報は見つけました。
手を抜かずにmysqlを使うことにします。
お騒がせいたしました。
227nobodyさん:2009/04/15(水) 13:53:06 ID:???
228nobodyさん:2009/04/15(水) 15:27:53 ID:???
>>227
機能をPHPモジュールで実装して
PHPのコンパイルオプションで選ぶようにするとか

あるいはyumのパッケージをAPIごとに分けて欲しいやつだけ入れるとか

そういう方法で対処するのが一番楽で高機能だと思うがな
229nobodyさん:2009/04/16(木) 14:44:00 ID:???
もういや、以前NetBeansへのCakePHPフレームワーク対応の
話があったと思うんだけど、どうなったの?
230nobodyさん:2009/04/16(木) 21:11:24 ID:???
もういや!
231nobodyさん:2009/04/16(木) 23:13:26 ID:???
saveallしたあとで、バリデートのエラーを拾えないんですが
やり方を知っている方がいたら教えてください?

コントロール内で

$this -> Model -> saveall($data,array('validate' => 'first');

とした後、

$error = $this -> Model -> invalidFields();

としても、バリデートがエラーになっても$errorが空のままです。
saveにすると問題ないのですが、何故なんでしょうか?
saveallでバリデートエラーを拾いたい場合は、やっぱり関連する
各モデルごとにバリデートを繰り返しあてるしかないんでしょうか?
232nobodyさん:2009/04/17(金) 15:00:20 ID:???
もういややわ。
233nobodyさん:2009/04/20(月) 22:02:02 ID:???
>>221
こんなのがあったよ。

CakePHP1.2 で sqlite3 を使用するには
ttp://blog1.atcms.jp/chuno/index.php?UID=1236462644
234nobodyさん:2009/04/21(火) 15:14:47 ID:???
実践本買ったけど、bakeばっかり使っててわかりづらい。
ちょっと前の勉強会だとbake使ってる人はほとんどいなかったのに、最近は違うのか?
235nobodyさん:2009/04/21(火) 15:18:56 ID:???
bakeの何が分かり辛いんだ
というかモデル追加するたびに手書きでコントローラとか書いてたのか?
236nobodyさん:2009/04/21(火) 15:24:47 ID:???
普段と違う開発手法だから慣れない感じ。
もちろん読みこめば何をやってるのかわかるんだけどさ。
自分は基本的にコードは手書きだよ。
237nobodyさん:2009/04/21(火) 15:26:55 ID:???
基本的な使い方知るくらい5分かかるかどうかレベルだろ
238nobodyさん:2009/04/21(火) 15:31:48 ID:???
いや、だからbakeで何をやってるかはわかるって。
ただ、普段の開発手法と違うから読みにくいというだけで。

普段Linux環境だからWindows環境で書かれてるのがわかりづらいとか、
そういうくらいのレベルの話だよ。
239nobodyさん:2009/04/21(火) 16:07:29 ID:???
bakeにmvcひとつひとつ選択しないで
ぜんぶdefaultで、とにかく作成しちゃうモードがあればいいなとおもう
240nobodyさん:2009/04/21(火) 16:16:48 ID:???
あるじゃん
241nobodyさん:2009/04/21(火) 17:49:53 ID:JXH2p/YI
実践本、俺はbake使い過ぎてわからんというよりは、
scaffoldに固執しすぎてバッドハック的な事をしてるのが気になった。
cakeの仕様の変わりっぷりを考えると、後々まで使える手法じゃない可能性が高いし
242nobodyさん:2009/04/21(火) 17:51:19 ID:???
Cakeのbakeは使えるがscaffoldは使えないな
243nobodyさん:2009/04/21(火) 18:53:24 ID:???
scaffoldって初期開発時のテスト用で本番にはあまり使わないイメージがあるんだけど。
という、scaffoldのままでいいコントローラってあまりないよね。
244nobodyさん:2009/04/21(火) 21:03:12 ID:???
App::importに対してunimport的なものってあるの?

そもそもimportで読み込んだコンポーネントってstartup()とか動作するのかな?
単にimportを呼び出したスコープ内でメソッドが使えるだけ?
245nobodyさん:2009/04/21(火) 21:19:09 ID:???
コントローラからの読み込み以外では適宜startup呼ばないとだめなんじゃない?
246nobodyさん:2009/04/21(火) 21:38:59 ID:???
そのようだった。
initialize()すら呼ばれないね。

コンポーネント内でApp::importした場合って、
initialize(&$controller)の$controllerにセットされないよね?
コンポーネント内ではimport出来ないの?
247nobodyさん:2009/04/21(火) 21:45:39 ID:???
コントローラのcomponentsに登録されるのかと思ったけどただ単にPHP的にクラスを読み込んでるだけか
248nobodyさん:2009/04/21(火) 23:44:48 ID:???
実践本3,150円(税込)が
Amazonで2,740円(=2,400+340)の中古本が出たので即購入。ラッキー
(会社で新品書籍を購入すると10%offという人多いのかなあ?うらやましい)
249nobodyさん:2009/04/22(水) 00:27:07 ID:???
会社ってか昔の客先は組合の購買で買うと10%OFFだったな
協力会社の人も含めて
250nobodyさん:2009/04/22(水) 04:16:17 ID:???
>>248
10%オフって・・・。
会社通して仕事の本買えば会社は全額経費になるのにひどい話だな。

俺が以前いた会社は全額経費で落としてくれた。
251nobodyさん:2009/04/22(水) 04:28:09 ID:IoF1Kk6A
経費で買うとタダになるとでも思ってるのか?w
本当にこういう社会人がいたのか
ショックだ。
252nobodyさん:2009/04/22(水) 08:35:18 ID:???
>>251
社会人というか経営者だけど。
別にタダになるとは言ってないだろ。
もう少し税金勉強してからいってくれよ。
253nobodyさん:2009/04/22(水) 09:57:22 ID:???
>>250
10%は仕事で使わない書籍の話だが
254nobodyさん:2009/04/22(水) 15:40:08 ID:???
いつかは転職するだろうという思いがあるから、
会社の本ではなく、自分の本にしたい。
255nobodyさん:2009/04/22(水) 20:15:15 ID:???
仕事書籍を経費で購入しても10%offだし、
個人で給与天引きで購入しても10%offだよ。
(書籍は何でもOK、子供の参考書でもOK)
書籍はどちらも職場に届く。
256nobodyさん:2009/04/22(水) 20:43:15 ID:???
ジャンプとかサンデーも10%OFFだったな
注文すれば多分エロ本でも10%OFFだと思う
257nobodyさん:2009/04/22(水) 20:57:55 ID:???
以後ここはamazonでどこまで10%オフできるか相談し合う
サラリーマンのスレッドとなります。
258nobodyさん:2009/04/22(水) 21:15:22 ID:???
サラリーマンはamazon使わなくても10%offなので
259nobodyさん:2009/04/23(木) 07:10:35 ID:???
俺の会社では10%OFFで買えねーぞ。
また大企業だけの特権か?
260nobodyさん:2009/04/23(木) 13:20:27 ID:???
うちは自腹…。
261nobodyさん:2009/04/23(木) 14:49:24 ID:???
がんばれ>>260w
262nobodyさん:2009/04/25(土) 12:06:35 ID:???
初歩的なことですまないが
debug=0の時にエラー出さないけど
ファイルにはエラーを出力するってどうやんの?
263nobodyさん:2009/04/25(土) 12:14:00 ID:???
264nobodyさん:2009/04/25(土) 12:18:12 ID:???
>>263
自分でエラーログ書けってこと?
265nobodyさん:2009/04/25(土) 17:26:55 ID:???
セッション機能について質問です。
デフォルトでSession.startをfalseにして、
コントローラーによってtrueにしたりDBか/tmp保存に
切り分けたいのですが、何か良い方法はありますか?
266nobodyさん:2009/04/26(日) 00:51:40 ID:???
frameタグを使って2分割した場合、
frame src に同じコントローラーの別々のアクションを指定したいんですが、
どう書けば良いんでしょうか?
267nobodyさん:2009/04/26(日) 10:36:52 ID:???
検索結果のpaginationで、検索引数を持ち回るときってsession使うのが普通なの?
みんなはどうしてる?
268nobodyさん:2009/04/26(日) 11:11:38 ID:???
>>267
ググってる
269nobodyさん:2009/04/26(日) 14:42:26 ID:???
>>267
それでいいんじゃねーの
270nobodyさん:2009/04/26(日) 15:58:15 ID:???
そういや、以前NetBeansへのCakePHPフレームワーク対応の
話があったと思うんだけど、どうなったの?
271nobodyさん:2009/04/26(日) 17:48:54 ID:???
Sunがあれだからな。
果たしてOracleがやってくれるかどうか・・・。
272nobodyさん:2009/04/26(日) 22:30:08 ID:???
セレクトタグで都道府県を選択したいんだけど、
ヘルパーに追加してる人とかっている?
273nobodyさん:2009/04/27(月) 01:33:20 ID:???
array('北海道'=>'北海道', '青森'=>'青森', '岩手'=>'岩手', '宮城'=>'宮城',
'秋田'=>'秋田', '山形'=>'山形', '福島'=>'福島', '茨城'=>'茨城', '栃木'=>'栃木', '群馬'=>'群馬',
'埼玉'=>'埼玉', '千葉'=>'千葉', '東京'=>'東京', '神奈川'=>'神奈川', '新潟'=>'新潟', '富山'=>'富山',
'石川'=>'石川', '福井'=>'福井', '山梨'=>'山梨', '長野'=>'長野', '岐阜'=>'岐阜', '静岡'=>'静岡',
'愛知'=>'愛知', '三重'=>'三重', '滋賀'=>'滋賀', '京都'=>'京都', '大阪'=>'大阪', '兵庫'=>'兵庫',
'奈良'=>'奈良', '和歌山'=>'和歌山', '鳥取'=>'鳥取', '島根'=>'島根', '岡山'=>'岡山', '広島'=>'広島',
'山口'=>'山口', '徳島'=>'徳島', '香川'=>'香川', '愛媛'=>'愛媛', '高知'=>'高知', '福岡'=>'福岡',
'佐賀'=>'佐賀', '長崎'=>'長崎', '熊本'=>'熊本', '大分'=>'大分', '宮崎'=>'宮崎', '鹿児島'=>'鹿児島',
'沖縄'=>'沖縄')
274nobodyさん:2009/04/27(月) 07:10:46 ID:???
お上が決めた県コード順になってるな。出来るなオヌシ
ttp://ja.wikipedia.org/wiki/JIS_X_0401
275nobodyさん:2009/04/27(月) 14:02:39 ID:???
それが普通じゃないの?
っていうかkeyは要らないんじゃない?
276nobodyさん:2009/04/27(月) 16:41:20 ID:???
paginate で 「stampが 0 より上のものを優先。でその中でも modified が新しい順に表示したい」
ってとき
$this->paginate = array(
'limit' => 10,
'page' => 1
);

$this->paginate['order']['modified'] = 'desc';
$this->paginate['order']['stamp > '] = 0;

じゃうまく動かない。
誰かうまい方法ご存じですか?
277nobodyさん:2009/04/27(月) 16:54:40 ID:???
不等号じゃなしに普通にstampって書いて降順にすればいいんでは?
278nobodyさん:2009/04/27(月) 18:18:49 ID:???
>>277
ありがとう!できました!
279nobodyさん:2009/04/28(火) 12:31:08 ID:LqIduRrQ
すみません、バカな私に是非ご教授をお願いします。
画像ファイルアップロード処理のfileタイプで困ってます。

入力画面(ファイル選択など)→確認画面→登録処理
という画面遷移です。

画像ファイル選択の入力時のフォームは
$this->input( Hoge.img1,array( 'type' => 'file' ) )
とし、
確認画面では、Hoge.img1の下にnameやtypeなどの属性が自動で設定されています。

確認画面のアクションで、アップした画像を適当なディレクトリへコピーし
一時表示用にそのパスをsave_nameとして新たに属性として設定させています。
さらに登録処理へ渡すために、
$form->input( Hoge.img1,array( 'type' => 'hidden' ) )
としているのですが、
画像の属性がこれでは登録処理へ渡せません。
textタイプなどはこの書き方で、そのまま登録処理へ渡せました。

画像ファイル各属性を、
$form->input( Hoge.img1.name,array( 'type' => 'hidden' ) )
このようにそれぞれ設定してやれば渡せます。

ただ、新たに設定したsave_nameだけは、
$form->input( Hoge.img1.save_name,array( 'type' => 'hidden' ) )
これでは渡すことができません。

画像ファイルの属性を、確認画面を挟んでから登録処理へ渡すのに、
なにか上手い方法はありませんでしょうか?

乱筆、乱文すみませんです。
280nobodyさん:2009/04/29(水) 10:22:51 ID:???
>>269
セッション使うと、別windowで立ち上げたときに変な挙動になるんだよね。
できればGETの引数でやりたいんだけど、ググった限りだとセッション使う方法しかみつからなかったんで。
281nobodyさん:2009/04/29(水) 13:28:28 ID:???
>>280
passedArgs でググってみ
282nobodyさん:2009/05/01(金) 20:45:13 ID:???
PEARまったく知らなくても
cakephp使う上で、問題無い?

それとも、途中でPEARの知識が必要になる?
283nobodyさん:2009/05/01(金) 21:59:24 ID:???
>>282
PEAR使わずにcakephpだけでOKだよ。
途中で「やっぱりPEAR必要だった。」って言うことはないと思う。
ネットに公開されている便利部品を使って実現。という事は
多々発生すると思うよ。
284nobodyさん:2009/05/01(金) 23:35:11 ID:???
それってさ、
「cakephp用の部品です」
って形で公開されてるの?
285nobodyさん:2009/05/01(金) 23:46:22 ID:???
>>284
そういうのもある。
286nobodyさん:2009/05/02(土) 00:25:41 ID:???
cakeってmysql必須なの...?
287nobodyさん:2009/05/02(土) 00:42:57 ID:???
>>286
いいや
288nobodyさん:2009/05/02(土) 01:25:28 ID:???
でもMySQLのパスワードとかデーターベース名を
セットアップしないと動かなかったよ?
289nobodyさん:2009/05/02(土) 01:26:14 ID:???
これちょっとやってみたけど、
モデルとビューとコントローラーの
3つを書かないとだめなんだね?
290nobodyさん:2009/05/02(土) 01:30:44 ID:???
だから
$uses = array();
でモデルいらねーっての
291nobodyさん:2009/05/02(土) 01:41:25 ID:???
<?php foreach ($tasks as $task) { ?>
<tr>
<td><?php echo h($task['Task']['id']) ?></td>
<td><?php echo h($task['Task']['content']) ?></td>
<td><?php echo h($task['Task']['status']) ?></td>
<td><?php echo h($task['Task']['created']) ?></td>
</tr>
<?php } ?>

----------------------------------
↑こういう使い方を見たんだが、
これって全然OKなの?
292nobodyさん:2009/05/02(土) 01:49:13 ID:???
逆になんで駄目だと思ったの?
293nobodyさん:2009/05/02(土) 07:48:48 ID:???
ふむmd5に脆弱性があるんだね
294nobodyさん:2009/05/02(土) 08:10:57 ID:???
>>291
入門書:CakePHPによるWebアプリケーション開発 \2,940 嫁
>>286 p.41, 44
>>289 >>290 p.44
>>291 p.41, 47
295nobodyさん:2009/05/02(土) 10:38:50 ID:???
ここも一読して質問してくれ
http://book.cakephp.org/ja/
296nobodyさん:2009/05/02(土) 12:30:44 ID:???
ビデオで学ぶCakePHP入門もある
ttp://d.hatena.ne.jp/i_ogi/20090418/1240044385
297nobodyさん:2009/05/02(土) 13:33:45 ID:???
http_socketのcookieのところが複数クッキーに対応してないんですね。
あとpage:1とかの:が予約語なんでhtmlチェックとかしたら
怒られるんですよね。

コアライブラリいじるとアップデートの時変更忘れそうだから治して欲しい門です><
298nobodyさん:2009/05/02(土) 21:13:12 ID:???
cakeをはじめてやる人に
向いているわかりやすい入門書教えてください
299nobodyさん:2009/05/02(土) 21:57:58 ID:???
http://www.amazon.co.jp/dp/4798022225/

これってなんで
アマゾンでC++のカテゴリに入れられてるの?
300nobodyさん:2009/05/02(土) 22:38:49 ID:???
C++   → CPP
CakePHP → CPP
301nobodyさん:2009/05/02(土) 22:55:51 ID:???
>>300
それってマジなの?
302nobodyさん:2009/05/03(日) 00:41:38 ID:???
本屋はシステムに詳しい訳じゃないから分類の間違いは良くあるぜ
303nobodyさん:2009/05/03(日) 08:02:54 ID:???
>>298
あくまでも個人的意見として

CakePHPによるWebアプリケーション開発
http://www.amazon.co.jp/dp/4798022225/
基本的な事から丁寧に解説。コツコツ型にお勧め。

CakePHP徹底入門
http://www.amazon.co.jp/dp/479811717X/
Cakeのコード自働生成機能(bake)を使って解説。短時間で動かせる様になりたい人。
動かしながら理解していくのを好む方にお勧め。

CakePHP1.1(旧バージョン)で解説されているので避けた方が良い入門書
CakePHPガイドブック
http://www.amazon.co.jp/dp/4839924317/
Fast CakePHP (LLフレームワークBOOKS)
http://www.amazon.co.jp/dp/4774133418/
304nobodyさん:2009/05/03(日) 19:51:13 ID:???
質問です。
CakePHP と Ruby on Rails を二股で勉強しています。
言語の仕様上仕方ないのかもしれませんが、
Rails と比べて CakePHP は括弧やシングルクォートが多くなって
疲れる気がします。
けれど、Rails よりも動作環境の敷居が低い CakePHP も魅力です。
煽りじゃなくて、CakePHP と Rails どちらにしようか迷っている人間に、
「CakePHP はこんな所が素敵だよ」と背中を押す一言を頂けたら幸いです。
305nobodyさん:2009/05/03(日) 19:51:54 ID:???
>>304
質問というか相談ですね。失礼しました。
306nobodyさん:2009/05/03(日) 21:55:39 ID:???
RoR →サーバー代毎月5,000円必要
cake → 無料のサーバーでも動く
307nobodyさん:2009/05/03(日) 21:56:34 ID:???
308nobodyさん:2009/05/03(日) 22:29:46 ID:???
しかし実際はこっちのグラフの方が参考になる罠
ttp://www.google.co.jp/trends?q=cakephp%2Crails&ctab=0&geo=jp&geor=all&date=all&sort=0
309nobodyさん:2009/05/03(日) 22:45:40 ID:???
>>306
レスありがとうございます。
やはり稼働環境の敷居という点が大きな違いですね。

>>307,308
グラフありがとうございます。
説明不足で恐縮ですが、上記どちらのグラフも以前見たことがあります。

Rails をやりたいものの、
環境的な都合で Rails を選択できない状況になるのが怖く、
かといって(Rails と比べて)記述が面倒だと分かっている CakePHP を
選択するのも微妙な気もして迷っています。

CakePHP で
$a = aa('key1', 1, 'key2', 2); をクォートを省略して、
$a = aa( key1 , 1, key2 , 2); と書いてしまえば、
面倒さが若干無くなるのですが、
「それはダメ!」という声がどこかから聞こえている気もします。
310nobodyさん:2009/05/04(月) 01:27:23 ID:???
仕事: Cake
趣味: Rails
でいいじゃん。面倒くさいな
311nobodyさん:2009/05/04(月) 01:54:49 ID:???
無料のサーバで動いたって
同じ品質のサーバでうごかすならどっちも5000円だけどな
312nobodyさん:2009/05/04(月) 02:07:36 ID:???
5000円てどこのこと言ってるの?
313nobodyさん:2009/05/04(月) 08:03:49 ID:Tn5a5ZIs
これはInterface使ったモデルなんかは作れるの?
314nobodyさん:2009/05/04(月) 19:42:43 ID:???
括弧やシングルクォートぐらいエディタが書いてくれるだろ…。
315nobodyさん:2009/05/04(月) 19:55:04 ID:???
>>314
秀丸エディタ使ってんだけど、括弧やシングルクォートが自動で出る様にする設定
教えて。すごく便利になる。
316nobodyさん:2009/05/04(月) 21:29:58 ID:???
少しは検索してみるとかしないと駄目じゃないか
開発は初心者でも検索の初心者ではないだろ?
http://www18.big.or.jp/~fujiwara/ikki/hidemaru/
317nobodyさん:2009/05/04(月) 22:10:28 ID:???
PDTいいよ
318nobodyさん:2009/05/04(月) 22:11:10 ID:???


って打つと、なにもしないのに、勝手に



って出てくる。最初はまじでびっくりする。
319nobodyさん:2009/05/04(月) 22:38:44 ID:???
C#なんて
Event a+=
まで書いてタブ押したらハンドラ登録からハンドラメソッドの雛形まで出してくれるのを考えると
PHPの開発環境はやっぱり貧弱だけどね
320nobodyさん:2009/05/04(月) 23:18:02 ID:???
それを実現するために俺たちがMSにいくらお伏せしてるか考えればできて当然だろう
PHPユーザがZendに還元してる金なんてたかが知れてるし
321nobodyさん:2009/05/05(火) 00:48:15 ID:???
>>315です。
>>317 >>318
秀丸エディタでゴリゴリやるよりEclipse + PDTをインストする方が良さげですね。
ttp://d.hatena.ne.jp/ngtn/20080204/1202142255
ttp://blog.ne2ma2.com/archives/83
322nobodyさん:2009/05/05(火) 01:20:41 ID:???
あなた最低です
323nobodyさん:2009/05/05(火) 04:40:42 ID:???
秀丸エディタに未練がないって事は金払ってなかったんだな
324nobodyさん:2009/05/05(火) 07:40:55 ID:???
秀丸エディタ使ってるみなさん、秀まるおさんに4200円払いましょう
http://hide.maruo.co.jp/swreg/price.html
325nobodyさん:2009/05/05(火) 09:59:08 ID:???
金払ったら誰でも知ってるあの暗号がそのまま送られてきて萎えたぜw
今はどうか知らないけど
326nobodyさん:2009/05/05(火) 10:04:59 ID:???
>>324>>325
hidemaru=4200yen(zeikomi)?
327nobodyさん:2009/05/05(火) 15:19:29 ID:???
>>321
「PHP統合開発環境 PDT2入門」320ページ \2,940- 09/04/23発売ホヤホヤ
http://www.shuwasystem.co.jp/products/7980html/2257.html
328nobodyさん:2009/05/05(火) 22:42:19 ID:???
本を薦めるときはアマゾンのリンクにしてよ
329nobodyさん:2009/05/06(水) 06:49:04 ID:???
新書の為、アマゾンのリンクでは情報が少な過ぎ、書籍内容紹介にならない為
ttp://www.amazon.co.jp/dp/4798022578/
出版社のリンクにしたと思われ
ttp://www.shuwasystem.co.jp/products/7980html/2257.html
330nobodyさん:2009/05/07(木) 14:52:11 ID:???
331nobodyさん:2009/05/08(金) 18:31:50 ID:???
ユーザによって見れる見れないページを分ける時
ビューキャッシュは使わないってか使えない?
332nobodyさん:2009/05/09(土) 23:04:16 ID:???
cakeに挑戦したいけど全くわからない俺に最もわかりやすいチュートリアルのありかを教えてくれ
333nobodyさん:2009/05/09(土) 23:14:46 ID:???
>>332
http://www.amazon.co.jp/dp/4839930651/
これを買うのが今なら一番だろう。
334nobodyさん:2009/05/10(日) 09:48:31 ID:???
>>332
ビデオで学ぶcake入門(ブログチュートリアル)(2時間半)
ttp://d.hatena.ne.jp/i_ogi/20090418/1240044385

>>333 ↓この本、「今なら一番」は納得だけど、中級者向けじゃない?
ttp://www.amazon.co.jp/dp/4839930651/
335nobodyさん:2009/05/10(日) 14:59:55 ID:???
つうか、時間課金だった頃じゃあるまいに、本家のドキュメントで十分、紙の書籍なんて不便なもの要らんだろ。
336nobodyさん:2009/05/10(日) 16:00:15 ID:???
紙もネットもそれぞれ利点があるんだから
否定することはないよ
337nobodyさん:2009/05/10(日) 16:35:21 ID:???
紙の利点って何?
338nobodyさん:2009/05/10(日) 16:40:40 ID:???
便所でも読めることだな。
339nobodyさん:2009/05/10(日) 16:53:22 ID:???
さあ、始まるぞ!歴史上何度となく繰り返されてきた、紙メディアと電子メディアの戦い
さて、今回はどちらに軍配が上がるだろうか?
メディアとしての紙
http://www.kamiseikatsu.com/medi-top/
紙メディアの優位性
http://www.amy.hi-ho.ne.jp/kido/display.htm
340nobodyさん:2009/05/10(日) 17:12:44 ID:???
ネット乞食って金使う奴を見下す傾向あるよね
その情報に対して何の貢献もしてないのに
本書いてる奴は少なくとも貢献してるけど
341nobodyさん:2009/05/11(月) 10:19:47 ID:???
翻訳ビヘイビアに関する質問なのですが、
これって、
たとえばtitleフィールドで検索するとき、すべての言語のtitleを対象にしてくれたりするのでしょうか?
それとも、自前でJOINする必要がありますか?
342131:2009/05/12(火) 06:50:00 ID:???
キャッシュに関して質問解決した131です。

paginator paginate を使ったページングに関して、
ハマった後に解決したのでメモ書きとして投稿させてください。
すいません、質問ではなくメモです。
cake_1.2.3.8166

・やりたい事
URLのパラメータを検索条件として、
← 1 2 3 ... 13 14 →
のようなページングを行いたい。
←→の矢印は"最初最後"ではなく、"前の次の"という遷移になります。

・準備
まずは基本的な事を学ぶために、ここを見ました。↓
http://www.cpa-lab.com/tech/Paginator%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9%e3%80%82CakePHP1.2

次に、サンプルが載ってるここを確認。↓
http://www.spokslog.com/book/paginator_tests/preview/
やりたい事は6番目。
思いっきりバグがあるとか書いてあるし、
確かにその通りやっても上手く出来なかった。

次に続く・・・
343131:2009/05/12(火) 06:53:20 ID:???
・まずやってみた事
コントローラ側
// BETWEENの値がURLパラメータより引き出した数字。
$this->paginate = array('conditions' => array(
'A.a BETWEEN ? AND ?' => array(5, 10),
'A.delflag = ' => 0,),
'limit' => 20,
'order' => array('A.modified' => 'DESC'),);
$this->set( 'list', $this->paginate );

ビュー側
$page = null;
$page .= $paginator->prev('←',array(), null, array( 'class' => 'blockToInline' ));
$page .= ' ';
$page .= $paginator->numbers( array(
'url' => $this->passedArgs,
'modulus'=>2,
'separator'=>' ',
'first'=>1,
'last'=>1,));
$page .= ' ';
$page .= $paginator->next('→',array(),null,array( 'class' => 'blockToInline' ));
echo $page;
後はlistで適当に。

矢印部分はページの状態によって、DIVタグが勝手に入って改行されてしまうため、
クラスをblockToInlineとして、CSSでインライン要素にしてます。

次に続く・・・
344131:2009/05/12(火) 06:55:37 ID:???
・結果
ページリンク前半部、1 2 3 辺りはURLパラメータを引き回せるんだけど、
←や...以降の12 13 14 → などは引き回せずに、条件無しで全件になってしまう。
prev や next にnumbersと同じurlオプション付けても上手く動かず。

・調査
cakePHP paginator などで検索したあと、セッション使えとかなんか色々やってみたけど、結局出来ず。

・解決方法
numbersのurlオプションを、prev前に$paginator->optionsに設定する。
$page .= $paginator->options( array('url' => $this->passedArgs,));
numbersのurlオプションは外すが、modulusやfirstなどのオプションはnumbersのまま。
全部optionsに変更したら上手く動かなかったような気がする。

コントローラ側は特に変更なく、
最終的なビュー側のコードはこうなりました。
$page = null;
$page .= $paginator->options( array('url' => $this->passedArgs,));
$page .= $paginator->prev('←',array(),null, array( 'class' => 'blockToInline' ));
$page .= ' ';
$page .= $paginator->numbers( array(
'modulus'=>2,
'separator'=>' ',
'first'=>1,
'last'=>1,));
$page .= ' ';
$page .= $paginator->next('→',array(),null,array( 'class' => 'blockToInline' ));

以上です、長々と失礼しました。
私ほどのバカモノは居ないと思いますが、
似たような事でハマっていた方が居たら是非参考に・・・。
345nobodyさん:2009/05/14(木) 00:10:00 ID:???
つうか、ふっつーに標準的なPHPの機能だけで2時間以内に作れるので、使う意味がないな。
346nobodyさん:2009/05/14(木) 00:55:00 ID:???
頭いいな
347nobodyさん:2009/05/14(木) 02:03:18 ID:???
メモとか自分のブログにかけよ
こんなとこに書いてもすぐdat落ちするし再利用性無い
348nobodyさん:2009/05/17(日) 17:53:26 ID:???
モデルでfieldsに関数(count(*)見たいに)で指定するとモデル名で取得できなくなる(0になる)んですけど
モデル名で取得する方法ってありますか?
349nobodyさん:2009/05/17(日) 18:51:58 ID:oOtRNQgA
モバイルサイトを作っているのですが、404エラーページをSJISで
吐かせるにはどうしたらいいんでしょうか?
http://www.syuhari.jp/blog/archives/168
この辺を参考にafterFilterで文字コード変換しているのですが、エラーページの場合は
app_controller通らないので、UTF8のまま表示されてしまいます
(html側のエンコード指定はSJISなので、文字化けした状態です)
350nobodyさん:2009/05/17(日) 18:54:10 ID:???
文字化けなおしたいだけなら404notfoundのhtmlをutf8にする
どうしてもsjisにしたいならapacheで設定する
方法は2つ
1.404時の出力ファイルをPHPスクリプトにする
2.404時のヘッダのエンコード設定をsjisにする

検証はしていない
351nobodyさん:2009/05/17(日) 21:26:25 ID:???
error.phpでも触ればいいんでない
352nobodyさん:2009/05/17(日) 21:40:34 ID:oOtRNQgA
回答ありがとうございます

>>350
1だと、ちょっとスマートではない気がするので、できればCake内で解決したいです
2のヘッダですが、ヘッダ自体はSJISにしているのですが、データの中身はUTF8なので
文字化けしているという状況です

>>351
app/error.phpの中でもafterFilterは効くのでしょうか?
ちょっと試しに書いてみたのですが、動かないようです・・・
error.phpのサンプルがあまり無いため、よくわからないのですが
function error($params)を書いて、その中に処理を書くべきなのでしょうか?
353nobodyさん:2009/05/17(日) 22:18:17 ID:???
>>352
じゃあsjisにすればいいんじゃないの?
404ページはapacheがデフォルトで持ってるhtmlファイルが出てるだけでしょ
354nobodyさん:2009/05/17(日) 22:38:31 ID:oOtRNQgA
>>353
cakephpの404ページはviews/layout/default.ctpの中に
views/error/error404.ctpが入ったモノが表示されるはずです・・・
355nobodyさん:2009/05/18(月) 01:07:59 ID:???
function render($action = null, $layout = null, $file = null) {
if($this->RequestHandler->isMobile()){
echo mb_convert_encoding(parent::render( $action, $layout, $file ),"SJIS","UTF-8");
exit;
}
echo parent::render( $action, $layout, $file );
exit;
}

renderをapp_controllerで上書きすりゃえんじゃね。
356nobodyさん:2009/05/18(月) 02:20:27 ID:???
>>354
それのエンコードかえたら?
357nobodyさん:2009/05/18(月) 20:26:30 ID:???
requestAction()で別コントローラのアクションを呼び出すと、
そのアクション中でcontroller->set()されたものがビュー(エレメント)内で使えない。
これは元のコントローラでセットしろと言う事?
コードのまとまりが悪くなっちゃうと思うんだけど。
358357:2009/05/18(月) 20:27:41 ID:+BNQiVp5
セットされたものが使えないと言うのは、
requestAction()の呼び出し元のビューでもそうだし、
そのエレメント内でもそう。
つまりrequestAction()で呼び出されたアクション中ではcontroller->set()が機能してないって事だと思う。
359357:2009/05/18(月) 20:45:14 ID:+BNQiVp5
自分が遭遇してるケースは
ビューから
View->element(hoge,array('hoge'=>View->requestAction()));
と言う形でエレメントを描画しようとしたら
この形で呼び出したrequestActionではエレメントでも呼び出し元ビューでも
set()された変数がundefinedになるというもの。

requestAction()はコントローラからも呼び出せるが
MVC的にはビューから呼び出すのが正しいはず。
360357:2009/05/18(月) 20:51:41 ID:???
あー、requestAction()で呼び出された場合set()は効かなくて
element()の引数で渡すか完全にレンダーして返せと言う事か
とりあえずやりたい事は出来そうお騒がせしました
361nobodyさん:2009/05/18(月) 21:06:16 ID:???
AuthComponentって便利ですね^^
362nobodyさん:2009/05/18(月) 21:07:00 ID:???
CakePHPを始めるのにオブジェクト指向は必須ですか?
363nobodyさん:2009/05/19(火) 03:27:27 ID:???
もうすでにあなたはオブジェクトの中にいるわけだけども。
364nobodyさん:2009/05/19(火) 20:44:37 ID:???
ローカルのWindowsで、Apc入れてcore.phpでキャッシュエンジンに設定したんだけど、
cakeで作ったページにアクセスすると、表示されなくて、そのまま更新すると500エラーが出てしまう。

Apacheのログ見たら、最初表示されない時は304、更新した時は
PHP Fatal error: Cannot redeclare class debugger in 〜\\cake\\libs\\configure.php on line 302, referer: http://ローカルのアドレス
というのが出る。

debuggerの再定義をしてるよー、っていうエラーなのは判ったんだけど、
どう対応すればいいかわからん!!

Apc導入してる人いる?
365nobodyさん:2009/05/19(火) 22:08:47 ID:EQ1qWtUA
デバッグモードで表示されるSQLのクエリログを本番でも残したいんだけど
http://www.1x1.jp/blog/2007/04/cakephp_sql_log.html
http://d.hatena.ne.jp/kusakari/20080903/1220429833
これ意外でもうちょっとスマートな方法はない?
デバッグモードで動くコンポーネントとかは結構あるけど、
本番環境でログとれるのは見つからなかった。

>>364
知り合いがcake + APC使ってたけど、特にそういう話は聞いたこと無いな。
今度このスレ見せてみるわ
366nobodyさん:2009/05/20(水) 11:13:28 ID:???
ファイルのアップロードコンポーネントって
なんかいいのないの?FileHandlerは2007年に作って更新とまってるっぽいんだけど。
367nobodyさん:2009/05/20(水) 14:19:38 ID:???
You作っちゃいなyo
368nobodyさん:2009/05/20(水) 19:42:48 ID:???
アップロードコンポーネントなんて使わないで、
app_modelにバリデーション処理を書いて、
コントローラーで普通にcopyすればいいんじゃない?
私はそうしてるけど。
369nobodyさん:2009/05/20(水) 20:02:44 ID:???
なんで、Model->findのときはconditionsが第1引数なのに、readは二番目なの?

何か合理的な意味があるんでしょうか?
使いにくくて仕方なかとですたい
370nobodyさん:2009/05/21(木) 00:45:17 ID:???
readにconditionsなんか指定できたっけ?
371nobodyさん:2009/05/21(木) 09:42:44 ID:???
>>369
1.1の話?
372nobodyさん:2009/05/21(木) 11:51:39 ID:???
>>370,371
コンディションっつうのはつまりプライマリキーのことです
find の感覚で、第1引数にIDを渡しちゃうんです。
まぁ、慣れればどってこと無いのかもですが。

それに、column を指定しないことはあっても id を指定しないことなんて
滅多と無いんだから、普通に考えたら id を第1に持ってきそうな
気がするんですよ。

だけど、それは私がよく知らないからであって、ひょっとしたら深い意味があるのかなと。
373nobodyさん:2009/05/21(木) 12:31:53 ID:???
>>372
idは事前に$this->Model->id = xx とかで指定しておくと第2引数のidも省略可でしょ。
そうなるとreadメソッドにとって大事なのはむしろfieldの方である。
とかそんな感じなんじゃないすかね。
374nobodyさん:2009/05/21(木) 14:52:34 ID:???
>>373
あぁ、そうか!
ありがとうございます
375nobodyさん:2009/05/21(木) 23:32:33 ID:???
1.1と
1.2と
めちゃめちゃ違うの?

1.1の本、買っちゃったんだけど?
376nobodyさん:2009/05/22(金) 00:16:48 ID:???
>>375
実際使ったことないけど、その界隈のブログだとか、スレ読んでると、かなり違うっぽいけど。
RCと正式版とも結構違うとか書いてあったような。

1.1でアプリケーションを組みつつ、1.2の違いを調べながら、問題あるようなら1.2の本買えば?
377nobodyさん:2009/05/22(金) 00:40:30 ID:???
>>375
まあ基本の動作はそんなに変わってないだろうけど、
1.1で普通にやってたことが1.2では非推奨になってたりとか、
一所懸命なんか作ったはいいけど、1.2なら最初っからその機能あるじゃん。みたいなことはあるから。

まあ動きは本で学んで、あとはオンラインマニュアルで。ってのでいいかもしれんけど。
378nobodyさん:2009/05/22(金) 01:00:50 ID:???
1.2から完成度が高いフレームワークになったね。
379nobodyさん:2009/05/22(金) 02:38:39 ID:kpKonnkD
>>375
お金に余裕あるのなら1.2の本を買って先に読んだ方がいい
1.1を最初に学ぶと、後から学びなおしの部分が多い
380nobodyさん:2009/05/22(金) 06:46:23 ID:???
>>375
> 1.1の本、買っちゃったんだけど?
多分、これ買っちゃって悩んでるんだと思うけど
「CakePHPガイドブック」
http://www.amazon.co.jp/dp/4839924317/
1.1と1.2はだいぶ違うとおもう
まず、1.2の本を先に読んだ方が良いとおもう
今のお勧めはこれかな
「CakePHPによるWebアプリケーション開発」
http://www.amazon.co.jp/dp/4798022225/
1.2がある程度理解できてから「CakePHPガイドブック」のおいしい所を頂けば良いのでは
381nobodyさん:2009/05/22(金) 06:50:42 ID:???
1.1とか実用レベルのフレームワークじゃなくない?
1.2ですらそう思う場面は出てくる

内容はかなり変わってるよ
382nobodyさん:2009/05/22(金) 13:12:58 ID:???
>>381
俺もそう思う。1.1は時々めっちゃ重くなる時がある。
383nobodyさん:2009/05/22(金) 13:16:01 ID:???
しかしcakeが非実用レベルだとすると実用レベルのFWって…
384nobodyさん:2009/05/22(金) 15:57:38 ID:???
1.2で駄目ならベタ書きするしかないなあ。
385nobodyさん:2009/05/23(土) 21:10:11 ID:???
CakePHPによるWebアプリケーション開発(秀和システム)
CakePHPによる実践Webアプリケーション開発(毎日コミュニケーションズ)
どっちも上でおすすめされてるけど、1冊選ぶならどっち?

ネットで調べた感じだと、秀和→初〜中級向け 毎日→中級向け なイメージ。
毎日はサンプルにエラー多数っぽい。秀和はここ以外レビューとか全然見つからない、で悩み中。

今回フレームワーク初めてで、とりあえず本家チュートリアルは問題なく分かった。
ただ実際にアプリ組もうとするとわかんないことばっかりで
Cake使わなければ2日でできるようなものに1週間弱かかったり。なんで基礎からやり直すことにした。
ポケットリファレンスは買うつもりなんだけど、あと1冊
とくに両方読んだ人、どっちにするべきか教えてちょ。
386nobodyさん:2009/05/23(土) 21:33:00 ID:???
俺はどっちも持ってるが、毎日の方かな。
実際に使えるアプリをサンプルとして挙げているので、サンプル開発の流れがきちんと追えれば
実際のプロジェクトにも十分応用できると思う。
逆に秀和の方、1回読んだきりだ。
387nobodyさん:2009/05/23(土) 23:14:52 ID:???
>>386
おー、サンクス。
タイトルどおり毎日の方が実践的ってことか。
こっちにしよ。
388nobodyさん:2009/05/25(月) 00:22:40 ID:???
cake触り始めで謎だらけの中質問します。

ログイン用のフォームを複数画面のはじっこに出しておきたいんだけど、cakeだとめんどくさいでしょうか?
おとなしくuser/loginに飛ばすのが一般的でしょうか?
389nobodyさん:2009/05/25(月) 01:01:07 ID:???
>>388
別にめんどくさくないですよ。
Authでログインされてなければフォーム表示させればいいだけだから。
エレメントでも作っておけばいいです。
390nobodyさん:2009/05/25(月) 03:19:09 ID:???
>>389 

いろいろやってみた結果できました!
ありがとう!
391nobodyさん:2009/05/25(月) 04:48:35 ID:???
layout使って非ログイン時は常に出しておけば余裕なのでは
392nobodyさん:2009/05/26(火) 07:44:05 ID:???
auth導入してみたらルートにアクセスするとログインページに勝手にリダイレクトされるんだけどなんなの?
こういう仕様?
393nobodyさん:2009/05/26(火) 08:04:19 ID:???
自己解決。
loginactionをコントローラ別で振り分けてやればいのね。

便利なんだか不便なんだかいまいちだなぁ。
394nobodyさん:2009/05/26(火) 12:08:51 ID:???
>>392-393
つ $this->Auth->allow()
395nobodyさん:2009/05/26(火) 13:30:49 ID:SiC5Hm3y
↓のソースをcakephp+smartyでテストしていて詰まりました。
ttp://3d.rokujyou.com/cake/sample7.html

<?php echo $html->input('Urllist/url', array('size' => '40'))?>
の部分を
{$form->input('Urllist/url')}
としたのですがinput内にURLが表示されません。
cakephpのみのテストでは表示されていたのでsmartyが変な処理をしている?ようなきがします。

ご教示お願いします。
396395:2009/05/26(火) 14:11:09 ID:SiC5Hm3y
以下のように設定したところ表示されましたがこれがデフォルトでしょうか?
{$form->input('url',array('value'=>$urllist.Urllist.url))}
Smarty導入前は書かなくても表示されたので別の方法がありましたらご教示ください。

*array('value'=>$urllist.Urllist.url)の部分はエラーが出ますので実際はcall_user_func_arrayで加工してあります。
397nobodyさん:2009/05/26(火) 17:38:03 ID:EqLrLRVD
セッションをmysqlのcake_sessionsテーブルで管理して、
findでセッション情報を読みたいのですが、
dataカラムの、シリアライズされた文字列を、
アンシリアライズして配列に格納するにはどうしたらよいでしょうか?

unserialize()関数を使ってみましたが、Error at offsetというエラーが出て失敗します。
散々ググりましたが、良い手が見つかりません。
どなたか知恵を貸して下さい。

CakePHPのバージョンは1.2.2.8120で、PHPのバージョンは4.4です。
398nobodyさん:2009/05/26(火) 19:36:17 ID:???
DB登録した時のエンコードに合わせれば、
アンシリアライズできるんじゃね?
399397:2009/05/26(火) 19:55:53 ID:EqLrLRVD
>>398
エンコードはUTF8で統一しています。

cake_sessionsテーブルのdataカラムから読み出した文字列を入れると、
下記のような関数の実行と結果になります。

unserialize('Config|a:4:{s:9:"userAgent";s:0:"";s:4:"time";i:1243350003;s:4:"rand";i:1783651587;s:7:"timeout";i:10;')

unserialize() [function.unserialize]: Error at offset 0 of 102 bytes
400nobodyさん:2009/05/27(水) 08:53:05 ID:???
CakePHP で動いている CMS の色々なサンプルを見たいのですが
いま、まともに動いているプロジェクトって wildflower ぐらい?
401nobodyさん:2009/05/27(水) 15:15:10 ID:???
こんにちは。

<?php echo $form->day('DATE', null, array("disabled"=>true));?>
などとして、読み取り専用で表示されるようにしたいのです。

このような書き方で、表示上は確かに読み取り専用になるのですが、
上記を含むformのsubmitを実行すると、真っ白な画面が表示されてしまいます。

何か書き方が悪いのか、代替案があるのか、ご指導いただければと思います。
402nobodyさん:2009/05/27(水) 15:35:04 ID:???
>>401
真っ白な画面ってのが意味不明。エラー見ようよ。
俺も読み取り専用で表示してるのあるけど別に問題なし。
403nobodyさん:2009/05/27(水) 15:43:24 ID:???
>>402
エラーが何も出ていないんです・・・。
blackHoleメソッドが呼ばれている気がするのですが、別にrequireAuthも
設定していないんですよね・・・。
404401:2009/05/27(水) 15:46:52 ID:???
追記です。

textareaなど、readonly属性があるものは、
$form->textarea('aaa, array("cols"=>40,"rows"=>5,"readonly"=>true));
などと書いて問題なく実現できています。

selectだけが動作しない状況です。
405nobodyさん:2009/05/27(水) 17:39:47 ID:???
エラーが表示されてないだけじゃなかろか。

Configure::write('debug', 0);
とかになってない?
406nobodyさん:2009/05/27(水) 17:56:43 ID:???
>>401はsubmitの後の話だろ?
>>404は表示の時の話か?
407401:2009/05/27(水) 20:12:40 ID:???
>>405
Configure::write('debug', 2);
となっています。

>>406
すみません。
表示→submitの一連の流れが実行できるかという話です。

そもそもやりたいことというのが、
入力→確認→save
という一連の流れで使用するviewを同一のもので使いまわしたく、
readonly,disabledを使って表示の制御ができればいいかなと思ったのです。
暫定的に確認用のviewを用意することで回避はしますが、可能であれば
同一viewでやりたいと思っていますので、もしも情報ありましたらお教え
いただければと思います。
408nobodyさん:2009/05/27(水) 21:22:37 ID:???
デバッグレベル0が原因ではないとしたら。
controllerファイルとviewファイルで文字コードが食い違っとる
exit;の消し忘れ
bomの混入

...あたりを疑ってみれ
409nobodyさん:2009/05/28(木) 17:57:49 ID:???
記事とタグとコメントの関係で、

記事とタグは    多対多
記事とコメントは  一対多

これをContainable使ってあるタグに属してるニュースをコメントごと取ってきたいです。

$option['contain']['Tag']['conditions'] = array('id' => $tag_id);
$option['contain']['Comment']['fields'] = array('name', 'comment', 'created');
$option['fields'] = array('News.contents');

$data = $this->find('all', $option);

これだと、タグに属して居ないにもかかわらずTagの中身がEmptyになった状態で検索に引っかかってしまいます。
何かいい方法はないのでしょうか。
410nobodyさん:2009/05/28(木) 17:58:51 ID:???
array
0 =>
array
'News' =>
array
'contents' => string 'テスト' (length=16)
'id' => string '1' (length=1)
'Comment' =>
array
0 =>
array
...
1 =>
array
...
'Tag' =>
array
empty
このような状態です。
411nobodyさん:2009/05/28(木) 20:18:29 ID:???
>>409
$option['conditions'] = array('NewsTag.tag_id' => $tag_id);
にしてやればいいと思うよ。
412nobodyさん:2009/05/29(金) 02:26:31 ID:???
Fast cakephp
って本。

なんのために存在するのか、
まったく意味がわからない。
なにこの本。
413nobodyさん:2009/05/29(金) 02:42:09 ID:???
そもそも紙の本が要らなくなって久しい。
414nobodyさん:2009/05/29(金) 10:26:09 ID:???
紙の本より公式のbookのがわかりやすくないか?
415nobodyさん:2009/05/29(金) 18:13:09 ID:???
Cake触り始めたんだけど
URLはhttp://example.com/hogehoge/
で、hogehogeコントローラが呼び出されるでおk?

今試してみたんだが、ページが真っ白orz
エラー設定もconfigでできるのかな
416nobodyさん:2009/05/29(金) 19:36:41 ID:???
>>415
コントローラは複数形
真っ白なのはCake設置の段階で何かが間違ってる可能性が高い
とりあえずブログチュートリアルでもやれ
417nobodyさん:2009/05/29(金) 21:43:45 ID:???
複数形じゃなくても大丈夫だよ。
418nobodyさん:2009/05/29(金) 23:54:37 ID:???
Cake標準のXMLクラスって、Xpathには対応しないのかな?
Xpath使えないんだったら、普通にSimpleXML使うよなぁ・・・
PHP4でも使えるのはでかいけど。
419nobodyさん:2009/05/30(土) 16:05:50 ID:???
HTMLヘルパーとかFormヘルパーで自動生成するとdivdivしすぎてて
ケータイサイト向けだと使いにくすぎる
せっかくの自動生成なのに、ケータイのアホ仕様のせいで!

>>418
SimpleXMLが十分便利なのでそっちつかっちゃうな
420nobodyさん:2009/05/30(土) 17:20:34 ID:???
http://blog.ecworks.jp/ktai
ここで出されてるライブラリ使ってるんだけどさ、

画像表示おかしくない?
相対URL生成する時はちゃんとRouter::url()通してくれないと
/~hoge/hugaとかに置いてる時におかしくなるんだよね。


バカなの死ぬの
421nobodyさん:2009/05/30(土) 21:33:58 ID:???
>>420
使えないライブラリだと思うんなら自分で修正するか、他を探すか
1から自分で作ればいいじゃん
そんなこともできないの?
バカなの?死ぬの?
422nobodyさん:2009/05/30(土) 22:03:05 ID:???
1.2のpaginationってなんでfirst, number, lastだけ
classもidもないただのspanが勝手につくの?
prevとかnextはspanなんてつかないのに
なんか気持ち悪いから消したいんだけど、第2引数にarray('tag'=>false)を
入れても<span>〜</span>が<>〜</>になって消えないし
423nobodyさん:2009/05/30(土) 23:09:09 ID:???
作者に直接連絡する勇気すらないやつが掲示板で叩くとか
424nobodyさん:2009/05/31(日) 07:57:53 ID:???
>>420
何様なの?
バカなの?死ぬの?
425nobodyさん:2009/05/31(日) 17:48:45 ID:???
>>420
確かにRouter::url()使わないでURL指定するライブラリを公開されると苦労するが
421や423や424の言う通り、ここで叩くお前がおかしい

バカなの?死ぬの?
426nobodyさん:2009/05/31(日) 18:26:41 ID:???
ドキュメントルートより上のディレクトリにファイルを置くことができないレンタルサーバを使っています。マニュアルでいう開発用のインストールしか選択肢がないのですが、このようなレンタルサーバではCakephpの使用は控えた方がいいのでしょうか?

427nobodyさん:2009/05/31(日) 18:48:00 ID:???
>>426
要求される「セキュリティ」の考え方による。CakePHPを分散設置する目的ってな〜んだ?
428420:2009/06/01(月) 12:36:50 ID:???
作者の掲示板に書こうと思ったんだけどメルアド記載しなきゃいけなかったし

ここで本当に俺の言ってることがあってるかどうか確かめたかったんだ。


やっぱりRouter::url()使うのが正解なんだね。死なないよ
429nobodyさん:2009/06/01(月) 13:38:40 ID:???
使ってないなら使ってない理由があるんじゃまいか?
430nobodyさん:2009/06/01(月) 14:24:39 ID:???
>>429
その使ってない理由はなんなんだろうか。
431nobodyさん:2009/06/01(月) 16:46:42 ID:???
>>428
専門板できもい言い回し使うから叩かれるんだろうが
普通に
Router::url()使ってないからルートに置かない場合に
不便なんだけど、修正提案出した方がいいかな?
とか聞けばいいものを
432420:2009/06/01(月) 18:18:49 ID:???
>>431
すみませんでした。

>>429で言ってるように理由はないんでしょうか?
433nobodyさん:2009/06/01(月) 18:57:16 ID:QwyjBfuL
findのconditionsを指定するとき
array("Post.created > DATE_SUB(NOW(), INTERVAL ? WEEK)" => "2"))
とかやるより、あらかじめPHP側で
array("Post.created >" => date('Y-m-d H:i:s', strtotime("-2 weeks"))
とやった方がいいの?
今までDATE_SUB使ってたんだけど、cookbookを見たら下の方を使っていたので
下の方にかき方変えようか迷ってるんだけど・・・
434nobodyさん:2009/06/01(月) 19:22:13 ID:???
>>420
http://blog.ecworks.jp/archives/691
だそうですよ。よかったね修正してくれるって。でも直接言ってくれって。
435nobodyさん:2009/06/01(月) 19:28:19 ID:???
420のたたきっぷりはビックリして何も言えなかったけど、
ktailibraryの作者さんの大人な対応ぶりにはさらにビックリ。

やっぱりできるプログラマーは、違いますね!
436nobodyさん:2009/06/01(月) 20:34:29 ID:???
>>433
DB依存のコードはなるべく書かないほうが正解じゃなかろか。
そのためのDBラッパーなんだし。
437nobodyさん:2009/06/01(月) 21:02:12 ID:???
>>436
言われてみればそうだな。
回答ありがとう。
438420:2009/06/01(月) 21:19:43 ID:???
>>434
ごめんなさいごめんなさいごめんなさい><
439nobodyさん:2009/06/02(火) 00:51:58 ID:???
>>433
ずっと同じDBならどっちでもいいよ。
440nobodyさん:2009/06/02(火) 10:02:44 ID:???
現在、サイト内の example.com/calendar がwebrootになっていて、
それ以外のフォルダには以前からあるCMSのファイルやHTMLファイルがあります。
この状態で、calendar以外の場所、つまりappの外からcakeのモデルにアクセスすることは可能ですか?
441nobodyさん:2009/06/02(火) 17:35:21 ID:???
>>440
出来ると思うけど何がしたいの
442440:2009/06/02(火) 19:04:30 ID:???
>>441
レスありがとうございます。

/calender にcakeをインストールしてイベント情報などを入れていて、
そのイベントのリストを別のディレクトリにあるページに表示したいんです。

feed経由やcakeを通さずに直接DBにクエリを投げる方法は思いつくのですが、
コントローラ内のアクションを通せば抽出も楽だし、
更に可能ならヘルパーやエレメントもそのまま使えないかな、と。
443nobodyさん:2009/06/02(火) 19:33:15 ID:???
>>442
なんで別ディレクトリから読む必要があるのかわからないけど
cakeでcron動かす時の応用でなんとかなるんじゃない?

$_GET['url'] = "event/view/1";
require_once( "/home/hoge/www/calendar/index.php" );

ってしたらexample.com/calendar/event/view/1にアクセスしたのと同じことになるから
それで何とかならないのかな。
444nobodyさん:2009/06/02(火) 20:09:02 ID:???
俺ならその別ページとやらからAjaxで呼んでみるかな
445440:2009/06/02(火) 23:08:37 ID:???
情報ありがとうございます。
サイト全体は既存のCMSで管理されているため、まるっとcakeにしちゃうことはできず、
/calendar 以下にappを構築して、他のディレクトリから必要に応じて使えればと考えました。
もしかすると何か根本的に考え方を間違えているのかもしれませんが…

>>443
お、なるほど。そんな手があるんですね。
画面遷移があるとまた一工夫必要っぽいですが、今回はこれでいけそうな気がします。

>>444
Ajaxで読み込むなら結構自由に何でもやれそうですね。
ただやっぱりクライアント環境に依存しないに越したことはないので、
まずは>>443の方法を試してみようと思います。

ありがとうございました!
446nobodyさん:2009/06/02(火) 23:10:34 ID:???
俺ならその別ページとやらからJSON-RPCで呼んでみるかな
447nobodyさん:2009/06/03(水) 11:59:46 ID:???
iframで既存のサイトの一部分をcakeで出すとか。
448nobodyさん:2009/06/03(水) 12:51:28 ID:???
>>447
…。
449nobodyさん:2009/06/03(水) 15:50:52 ID:???
>>448
なんかまずい?
450nobodyさん:2009/06/03(水) 19:11:02 ID:???
>>449
451nobodyさん:2009/06/04(木) 00:33:50 ID:???
cakeの時代になると、Smartyの扱いってどうなるの?
452nobodyさん:2009/06/04(木) 09:04:20 ID:???
ぞんざいになるの
453nobodyさん:2009/06/04(木) 09:07:40 ID:???
ひややか
 ↓
なまあたたかい
 ↓
ぞんざい
454nobodyさん:2009/06/04(木) 19:04:13 ID:???
cakeのチェックボックスを下にずらーっと並べないで
きれいに並べたいんだけどなんかないのですくわ
455nobodyさん:2009/06/04(木) 20:16:55 ID:???
456nobodyさん:2009/06/04(木) 23:58:54 ID:???
>>454
cssでdivの幅指定 & float:left
457nobodyさん:2009/06/05(金) 12:46:45 ID:???
>>455-456
ありがとう出来たよ。
幅を%指定にすることによって1行にいくつ並べるかも出来た。
458nobodyさん:2009/06/05(金) 16:59:50 ID:???
MVC の初歩的な質問で申し訳ないのですが、
条件付の paginate したいときはコントローラー内で書くしかないのでしょうか。
何となく、SQL の発行とはかモデル内でやった方が良いかなぁと思うのですが、、
459nobodyさん:2009/06/05(金) 17:46:29 ID:???
>>458
前に似たような質問と回答があったから、
そちらを見てみては。
460458:2009/06/05(金) 19:17:20 ID:???
>>459
ありがとうございます。
>>198-208
コンポーネントでやってみることにします。
私は何でもコントローラーに詰め込んでしまう傾向があるので、
MVC の基本から学んでみることにします。
461nobodyさん:2009/06/05(金) 20:41:11 ID:???
h()とかって使ってるバカいるの?
462nobodyさん:2009/06/05(金) 21:01:51 ID:???
>>461
まずいの?
昔はENT_QUOTEついてなかったりしたけど。
463nobodyさん:2009/06/05(金) 21:16:33 ID:???
>>462
いまだってついてないだろ?
それとも最近はついたの?
464nobodyさん:2009/06/05(金) 21:29:47 ID:???
>>461
え?何が悪いの?
465nobodyさん:2009/06/05(金) 21:32:48 ID:???
>>464
シングルクオートをエスケープしないだろ
466nobodyさん:2009/06/05(金) 21:44:01 ID:???
>>463
http://www.infinity-blue.jp/archives/58
とっくの昔についてるわ
467nobodyさん:2009/06/06(土) 00:53:52 ID:???
>>465
?そうだっけ?
468nobodyさん:2009/06/07(日) 23:06:58 ID:IWMv9X2i
いやーアソシエーション便利やわーって、ふと疑問に思ったのですが、
回帰的にHABTMってできるんでしょうか?
例えばpostsなんてテーブルがあって、
posts_postsなんて結合用のテーブルを用意して、
一つのテーブルを回帰的に多対多にするとか。
無理?それとも不幸になる?
469nobodyさん:2009/06/08(月) 00:56:23 ID:???
作り込み始めたら、すっげー遅くなってきた。
リンク押すとすぐに表示される場合もあれば、10秒くらいかかることもある。
キャッシュは使ってるんですが、なにかもっと速くする方法ないでしょうかね?
470nobodyさん:2009/06/08(月) 01:10:18 ID:???
APC、クエリキャッシュとアソシエーションを減らせばおk。
471nobodyさん:2009/06/08(月) 13:14:53 ID:???
>>468
ttp://www.tonttu.net/tec/cakePHP/cakephpHABTMwith.html
これじゃね?試してないが
472nobodyさん:2009/06/08(月) 15:41:57 ID:???
>>469
なんかネックになってるSQLがあって、10秒くらいかかってるんじゃね?
キャッシュが効いてる時はすぐに表示されると言うだけで
473nobodyさん:2009/06/08(月) 21:13:40 ID:???
>>469
cakephp1.1?
1.1は遅いよ。1.2にすべし。
474nobodyさん:2009/06/09(火) 19:13:55 ID:???
複数のコントローラ内で使用する共通の処理をさせたい時はビヘイビアで設定するのが正しいでしょうか?
ビヘイビアで設定しても呼び出し方が分からず困ってます。
TreeBehaviorとか決まった名前のビヘイビアしか作れないのでしょうか?
475nobodyさん:2009/06/09(火) 20:07:13 ID:???
本読んだけど、まったくわからない。
476nobodyさん:2009/06/09(火) 21:20:39 ID:???
>>474
複数のモデル内 => ビヘイビア
複数のコントローラ => コンポーネント

です。
名前は hoge ビヘイビアでも abesouri ビヘイビアでも何でも作れますよ。

あなたはコントローラー内でのモデルの使い方がいまいちわかっていないと思います。
477nobodyさん:2009/06/10(水) 09:41:54 ID:???
>>474
>>476のようにcomponentで実装するのが良いでしょう
より簡単なやり方としては。
app_controller.phpで共通する処理を書いてあげると、すべてのcontrollerで利用できます。
※ただし、URLでアクセスされないように、function _hoge() のように _ をつけてね
478nobodyさん:2009/06/10(水) 13:01:47 ID:???
Ajaxヘルパーのオートコンプリートを試しているのですが、
テキストフィールドに文字列を入力してエンターを押しても候補が表示されず、
1文字削除すると、候補が表示されます。

どうすれば直るのでしょうか?
479478:2009/06/10(水) 13:28:23 ID:???
どうやらfirefoxの場合に起こるようです。
何か対処法はないでしょうか・・・
480nobodyさん:2009/06/10(水) 14:28:19 ID:???
>>476-477さん
レスありがとうございます。
呼び出し方として
モデル->ビヘイビア
ではなく
コントローラ->{モデル,ビヘイビア}
ということでしょうか?
おんなじ処理(たとえばPV集計など)を書くのにコンポーネントだとMVC的に間違っている気がするのですが
481nobodyさん:2009/06/10(水) 14:29:41 ID:???
レイアウトの表示文字コードを変えるのはどうすればいいでしょうか?
core.php内で設定する以外でお願いします。
482nobodyさん:2009/06/10(水) 15:22:58 ID:???
>>481
つ beforeRender()
483482:2009/06/10(水) 15:39:30 ID:???
間違えた afterRender() だた
484nobodyさん:2009/06/10(水) 15:44:47 ID:???
>>480
まだいまいち状況がつかめていないが。

共通の処理というのが特定のモデルを使うようなものであれば、
そのモデルを各コントローラーから呼んであげればよい

モデルを使わないのであれば、各コントローラーで処理する

各コントローラーの処理を共通化するのは>>476-477
485nobodyさん:2009/06/10(水) 16:28:13 ID:???
みんなaa()って使ってる?
どういう場面で使えばいいのかわかんなくて、一度も使ってないんだけど
486nobodyさん:2009/06/10(水) 20:31:17 ID:???
まぁ、俺も使い所というか使う意義は分んないけど。
必要無いものを無理に使う必要はないと思う。
487nobodyさん:2009/06/10(水) 21:59:36 ID:???
俺は e() も使ってない。
488nobodyさん:2009/06/10(水) 22:43:22 ID:???
なにこれ難しすぎる
わけわからん
全然スイーツじゃねぇし
489nobodyさん:2009/06/10(水) 23:06:08 ID:???
ぐ・・、つ・釣りか・・
しかし、もう我慢できない!



スイーツな名前だけどスイーツには使いこなせませんっ!
異論は認める
490nobodyさん:2009/06/10(水) 23:07:35 ID:???
意外とスイーツは簡単に使いこなしてたりして

マニュアル主義的なところあるし
491nobodyさん:2009/06/11(木) 01:11:50 ID:???
>>486
手を出さないのが無難とはわかりつつも、わざわざグローバル関数として
用意されているのだから、便利な使い方があるに違いないと邪推してしまう

>>487
e()って何だよと思って調べたらecho()か
だいたいechoは()でくくらないで使う方が普通だと思うし
それを考えると、逆に使いづらくなってるような

俺が使うのはhと、デバッグ時にprくらい
気分でenvとか使っちゃうことがあるけど、
自分でも何で使ってるのかわからない
492nobodyさん:2009/06/11(木) 01:36:39 ID:???
短くするの流行ってるのかね
いっそのこと逆にsystem.out.print()とか作れよw
493nobodyさん:2009/06/11(木) 02:49:59 ID:???
「いっそのこと」の使い方が間違ってないかw
494nobodyさん:2009/06/11(木) 13:27:45 ID:???
viewでコードが横に長くなるのが嫌なので、view内でe()とh()はよく使う。
e(h())ってなるのがいやなので、eh()ってのを作って使うとより便利だけどね。
495nobodyさん:2009/06/11(木) 13:50:01 ID:???
CakePHPでmysql_real_escape_string は使いませんか?
496nobodyさん:2009/06/11(木) 14:49:44 ID:???
>>495
基本的に勝手にエスケープされるのでほとんど使わない

そういやCakeだとLIKのワイルドカードの%と_がエスケープされないけど
これは自分でエスケープしなきゃいけないのかね
フレームワークでは意図的に入れたワイルドカードか不意にポストされた
ワイルドカードか判断できないってことなのかな
497nobodyさん:2009/06/11(木) 15:20:52 ID:???
>>496
なるほど。ありがとうございます
498nobodyさん:2009/06/11(木) 15:42:25 ID:???
e()なんて初めて知った。
499nobodyさん:2009/06/11(木) 16:23:52 ID:???
>>498
一度使うと病みつきになるよ。俺のコードe()だらけだ。
500nobodyさん:2009/06/11(木) 16:55:12 ID:???
>>496
判断できてるからエスケープされてないんじゃないの?
501nobodyさん:2009/06/11(木) 21:09:45 ID:???
俺もe()派。でもカッコだらけでわけわからなくなることが時々。
502nobodyさん:2009/06/12(金) 00:59:17 ID:???
>>500
んー、検索フォームで%をポストされると、そのままワイルドカードに
なっちゃうんだよね
hoge%fugaで検索すると%hoge%fuga%にマッチするのを探しちゃう
本当なら%hoge\%fuga%になってほしいところなんだけど
まあ、そこまで問題ではないのかもしれないけど、意図しない動作なので気になる
503nobodyさん:2009/06/12(金) 03:14:29 ID:???
>>502
む、それ結構やばくね
504nobodyさん:2009/06/12(金) 06:26:58 ID:???
>>502
どう書いてるの?
505nobodyさん:2009/06/12(金) 06:51:54 ID:???
>>481-483
function afterLayout(){
  $view =& ClassRegistry::getObject('view');
  $view->output = mb_convert_encoding($view->output, 'SJIS');
}
らしい。ttp://blog.ecworks.jp/archives/506
506nobodyさん:2009/06/12(金) 09:56:19 ID:???
>>502
%は、エスケープされないみたいだね。
シングルクオート、ダブルクオートはエスケープされてるから、仕様っぽいな
507nobodyさん:2009/06/12(金) 10:18:18 ID:???
コンポーネントで%を付加&エスケープ
function wildcard($text ,$escape = true ,$left = true ,$right = true ,$wc = '%') {
  return (empty($left) ? '' : $wc) . (str_replace($wc ,'\' . $wc ,$text)) . (empty($right) ? '' : $wc);
}
508nobodyさん:2009/06/12(金) 12:57:59 ID:???
これって、入力値に対してデータ検索するようなプログラムの場合

%ほげほげ

って入力されたら、インデックスがあたらなくてサーバを簡単にあぼんできるってこと?
509nobodyさん:2009/06/12(金) 13:44:17 ID:???
>>>508
ユーザーからの入力値を受け付けて、なおかつワイルドカードで始まらない
like文っていうのはあまり想像できないけどな。
510nobodyさん:2009/06/12(金) 16:10:41 ID:???
cakeのチューニングについて詳しく書かれてるサイトとか教えてちょんまげ
511nobodyさん:2009/06/12(金) 19:58:24 ID:???
出力されたHTMLの先頭にゴミデータが表示されるんですが
どこで出ているのか、特定できなくて困っています。

コントローラの最後にechoを入れるとゴミデータの前、
VIEWの最初に文字を入れるとゴミデータの後に
表示されるので、コントローラとViewの間で表示されていそうなんですが
どこがあやしいかわかりますか?
これをしてみれば?みたいなことがあれば教えてください。
512nobodyさん:2009/06/12(金) 20:30:44 ID:???
ごみデータって具体的になんですか
513511:2009/06/12(金) 21:14:17 ID:???
自己解決しました。

文字コードが誤って判定されていました。
http_outputを設定することで解決しました。

httpだと問題なく動作していたんですが、httpsにしたとたん
問題が発生しました。
SSLでは文字コードの判定が違うんでしょうか。

>>512
ゴミデータは?でした。
514nobodyさん:2009/06/14(日) 05:26:58 ID:???
h(); はだいぶ短くなるから使うのわかるけどさ。
e(); は echo の略だから 1文字しか短くならない。

だから使わないんだよね。
515nobodyさん:2009/06/14(日) 17:49:59 ID:???
apc入れようとしてるんだけど、さくらサーバでも導入する事できるの?
516nobodyさん:2009/06/15(月) 05:53:28 ID:???
517nobodyさん:2009/06/15(月) 05:54:41 ID:???
518nobodyさん:2009/06/15(月) 20:19:10 ID:???
519nobodyさん:2009/06/15(月) 21:55:12 ID:???
日本語でおk
520nobodyさん:2009/06/16(火) 01:02:44 ID:???
英語が雑なので分かりにくいのでは?
521nobodyさん:2009/06/16(火) 22:49:42 ID:???
http://www.amazon.co.jp/dp/4839932468
CakePHP1.2ガイドブック
6/27発売 キタ━━━━━━(゚∀゚)━━━━━━ !!
522nobodyさん:2009/06/16(火) 22:58:46 ID:???
もうCake本いらないだろ・・・symfonyのを出してくれよ;
523nobodyさん:2009/06/16(火) 23:00:25 ID:???
そりゃ売れるものを出すだろ
524nobodyさん:2009/06/17(水) 12:27:40 ID:???
Bakerの皆さんに質問です。

最近のCakePHPではPostgreSQLでまともに動きますか?

それと、バグは収束傾向でしょうか?

525nobodyさん:2009/06/17(水) 17:37:53 ID:???
>>521
たか〜

CakePHPにこんな分厚いマニュアルなんているのかよ
526nobodyさん:2009/06/17(水) 17:52:25 ID:???
確かに高いが、日本に何人いるかわからんBakerのための本と考えると
こんなもんなのかと思える
ただのPHPと違ってユーザー数は一桁違うだろうからね
527nobodyさん:2009/06/18(木) 12:52:15 ID:???

Componentでsmartyをつかいたいのですが、
<?php
class Mail_sendComponent{

//メール内容生成------------------------
var $smarty;
var $tmp_path;
var $url;
function make_mailbody($tmp_path,$url){
App::import('Vendor','smarty/Smarty.class');
//合成
$this->smarty->assign("url",$url);
$out = $this->smarty->fetch ($tmp_path);

return $out;
}
}
?>
エラー内容
Fatal error: Call to a member function assign() on a non-object in /パス/mail_send.php on line 18


どしたらいいのでしょうか・・・・
528nobodyさん:2009/06/18(木) 12:58:09 ID:???
どうしたら良いも何も…。
529527:2009/06/18(木) 13:09:19 ID:???
初心者の為、
そもそものコピペの流用なのですが、

vendor("smarty/Smarty.class");

App::import('Vendor','smarty/Smarty.class');
に変えただけなのですが・・・・


$this->smarty =new Smarty();
とか、そういう方向でしょうか・・・?
530カナディアンマン:2009/06/18(木) 16:07:17 ID:???
チェックボックスを作成しました。
出力されたHTMLで、 data[User][job] の後の括弧の中身が空欄なのですが、これは正常ですか?

チェックボックスにチェックをしてFormを送信しても値が取れないんです。

出力されたHTML
<input type="checkbox" name="data[User][job][]" value="1" id="UserJob1" /><label>ヒキ</label>
<input type="checkbox" name="data[User][job][]" value="2" id="UserJob2" /><label>ニート</label>
<input type="checkbox" name="data[User][job][]" value="3" id="UserJob3" /><label>フリーター</label>

VIEWの記述
echo $form->input('job', array('label' => '仕事', 'type' => 'select', 'multiple' => 'checkbox', 'options' => $jobs));

コントローラーの記述
$jobs = $this->User->Job->find('list');
$this->set(compact('jobs'));
531nobodyさん:2009/06/18(木) 16:31:55 ID:???
>>530
値が取れないって、どうやったら取れなかったの?
debugは有効にしてる?
532カナディアンマン:2009/06/18(木) 17:00:36 ID:???
レスありがとうございます。

data[User][job]の中身がNULLでした。
533カナディアンマン:2009/06/18(木) 17:09:12 ID:???
すいません。
僕の質問の仕方がわかりづらいと思うので、少し変えます。

>>530のHTMLでチェックボックスをONにして送信しても、empty(data[User][job]) がTRUEになります。

チェックボックスがONになっているという情報はどのように取得できるのでしょうか?
534nobodyさん:2009/06/18(木) 17:13:21 ID:???
>>533
this->data じゃなくて??
535nobodyさん:2009/06/18(木) 17:42:48 ID:???
$も'も省略されるとphpっぽくないよな。
536534:2009/06/18(木) 18:08:35 ID:???
一応分りやすいように・・
$this->data


debugをオンにしてないってオチじゃないよね?
537nobodyさん:2009/06/18(木) 18:57:33 ID:???
>>533
debug( $this->data );
を、controllerに記述して中身を確認しましょう。
そしたらあとはカラムの型に応じて適当に処理すべし
538nobodyさん:2009/06/18(木) 20:08:09 ID:???
新規でPHPの構築サイト案件がちらちらマッチングに出てるが
そのほとんどはデザイナ会社が勘違い(or 背伸び)で取ってきた案件が多いな。

だから>>521のような本が伸びるんだろう。
539カナディアンマン:2009/06/18(木) 23:28:34 ID:???
お手数かけます。
debug( $this->data ); をしました。

結果
Array
(
[User] => Array
(
[hoge] => 1
[job] =>
[hogehoge] =>aaa
)
)

やっぱりjobの中に何も入ってないです。
540nobodyさん:2009/06/18(木) 23:53:02 ID:???
>>539
>>530見直したらアソシエーションしてるね
どう関連づけされているかおしえて。
541nobodyさん:2009/06/19(金) 00:05:29 ID:???
>>539
HABTMなら
http://book.cakephp.org/view/85/Saving-Related-Model-Data-HABTM
$form->input('Job.Job');
ってまだHABTMやったことないけど
542カナディアンマン:2009/06/19(金) 00:39:16 ID:???
アソシエーションはこれです。
var $belongsTo = array(
'Job' => array(
'className' => 'Job',
'foreignKey' => 'job_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
HABTMではありません。

あと、申しわけないのですが、VIEWの記述は>>530のヤツには少し間違いがありました。正しくはこれです。

出力されたHTML
<input type="checkbox" name="data[User][job][]" value="1" id="UserJob1" /><label>ヒキ</label>
<input type="checkbox" name="data[User][job][]" value="2" id="UserJob2" /><label>ニート</label>
<input type="checkbox" name="data[User][job][]" value="3" id="UserJob3" /><label>フリーター</label>

VIEWの記述 (※inputの後は'job_id'でした)
echo $form->input('job_id', array('label' => '仕事', 'type' => 'select', 'multiple' => 'checkbox', 'options' => $jobs));

コントローラーの記述
$jobs = $this->User->Job->find('list');
$this->set(compact('jobs'));

543カナディアンマン:2009/06/19(金) 00:48:30 ID:???
それで、少しいじったらうまくいきました。

VIEWの記述
echo $form->input('job_id_hoge', array('label' => '仕事', 'type' => 'select', 'multiple' => 'checkbox', 'options' => $jobs));

「$form->input(」の後ろを「job_id_hoge」にしたらうまくいきました。
Userテーブルに存在する列と同じ名前だとうまくいかないみたい?
何でかわかりませんが・・・。
544nobodyさん:2009/06/19(金) 07:52:35 ID:???
>>542-543
なんだjob_idなのか。
habtmじゃないとしたらUser.job_idにはint型ひとつしか入らないでしょ。
だからUser.job_idは複数選択できちゃだめ。
で、field にないデータが欲しいときは、架空のフィールド(例User.jobs)を作ってあげるイメージ
そしたら、multiple checkbox でも何でもできるから、$this->data['User']['jobs']に所望のデータが入るってこと。

データが消えたのは重複するjob_idが存在したか、もしくはモデルのデータを参照したとかかな?
545nobodyさん:2009/06/20(土) 02:06:37 ID:???
Titleというモデルとコントローラを作り、

<?php
class TitlesController extends AppController {

var $name = 'Titles';
var $scaffold;
}
?>

としたところ、
viewアクションで
Undefined variable: title
が発生してしまいました。

いろいろ調べたところ、
$controller::set()で
titleにセットすると、
$titleにセットされずに$view::pageTitleにセットされるのが原因のようです。

titleを別の名前にするのが手っ取り早いとは思うのですが、
何か他に解決方法はないでしょうか?
546nobodyさん:2009/06/20(土) 09:35:43 ID:???
>>545
viewアクションだけ自作するのがよさげ
nullチェックと$this->set('title' ,$this->Title->read ・・・ くらいしかしてないから
547545:2009/06/21(日) 00:44:37 ID:???
>>546
特定のアクションだけ自作とかできたんですね。
ありがとうございます。

しかしtitleが使えないとなると、なんて変数名でセットしようか・・・
こういうところで悩んでしまってぜんぜん進まない;
548nobodyさん:2009/06/21(日) 06:29:42 ID:???
Tree ビヘイビアで作ったモデルを
generateTreeList でツリー構造の連想配列で取得できないのでしょうか。
ttp://book.cakephp.org/ja/view/228/Basic-Usage

例えばこんな感じ。
$ary = array(
'id' =>1,
'name' => 'カテゴリ',
'children' => array(
'id' => 2,
'name' => '楽しみ',
'children' => array(
array('id' => 3, 'name' => 'スポーツ',
'children' => array(
array('id' => 4, 'name' => 'サーフィン'),
array('id' => 5, 'name' => 'スケート'),
),
),
array('id' => 6, 'name' => '友人',
'children' => array(
array('id' => 7, 'name' => 'ジェラルド'),
array('id' => 8, 'name' => 'グウェンドリン'),
),
),
),
),
);
549nobodyさん:2009/06/21(日) 13:27:11 ID:???
>>548
できなかったと思う
取得後に加工するのが手っ取り早い
550nobodyさん:2009/06/21(日) 23:07:24 ID:???
>>548 find('threaded')でできなかったっけ?
551548:2009/06/22(月) 02:56:27 ID:???
>>550
ちゃんとマニュアルありましたね。ありがとうございます!
ttp://book.cakephp.org/ja/view/812/find-threaded
552549:2009/06/22(月) 09:41:51 ID:???
>>551
ごめん、勝手に array[ 'id' ] = 'name' 形式に脳内変換してた。。。
553548:2009/06/23(火) 05:15:19 ID:???
ググっても見つからなかったもので…。
beforeFilter でコンポーネントから取得した値を
同じコントローラー内で使うのはどうすれば良いでしょうか

function beforeFilter() {
$member = $this->ComponentsName->getMember();
$this->set('member', $member);
}
function view() {
←ここで使いたい
}

変数を展開してみて上のように set していれば $this->viewVars で値は取れるのですが
1.2 でなくなる(でもなくなってない)ので使って良いものか…。
ttp://labs.uechoco.com/blog/2008/02/phpcakephpviewvars.html
554nobodyさん:2009/06/23(火) 05:30:36 ID:???
>>553
えっ、それ使えなくなったら結構困るな
555nobodyさん:2009/06/23(火) 10:09:03 ID:???
>>553
適当にメンバ変数に入れてあげればよい
$this->Member = $this->ComponentsName->getMember();
※もちろんコンポーネント内で処理しても良い

setは、あくまでviewに変数を受け渡すものだから、二度手間でもview()の最後でsetしてあげてください
556nobodyさん:2009/06/23(火) 10:15:11 ID:???
cronで回す処理はcakeを使わないほうがよいのでしょうか。
コントローラとアクションは引数で渡す??

cron以外はcakeで開発しているので、設定ファイル等同じものが
使えたほうがいいと思うのですが、難しいですよね。
557nobodyさん:2009/06/23(火) 10:21:24 ID:???
558nobodyさん:2009/06/24(水) 04:43:33 ID:???
昨日ダウンロードして初めて触ってみた。
始めはちんぷんかんぷんだったけど、なんか面白そうだ。
でもさ、命名規則が煩わしいし、よくわかんねー。例えば、
Php
Phps
php
phps
どれか一つでも違ってたらアウトだよね?
「php」っていうキーワードがあるなら、なんでそれを全体に
反映させないのかと思った。プロジェクト毎に大文字小文字
や単数形・複数形を意識して、変数やパラメータを書き換え
なきゃいけないなんて。。
559nobodyさん:2009/06/24(水) 04:52:58 ID:???
我侭言うな
560nobodyさん:2009/06/24(水) 08:14:51 ID:???
命名規則が緩かったらフレームワークの意味がないな。
561nobodyさん:2009/06/24(水) 09:28:04 ID:???
>>558
まずCoC(やDRYとか)の概念を理解することがRoR流のフレームワークを学ぶときの近道。
命名規則はすぐ慣れるから安心しる(なぜそうなのかが分かれば間違えることはない)
562nobodyさん:2009/06/24(水) 16:18:05 ID:???
日本人だと「基本は単数形」って覚えちゃうけど、
単数複数の概念があると、単数形や複数形で書くメリットも大きい。
あと、単数複数が間違ってたら、エラーページが出てきて
「○○ってクラスがねえから、こんな感じで書け!」って
教えてくれるので単数複数を間違えてもすぐ気づくし。
563nobodyさん:2009/06/24(水) 17:35:18 ID:???
>>560
×フレームワークの意味が無い
○RoR系の意味が無い
564nobodyさん:2009/06/24(水) 17:59:42 ID:???
複数系なんて、中学で習ったし、基本 s つけるだけなのに案外覚えてないよね。
俺も苦労した。

今のバージョンは
indexs でOKだけど、以前は
indexcies? にしないとエラーになった時があった。
565nobodyさん:2009/06/24(水) 20:31:06 ID:???
俺はdataの単数系が云々という既出の話で苦労した
datumなんて知らねえよ
566nobodyさん:2009/06/24(水) 23:20:54 ID:???
不規則変化の動詞、名詞は頻出だということで、
やたら覚えさせられたが。

俺はもう古い時代の人間なのか。
567nobodyさん:2009/06/25(木) 00:29:39 ID:???
>>558
慣れれば何の問題もないよ。
URLの事を言ってるなら、route.phpでいくらでも簡単に変えられる。
568nobodyさん:2009/06/25(木) 01:25:04 ID:BlJ0aidQ
echo $form->create('Post');
echo $form->end('Save Post');
これでフォーム作って送信したあとのURLがパラメーターを持つようにしたい
場合どうしたらよいのですか?

http://localhost/cake/posts/add/1
この画面で送信ボタン押して制御が画面に戻った後
http://localhost/cake/posts/add
になってしまいます。
569nobodyさん:2009/06/25(木) 02:15:10 ID:???
>>568

$form->create('Post',array("action"=>"add".DS.$id));
570nobodyさん:2009/06/25(木) 02:24:42 ID:???
>>568
基本的にはマニュアル見るのが早いかつ確実
ttp://book.cakephp.org/ja/view/186/options-url

>>569さんのでもいいけど。

<?php echo $form->create(null, array('url' => array('controller' => 'recipes', 'action' => 'add', 'id' => '1'))); ?>
のほうが柔軟性がある。

どう柔軟性があるかっていうと、route.phpで変更したときに柔軟性がある。
571nobodyさん:2009/06/25(木) 05:20:41 ID:BlJ0aidQ
>>569
>>570

ありがとうございます!
572nobodyさん:2009/06/25(木) 09:05:29 ID:???
>>568
$form->create('Post', array('url'=>'/'.$this->params['url']['url']));
573nobodyさん:2009/06/25(木) 09:21:19 ID:???
>>568>>572
$form->create('Post', array('url'=>$this->here));
>>570でも良いが、namedと勘違いされないためには↓じゃね?
$form->create(null, array('url' => array('controller' => 'recipes', 'action' => 'add', '1')));

createは複雑なルーティングしてると苦労する
prefixとparamsルーティングあると思うようにリバースルーティングしてくれなくて挫折した
正攻法は後者。うまくいかないときは前者で対処してる
574nobodyさん:2009/06/25(木) 17:16:17 ID:BlJ0aidQ
$this->model->getLastInsertID()という関数が、apache再起動したら使えなくなってしまいました。

サーバー停止してしまうと、モデルのなにかが初期化されてしまうのでしょうか?
575nobodyさん:2009/06/25(木) 17:21:59 ID:BlJ0aidQ
同様にsave()でのinsert時もauto_incrementが出来なくなってしまいました。
576nobodyさん:2009/06/25(木) 20:08:20 ID:???
>>574
あくまで推測の域だが、save後にlastidが取れるのはセッションに
保存してるからじゃないかな。mysqlみたいにSQLで用意してる
DBもあるけど、そうじゃないのもあるし、セッションが失われる行動を
取ると当然なくなると思う。

オートインクリはサポートしてないDBもあるから、それに合わせた
コーディングが出来てないんじゃないの?

ソースとかマニュアル見てみたけど推測の域を出ないな。
577nobodyさん:2009/06/26(金) 02:57:40 ID:???
>>576
すいません!再起動、関係なかったです。
原因は↓でした。
http://www.mono-space.net/blog/php/e070405_insert_or_update.htm

上記レス(568〜)の修正によってURLのパラメーターが取れるようになったんですが
勝手にIDにセットされ、insertできなくなったのでした。

修正前に再起動していた為、apache/mysqlのせいだと思い込んでました。
578nobodyさん:2009/06/26(金) 11:22:44 ID:???
というか、lastidってセッションかpost backしてなくなら
排他でselect maxか、同一トラン内でしか取得出来んだろ。
579nobodyさん:2009/06/26(金) 11:22:52 ID:LY+hfClR
$this->flash('unko', 'add/'.$id);
とやると実際のflash画面には$idが抜けてしまいます。
>>568さんに近いような気もするんですが、
$idをflashに渡すにはどうすれば良いですか?
580nobodyさん:2009/06/26(金) 13:16:26 ID:???
>>579
'/contorollers/add/' . $id
かrouting用の表記で
581nobodyさん:2009/06/26(金) 16:53:48 ID:???
>>579
flashに変数を渡そうとしたことが無い。
発想を変えてみては?何で渡したいのか知らんけど。

$this->flash($id . 'さんは unko をたっぷりしました', 'add');

これでflashのメッセージには $id が渡る。
flashを抜けた先でさらに id を使いたい場合は

$this->flash($id . 'さんは unko をたっぷりしました', 'add/'.$id);

で、いいんじゃないの。
582nobodyさん:2009/06/26(金) 21:28:37 ID:???
>>581
渡らないと思うけど。
583nobodyさん:2009/06/26(金) 22:19:28 ID:???
flashをオーバーライドすりゃええやん
584nobodyさん:2009/06/27(土) 19:00:54 ID:CJ8L5rCq
質問です。

ビュー内の関数内でヘルパーが呼び出す方法がわかりません。
たとえば、

function foo() {
  return $html->link("hoge", "hoge");
}

のようにすると、$html が無いと怒られてしまいます。
global $html;
のように宣言しても駄目みたいです・・。

ビュー内に直接記述すると、正しく機能してくれるので、宣言忘れということは無いと思います。

どなたか解決策をご存知の方、ご教授いただけないでしょうか。
585nobodyさん:2009/06/27(土) 19:57:02 ID:???
>>584

var $helpers = array('Html');

function foo() {
  return $this->Html->link("hoge", "hoge");
}
586nobodyさん:2009/06/27(土) 20:00:04 ID:???
>>585 です
Helper内と勘違いした。ごめん

View内で関数つかうのなら、Helperにしたほうがよくないかい?
テンプレート内に関数いれるとなると、MVCの役割的にもよくないと思う。
587nobodyさん:2009/06/27(土) 21:19:31 ID:???
>>584
>>586にあるとおり独自のHelperを作成してください。
そのなかで$helpers=array('Html')とでもやっておけば$this->Html->link()などと使えます。
588584:2009/06/27(土) 22:07:39 ID:CJ8L5rCq
>>586
>>587
丁寧なご説明ありがとうございます。
$rss ヘルパーに、$rss->items($data, "a_function_name") というアイテムの一覧を出力するメソッドがあるのですが、この 2 番目の引数がグローバル関数の名前を取る仕様になっているのです。

$rss->items の第 2 変数にヘルパーのメソッドが渡せれば解決するのですが・・・;
589nobodyさん:2009/06/28(日) 11:43:08 ID:???
>>588
$rss->items($item, array( $hoge ,"fuga" ) )
とHogeヘルパーのfugaメソッドを渡せば行けるんじゃね?
590nobodyさん:2009/07/01(水) 09:51:27 ID:???
>>588-589
こうかな?試してないけど
$rss->items($item, array( ClassRegistry::getObject('view')->getVar('hoge') ,"fuga" ) )
591nobodyさん:2009/07/04(土) 12:39:33 ID:???
http://localhost/cakephp/posts/index
これでアクセスすると下記のようなエラーが出ます
何がおかしいんでしょうか?

Error: The view for PostsController::index() was not found.

Error: Confirm you have created the file: C:\xampp\htdocs\cakephp\app\views\posts\index.ctp

Notice: If you want to customize this error message, create app\views\errors\missing_view.ctp

592nobodyさん:2009/07/04(土) 12:40:38 ID:???
あら再起動したら見れました^^;
失礼
593nobodyさん:2009/07/04(土) 17:05:48 ID:5YKVYrNe
HBTMのバリデーションルール
最低一つは選択ってどうかけばいいですか??
教えて!

UserとDinnerがあったとして、

users/add.ctpあたりで
> echo $form->input('Dinner',
>  array(
>   'multiple' => 'checkbox',
>  )
> );
こんな感じのときに、
一つも選択していなければエラーにしたい。

ルールは
> 'rule' => array('multiple', array('min' => 1))
これでいいのかな??


Userモデル?Dinnerモデル?
DinnersUser???
どこにどうかけばいーですか?
594nobodyさん:2009/07/05(日) 10:58:08 ID:???
>>588
それはある
詰め込み世代の新人って指示待ちか出来もしない癖に勝手な事やって迷惑掛けてくれる奴かの両極端だった
ここ数年の奴らは、意外と使える
我々にしてもそうだったけど目で盗んで憶えるというか自分の頭で考えて言われなくても的確に動けるのが増えた気がする
日本人らしさが戻って来た感じ
595nobodyさん:2009/07/06(月) 06:51:08 ID:???
シェルを動かすときにパラメータを渡すことができますか?

例えばシェルが
Class hogeShell extends Shell {
function hoge($id) {

としたときにコマンドを叩くときこの $id を渡したい。
596nobodyさん:2009/07/06(月) 07:28:41 ID:???
>>595
$this->args
597nobodyさん:2009/07/06(月) 12:32:18 ID:???
" information "って単語、単・複数形の区別が無いのですね。

Informations ってテーブル切って、bakeしたら「テーブルねぇぞ!」って怒られたら、調べてみたら Information で統一だった

自分の英語レベルの低さに悲しくなる...orz
598nobodyさん:2009/07/06(月) 13:50:27 ID:???
599593:2009/07/06(月) 17:06:53 ID:7VJoQdab
>>598
ありがとうございます。

う〜〜〜ん、なんかスッキリしない方法ですねやっぱり。
よくありそうな仕様なのに正攻法でないというか。。

そうも言ってられませんのでいただきましたURLのような実装でいこうと思います。
ありがとうございました
600593:2009/07/06(月) 20:30:54 ID:7VJoQdab
以下で実装しました。
>>598で教えていただいたので基本やりましたが、
独自メソッドを置く方法をとる必要もなかったので組み込みルールでやりました。
一応書いておきます。


UserとDinnerがあったとして、

users/add.ctpあたりで
> echo $form->input('Dinner',
>  array(
>   'multiple' => 'checkbox',
>  )
> );
のとき、

models/dinner.php
> var $validate = array(
>  'Dinner' => array(
>   'oneOrMore' => array(
>    'rule' => array('multiple', array('min' => 1)),
>   ),
>  ),
> );
601593:2009/07/06(月) 20:35:20 ID:7VJoQdab
(つづき)

controllers/user_controller.php
> $flag = true;
>
> $this->User->create();
> $this->User->set($this->data);
> if (!$this->User->validates()) $flag = false;
>
> $this->User->Dinner->create();
> $this->User->Dinner->set($this->data);
> if (!$this->User->Dinner->validates()) $flag = false;
>
> // 上記以外もアソシエーションあればバリデートして
> // 全ての検証の結果flagがたっていれば保存する処理を以下に。
602nobodyさん:2009/07/06(月) 21:42:58 ID:???
>>601
$flagは使わずにできるからもっとDRYにできますよ
603593:2009/07/06(月) 23:04:14 ID:7VJoQdab
>>602
詳しくおねげーします!!
604nobodyさん:2009/07/06(月) 23:20:21 ID:???
>>603
$this->User->create();
$this->User->set($this->data);
$this->User->Dinner->set($this->data);
$this->User->Dinner->validates();
if ($this->User->saveAll()) $this->redirect();
でいけるはず。(validate=>firstが必要かもしれないけど)
アソシエーションされていれば関連モデルのvalidateは自動。
605593:2009/07/06(月) 23:22:20 ID:7VJoQdab
こうですかね?

> $this->User->create();
> $this->User->set($this->data);
>
> $this->User->Dinner->create();
> $this->User->Dinner->set($this->data);
> if (!$this->User->validates() && !$this->User->Dinner->validates()) {
>  //保存処理
> }


とか外したことかいてたらレス頂いてたorz


>>603
そうなんですか!
ためしてみます
606593:2009/07/06(月) 23:25:19 ID:7VJoQdab
>>603じゃなかった
>>604
ためしてみます。ありがとうございます
607nobodyさん:2009/07/07(火) 00:15:37 ID:CrPLCrV4
あー確かに行けるんですが、
saveAll()かける前に一ページはさんでて、
単にvalidateしてconfirmページ出すためにflag使ってたみたいです
validateAllとかあればいけそうなんだけど・・・

とりあえずありがとうございました。
608nobodyさん:2009/07/07(火) 05:58:58 ID:???
CakePHPでSOAPサーバを構築したいのですが、参考URLとかありますか?
609nobodyさん:2009/07/07(火) 06:18:09 ID:???
用途が違う
610nobodyさん:2009/07/07(火) 10:13:11 ID:???
>>608
bakeryにあったと思う。
611nobodyさん:2009/07/07(火) 21:48:44 ID:???
やっばい
BAKE楽しいっすね
自動でコード生成してくれるなんて最高〜〜
612nobodyさん:2009/07/08(水) 06:42:23 ID:???
自動コード生成なんて MSのAppWizard(笑)とかの昔からあるよ。
それに勘違いしてるヤツが多いけど、大昔はメモリも
少なくディスクも小さかつたから、フレームワークも
RDBもなかったけど、仕様より規約的な考えは汎用機の
世界でもあった。

ステップ数商売(笑)と勘違い野郎のOOP向けコーディングが
やたら複雑怪奇なソースコードを書く癖がついたと
個人的には見ている。
613nobodyさん:2009/07/08(水) 20:34:12 ID:???
さくらの共有SSL使ってる人いる?
どうにもうまくいかないんだが…
614nobodyさん:2009/07/08(水) 21:32:39 ID:???
板違い
615nobodyさん:2009/07/09(木) 09:44:03 ID:???
>>613
ttp://plus-sys.jugem.jp/?eid=162
これでもだめかい?
616nobodyさん:2009/07/09(木) 21:40:19 ID:???
>>615
フォーラム行ったらまさにおなじ質問してる人がいてそのサイトを参考にやりましたって言ってたなぁ。

htaccessの書き方もっと勉強しなきゃダメかー・・・
617nobodyさん:2009/07/10(金) 03:41:10 ID:???
チラシの裏の日記

ふう。決まりだらけのフレームワークがいやになったので、
phpファイル一枚だけの俺俺フレームワークもどき作ったw

やってることは、どのディレクトリ上のどこから実行してもincludeするファイルが
見つからないとかでないように、ディレクトリ構造の基準を作ったことと、
ウェブから実行してもCLIで実行しても同じように引数が取れて
テストしやすくしたことだけ。

phpプログラミングでよくやる、http://www.example.com/aaa/bbb/ccc.php?a=1&b=2
というファイル名、ファイルパス、引数そのままでフレームワークもどきに簡単に移行可能

モデル無し。ビューは勝手にphpファイルでも呼べ。
もしほしくなったらそれがフレームワークを使うときだ。
618nobodyさん:2009/07/10(金) 06:33:03 ID:???
で?
619nobodyさん:2009/07/10(金) 10:12:58 ID:???
>>617
kwsk
620nobodyさん:2009/07/10(金) 10:18:41 ID:yJRQTl0b
とりあえずここはチラ裏ではないのと、
たぶんションベンみたいなフレームなんだろうね
621nobodyさん:2009/07/10(金) 10:52:41 ID:???
てかrails系のスレに来て「お決まりだらけ」がイヤて、
日本語、、、いや思考が大丈夫かって気がするわなぁ
622nobodyさん:2009/07/10(金) 13:02:58 ID:???
>>617
CodeIgniter 使えばいいのに
623nobodyさん:2009/07/10(金) 15:49:27 ID:???
チラシの表

>>619
そのうちのどこかのサイトで公開されるかもしれないソフトで使われるよw
現在は自分で便利に使う用として作成中。

>>620
フレームって略すなw てかフレームワークじゃないし。でも特定のディレクトリ構造の
ファイルを呼び出すから一応フレームワーク扱いになるのかな?

>>622
CodeIgniterでもちぃでもデカイ。たとえば、ただのお問い合わせフォームごときで
あんな複数のファイルからなるフレームワークを入れる気になる?

かといって、お問い合わせフォームでもちゃんとエラーページやら
確認ページを作るとなると、(フレームワーク外のアプリの)ファイルが
複数になって面倒になってくる。テストもちゃんとやらないといけないしね。
(テストするのにブラウザは使いたくない。−>CLIで簡単に実行したい)

ということで、
データベース使わないし、こんなんフレームワーク使うまでも無い
→phpファイル直接呼出しでいいじゃん→意外とファイル増えてきた・・・
→でもやっぱりフレームワーク使うほどでもないんだよなぁ。
というときに、phpファイル直接呼出しから移行しやすい、偽フレームワーク作ったYO!w
624nobodyさん:2009/07/10(金) 15:56:48 ID:???
>>621
> てかrails系のスレに来て「お決まりだらけ」がイヤて、
> 日本語、、、いや思考が大丈夫かって気がするわなぁ

ちなみに私は普段CakePHPを使用していますが、
それを使用するほど大きなプロジェクトではなく、
でも多少手のかかる物の場合に使えるフレームワークがほしい…
そんなときに使えるフレームワークを目指して作成しました。
625nobodyさん:2009/07/10(金) 15:59:57 ID:???
で?
公開すんの?なら早くみして

つーかそもそもスレち
626622:2009/07/10(金) 16:02:01 ID:???
「あんな複数のファイルからなるフレームワークを入れる気になる?」
→なるなぁ。

とくに簡単であればあるほど自分でフレームワークを作るなんで無駄だもの。

しかも、俺様フレームワークの機能が足りなくて追加するのは
すでに CI が持っている機能だろうし。

CI でコマンドラインな PHPUnit も使えるよ。
627nobodyさん:2009/07/10(金) 16:11:12 ID:???
PHP最新動向:"マイクロフレームワーク"/micro framework
ttp://cakephp.seesaa.net/article/123192243.html
628nobodyさん:2009/07/10(金) 16:58:03 ID:???
> Cakeだって最初はマイクロフレームワークだったんですよね・・・。

そうなんだよなw

MVCの考え方とか、テンプレートだとか、規約とかそんなものを
追加していくと結局肥大化するんだよね。
629nobodyさん:2009/07/10(金) 17:07:22 ID:???
>>626
なんか根本的に考え方が違うね。

例えば、phpinfo()を出すだけ程度のプログラムに
フレームワークを使う気になるかい?
630nobodyさん:2009/07/10(金) 17:10:28 ID:???
イミフw
それだとpurePhpでいーし
631nobodyさん:2009/07/10(金) 17:17:37 ID:???
>>629
根本的に考え方が違うのはお前。

まずはフレームワークを公開してみろ。話はそれから。
632nobodyさん:2009/07/10(金) 17:22:52 ID:???
>>629
ユーザごとに表現を変えたり、表示内容を制御したりしたいぞ
633nobodyさん:2009/07/10(金) 17:24:44 ID:???
出す例が phpinfo() かよ
頭おかしいんじゃないか?
634nobodyさん:2009/07/10(金) 17:27:17 ID:???
phpinfo()を使う場面って、
アプリの一部の機能としてのでバックモードか
開発中の確認か・・・・とかだろJK

phpinfo()をコンテンツとして公開したいんなら
>632の言うとおり他にもいろいろつくわけで
何が言いたいの?
635nobodyさん:2009/07/10(金) 17:42:08 ID:???
631 は常人と「根本的に考え方が違う」のです
636nobodyさん:2009/07/10(金) 17:42:59 ID:???
>>629 が phpinfo の時に
自作フレームワークをどう使うか見てみたい
637nobodyさん:2009/07/10(金) 17:45:23 ID:???
>>636
こーひーふいたw
638nobodyさん:2009/07/10(金) 17:46:33 ID:???
>>629
面白くなってきたのでコテハンにしてもらっていいですか。
639nobodyさん:2009/07/10(金) 17:54:17 ID:???
>>636への回答に超期待
640nobodyさん:2009/07/10(金) 18:38:07 ID:???
現在 629 はアニメを見ている最中です。少々お待ちください。
641nobodyさん:2009/07/11(土) 08:05:26 ID:???
つーか、ここはCakeのスレだろ。
自作とかやりたきゃくだすれにでも逝ってくれまいか
642nobodyさん:2009/07/11(土) 13:04:06 ID:???
フレームワークを使わないレベルってあるよね?
phpinfoってのは、その極端な例では?

どういうことをやり始めたらフレームワークを使うべき?
みんなはphpファイル数枚ですむようなことでも
フレームワークを使うの?
643nobodyさん:2009/07/11(土) 13:06:56 ID:???
作り上げた高揚感で舞い上がってるんだろう
FWの自作なんて誰でも一度はやることなのに
644nobodyさん:2009/07/11(土) 13:17:35 ID:???
>>642
phpファイル数枚ですむようなシステムを作る場合でも、本当にゼロから書く人間はいないだろう。
たとえば今まで作ったファイルをコピーしてベースにしたり、似たようなソースを探してきてそれをコピペしたり。
それも広義な意味でフレームワークだろう。結局トータルで見た工数でメリットかあるならフレームワークを
使えば良いし、Cakeが最適ならそれを使えばいい。

俺ならゼロから作るリスクを考えると、たとえリソース数が肥大したとしても何らかのフレームワークを使う。
645nobodyさん:2009/07/12(日) 00:35:00 ID:???
>>643
お前も、俺俺フレームワークを作ったのかw
646nobodyさん:2009/07/12(日) 02:13:26 ID:???
最初の設計では数枚だとしても、仕様ってのは変更するものだからなー
647nobodyさん:2009/07/12(日) 02:41:49 ID:???
【PHP】俺俺フレームワークについて語れ

ってスレ立てようか?
設計方針とかここが自慢とかの話題で楽しそうな気がしないでもない
648nobodyさん:2009/07/12(日) 03:01:33 ID:???
http://book.cakephp.org/ja/
のメニューのリンク切れは何とかならんのかね?
649nobodyさん:2009/07/12(日) 03:10:32 ID:???
>>648
これとかだろ?
ところどころおかしいんだよね・・
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1958&forum=4&post_id=4798#forumpost4798

どこに報告したらいいのやら
650nobodyさん:2009/07/12(日) 11:33:05 ID:???
>>642 とか未だに学者気取りでもの言ってんな。
>>647にスレでも作ってもらえって。

>>1 にな
>CakePHPは、Ruby on Railsの概念の多くを取り入れた、
>Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです。

てスレの趣旨が書いてあるだろ。
651nobodyさん:2009/07/12(日) 12:57:28 ID:???
>>627
で紹介してもらったリンク先を参考にしてちょっと思いついたことがあったんで、あれからさらに修正していたよ。

コンセプトもだいぶ固まってきた。phpファイル単体で実行する古典的なスクリプトから
簡単に移行できるフレームワーク(そんな規模じゃないけど)
他のフレームワークがフルスタックなものばかりなので逆に、出来る限りなにも含めない。

移行する際は、既存のファイルを特定のディレクトリにそのまま入れるだけで動く。
実のところ、ちょっとした便利関数とディレクトリ構造とそのアクセス方法を決めただけに過ぎない。

で、今のところ、コアファイル1つ。.htaccessとindex.php、いくつかのディレクトリ(変更可能)
そしてオプション(無くても良い)で、設定ファイルとコアを拡張するためのファイルそれぞれ一つづつという
コメント入れて非圧縮時で15kbの俺俺フレームワークができた。(ためしにコメント削ったら10kb切った)

本当はフレームワーク作るのが目的じゃなくて、個人的なあるツールを作るのが目的なんで
そっちができたらフレームワーク公開を考えるよ。忘れたころにこっそりとw
652nobodyさん:2009/07/12(日) 13:07:23 ID:???
>>651
スレ違いだと何度言えば気がつくんだこの低能め
653nobodyさん:2009/07/12(日) 13:18:13 ID:???
>>651
なぁ、フレームワークについて語るスレがちゃんとあるんだぜ?
http://pc11.2ch.net/test/read.cgi/php/1237825268/
654nobodyさん:2009/07/12(日) 16:48:33 ID:???
今までいろいろフレームワークを試したり実際使ったりしたけど、
後でまた使おうとか思った時に、バグ放置のまま全然メンテされてなかったり、
フレームワークのプロジェクト自体が無くなってたり
特に個人で作ったようなのはそういうことが多いのね。

cakeがいいと思うのは、使ってる人数が多い分活発であるっていうこと。
自分の覚えた知識や時間をムダにしないためにもこれは重要なポイントだと思うよ。
655nobodyさん:2009/07/12(日) 17:46:57 ID:???
その点俺の作ったやつは、フレームワークじゃないから
コードそのものは普通のphpそのままんまで覚えることは
ほとんど無いから安心だよ。
ソースもわずか400行程度でおわりだしね。
656nobodyさん:2009/07/12(日) 17:52:07 ID:???
>>655
死ね
657nobodyさん:2009/07/12(日) 21:28:48 ID:???
つーかこいつは何を作りたいんだ?

覚えることはない?
それなに?何に役立つの
658nobodyさん:2009/07/12(日) 21:46:38 ID:???
>>655
本当に迷惑だから、もう来るな。
ここはCakePHPの事を話し合うスレだ。
CakePHP以外の話は別のスレでやれ。

659nobodyさん:2009/07/13(月) 00:00:22 ID:???
多分あれだろ、会社でも「つかえねーやつだな」って視線を感じつつ、
でやっとこさ自分でなんか形になるもんが出来て浮き足立ってるだけだろ。
これだからID無し板はダメなんだよ。透明アボーソできないじゃないか。
660nobodyさん:2009/07/13(月) 01:39:20 ID:???
つかSymfonyでもCIでもEthnaでもなくこのスレで管をまいてるあたりにCakeへの憎悪と悪意を感じるよ
しっかり生きろよw
661nobodyさん:2009/07/13(月) 02:28:04 ID:???
みんな嫉妬しすぎw
662nobodyさん:2009/07/13(月) 03:23:51 ID:???
ものによっては嫉妬するけど
公開してないやんw
663nobodyさん:2009/07/13(月) 13:11:15 ID:???
phpinfoコンポーネントが作れません><
664nobodyさん:2009/07/13(月) 17:02:03 ID:???
>>663
CakePHPポケットリファレンス でも買っておきなよ・・
665655:2009/07/13(月) 17:27:08 ID:???
あれから俺のフレームワークを改良して
phpinfo() を出すのに 350 行程度で済むようになりました。
CakePHP はもっとファイル数や行数あるよね?
666nobodyさん:2009/07/13(月) 18:12:55 ID:???
とうとう精神分裂病だな。
>>655 >フレームワークじゃないから
>>665 >俺のフレームワーク
667nobodyさん:2009/07/13(月) 18:14:40 ID:???
どうみても>>665はネタだろ
マジレスすんな
668nobodyさん:2009/07/13(月) 18:38:25 ID:???
俺俺フレームワークだと
3行でいけたよ。
<?
phpinfo();
?>

まぁ完全に出すだけだけど、無駄がない分動作が速い。
cakeだと重いでしょ?俺のはフレームワークじゃないから早いよ。
導入もファイル一枚だから楽チン。

やっぱ俺俺フレームワークすげぇわwww
669668:2009/07/13(月) 18:40:27 ID:???
あれからさらにチューニングして
<?php phpinfo(); ?> の一行で済むようになった。
根本的に考え方が違う俺、最高。
670nobodyさん:2009/07/13(月) 18:43:51 ID:???
はいはいおもしろいおもしろい。


ネタ化したから終了
Cakeの話題どぞ↓
671nobodyさん:2009/07/13(月) 19:42:26 ID:???
スポンジケーキがうまく膨らまないんだよね…。
膨らし粉入れた方が良い?
672nobodyさん:2009/07/13(月) 20:12:37 ID:???
Cake3が公開されたね。先が楽しみだ。
ttp://code.cakephp.org/cake3
673nobodyさん:2009/07/13(月) 20:37:45 ID:???
コアのクラス名にプレフィックス付けてくれないかなー?
PEARとか使うとたまにかぶる・・・
674nobodyさん:2009/07/13(月) 21:12:18 ID:???
>>669
いや、冗談抜きでそれ動くわw
無理して動かすとか言う話じゃなく、
それでいい。

>>673
俺のはつけてるよ。
675nobodyさん:2009/07/13(月) 21:21:00 ID:???
1.1から必死こいて1.2に追いついたと思ったら3ですか
676nobodyさん:2009/07/13(月) 21:21:48 ID:???
俺俺フレームワークだったらたったこれだけ↓超便利w

index.php

<?php
require_once('oreore_framework.php');

oreore_phpinfo();
?>


なぜこれで動くかというと、俺俺フレームワークで便利な関数をいろいろ作ってるから
まぁ全部はまだ公開しないから、該当箇所だけな


oreore_framework.php
<?php
〜〜〜〜省略〜〜〜〜
function oreore_phpinfo() {
 return phpinfo();
}
〜〜〜〜省略〜〜〜〜
?>
677nobodyさん:2009/07/13(月) 21:23:42 ID:???
すごいフレームワークですね
678nobodyさん:2009/07/13(月) 21:24:27 ID:???
ちなみにcake3なんか目じゃない
覚えることはほとんどなくてoreore_をつけるだけw

Cakeは覚えることが多すぎるから、疲れた人にはもってこいだと思う

公開までもうちょっとまちなー
679nobodyさん:2009/07/13(月) 21:26:12 ID:???
公開が待ち遠しいです
680nobodyさん:2009/07/13(月) 21:32:21 ID:???
>>677
何度もいわせんな
フレームワーク“もどき”なw

>>679
もうすこしまちなーw
681nobodyさん:2009/07/13(月) 21:32:30 ID:???
なんだ、cake3はリリースされたわけじゃないのな。
おれも>>675状態だったからびっくりしたわ。
ちゃんと最新動向追っかけてないとだめだな。
682nobodyさん:2009/07/13(月) 21:50:41 ID:???
>>676
マジレスするのすら気が引けるが、phpinfo()の返り値はBooleanな
いきなり動きませんが。つか君、自分が面白い人だと思ってるの?
683nobodyさん:2009/07/13(月) 21:54:59 ID:???
は?動くだろ
CakePHPの使い過ぎで頭固くなったんじゃない?w
684682:2009/07/13(月) 21:55:17 ID:???
あー動くかも。どうでもいいや
685nobodyさん:2009/07/13(月) 22:22:37 ID:???
こんだけ入れ食いなら楽しいだろうな
686nobodyさん:2009/07/14(火) 00:03:08 ID:???
面白いスレだな。
687nobodyさん:2009/07/14(火) 09:57:31 ID:???
というか何のスレかわからなくなってきた
688nobodyさん:2009/07/14(火) 20:53:23 ID:???
なんか俺の偽者ががんばってるw
689682:2009/07/15(水) 06:03:28 ID:???
>>688
おいお前、俺の名前を騙るなよw
690nobodyさん:2009/07/15(水) 09:40:29 ID:???
なるほど。偽者といって反応したのは、
お前なわけだなw
691nobodyさん:2009/07/15(水) 10:30:10 ID:???
何言ってる、本物は俺だ。俺こそがフレームワークだぜ。
692nobodyさん:2009/07/15(水) 10:54:55 ID:???
俺なんて根本君のフレームワークで作られた人工知能だぜ
693nobodyさん:2009/07/15(水) 13:43:03 ID:???
西山君、フレームワーク作っといて。今日中に。
694nobodyさん:2009/07/15(水) 13:46:10 ID:???
急にスルー力ついて吹いたw

もう釣れないからオレオレFW別スレ立てたら?w
695nobodyさん:2009/07/15(水) 14:16:19 ID:???
なにこのホンワカスレw
696nobodyさん:2009/07/15(水) 14:25:58 ID:???
さらに改良中。URLルーティングの所をちょっとまともに作り直そうかな。
今個人的に使っている範囲では、使わない部分なんで簡易なままにして
おいたけど、さらにシンプルな使い方にする方法を思いついたので。
697696:2009/07/15(水) 14:37:58 ID:???
さすがおれ天才wもうできたw
まぁめんどくさくなったから中途半端だけど
とりあえずルーティングとしては問題ないww


oreore_framework.php
<?php
〜〜〜〜省略〜〜〜〜
function routing() {
 return rand(0, 1) ? true : false;
}
〜〜〜〜省略〜〜〜〜
?>
698nobodyさん:2009/07/15(水) 14:51:28 ID:???
>>696
お前がフレームワークのことに精通しているのは十分わかった。

ここの住人がお前を全く必要としていないのはわからんか?
699nobodyさん:2009/07/15(水) 17:11:52 ID:???
だれだよ、この板をID無しで申請した屑はよ。
出て恋やゴルァ(死語)
700nobodyさん:2009/07/15(水) 17:59:59 ID:???
オレオレ詐欺スレだな、こりゃ。
701nobodyさん:2009/07/16(木) 00:54:46 ID:???
ちょっとの時間、おっぱいのことでも考えようぜ
702nobodyさん:2009/07/16(木) 02:28:41 ID:???
別にフレームワークを公開するわけじゃないけど、
やっとこさ、xreaにsubversion+tracの最新版入れ終わったよ。
情報が古かったりでいろいろハマッタ。疲れたよ。
703nobodyさん:2009/07/16(木) 02:32:47 ID:???
ちなみに俺俺フレームワークで作った人工無能はこんな感じ。
ホントにこれだけで動くんだよ。すごくね?

oreore_framework.php
<?php
〜〜〜〜省略〜〜〜〜
function talk($message) {
 $jm = new OreOreJinkouMunou();
 return $jm->answer($message);
}
〜〜〜〜省略〜〜〜〜
?>
704nobodyさん:2009/07/16(木) 13:04:51 ID:???
この一連の流れをオレオレフレームワーク荒らしと名づけよう
705nobodyさん:2009/07/16(木) 14:44:45 ID:???
>>702
subversionってmakeでそのままインスコできるの?
xrea
706nobodyさん:2009/07/16(木) 14:50:54 ID:???
すれち
707nobodyさん:2009/07/16(木) 15:09:10 ID:???
>>705
そのままといえるのかどうか分からないが、
たいていのソフトはコンパイルの一連の作業でconfigureとかに
--prefix=$HOME/local なんてオプションをつけると
システム全体じゃなくて、ログインユーザー専用としてコンパイルしてくれるよ。
インストールディレクトリは全部$HOME/local以下になる。

デーモン系は立ち上げられないんじゃ?と思うのなら、それは問題ない。
subversionのコマンドを実行すると、裏でSSHでログインし、サーバー側で
subversionのコマンドを実行して処理を返す。なんてことをやっているから。
708nobodyさん:2009/07/16(木) 15:16:40 ID:???
俺おれFWにsvn・・・
ほんとお前いい加減にしろや
よそいってやれ
二度とくんな
709nobodyさん:2009/07/16(木) 16:39:05 ID:???
モデルバリエーションの'unique'ルールって
insertの時だけじゃなくてupdateの時もかかっちゃうの?
710nobodyさん:2009/07/16(木) 16:39:38 ID:???
バリデーションだったスマソ
711nobodyさん:2009/07/16(木) 16:44:14 ID:???
いんさーとだけって指定できる
712711:2009/07/16(木) 16:45:43 ID:???
ruleに

'on'=>'update'
とか
'on'=>'create'

かな
713nobodyさん:2009/07/16(木) 17:00:45 ID:???
>>709
updateのときはそのid以外でuniqueかどうかをチェックする
714nobodyさん:2009/07/16(木) 17:05:43 ID:???
>>711-713
ありがとう
自分の意図してたのは>>713みたいなケースだったので
onオプションは今回は使わなくていいみたいだった
715711:2009/07/16(木) 17:07:10 ID:???
あぁunique
すまんちゃんと読めてなかった
716nobodyさん:2009/07/19(日) 14:33:41 ID:???
CakePHPのソースコードの暗号化(もしくは難読化)は可能でしょうか?
Zend GuardとかがPHPだと一般的なようですが、CakePHPでも使用できるのでしょうか?
717nobodyさん:2009/07/21(火) 19:22:57 ID:zqz/ptwz
俺おれの話題でしか上がらないすれage
718nobodyさん:2009/07/21(火) 20:10:36 ID:???
現在の進行状況聞く?

プラグイン機能をつけようと思っている。
もちろん、プラグインは必須ではなく、
コアだけなら1ファイルですむんだけど。
719nobodyさん:2009/07/21(火) 20:15:35 ID:???
バージョン上がってから静かになったね
720nobodyさん:2009/07/21(火) 21:01:21 ID:???
>>716
誰か答えてあげなよ
721nobodyさん:2009/07/21(火) 22:06:05 ID:???
MITライセンスは暗号化しちゃだめなんだと思ってたけど。
どうなんだろ。
722nobodyさん:2009/07/21(火) 22:34:08 ID:qTwJynaf
そもそも >>716 の言っている「CakePHPのソースコード」って、
CakePHP として配布されているコードのことなのか、
CakePHP 上(?)に自分が書いたコードのことなのかどっちだ?
723nobodyさん:2009/07/21(火) 22:46:42 ID:???
app以下の、自分で書いたコードが最低限暗号化されれば良いです。
724nobodyさん:2009/07/22(水) 00:39:20 ID:2l6UTOL5
ていうかその話題はフレームワークに依存することなの?
jsのpackedみたいなののphp版がある(かどうか知らないけど、あると仮定する)と
cakephpフレームワークを利用したappをつくって、それを暗号化すればいいだけだよね?
もちろんcakeに限らずpureなPHPでもZendでもsymfonyだろうが、同じように難読化・暗号化できるんじゃない?

そうじゃなくて、cakeのcore層でなにかしら解読の仕組みが用意されてて、app層に難読化コードを設置することで、
appとcoreをかけ合わせることで初めて実行できるようなものを期待しているの?
だとすると、自分の知る限りではない。
725724:2009/07/22(水) 00:42:35 ID:2l6UTOL5
だめだな質問ちゃんと読まないと
>Zend GuardとかがPHPだと一般的なようですが、CakePHPでも使用できるのでしょうか?
でしたか。
726nobodyさん:2009/07/22(水) 13:56:52 ID:???
>>722
CakePHPとして配布されていて、
誰でも手に入れられるコードを
難読化してどうするよw
727nobodyさん:2009/07/22(水) 14:15:37 ID:2l6UTOL5
Pluginの中においたシェルを起動するのってどーすればよかですか

plugins/plugin_name/vendors/shell/hoge.php
をshellからきどうしてーです。

http://planetcakephp.org/aggregator/items/1846-cakephp%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E5%86%85%E3%81%AE%E3%82%B7%E3%82%A7%E3%83%AB
この方はapp/に移動して使ってるとか書いてるけどpluginに入れたまま使いたいんです。
728nobodyさん:2009/07/22(水) 14:24:03 ID:???
あらディレクトリ名が間違ってた
shell->shells

ここだけが問題だったようで

plugins/plugin_name/vendors/shells/plugin_name_hoge.php

>cake plugin_name_hoge -app /path/to/app
で起動できました。

すんません
729nobodyさん:2009/07/22(水) 23:03:13 ID:???
今占いのプログラム作ってるんですけど例えば 2という結果がでたらその結果をもとに
「あなたは○○」 と結果を出したいのですが、その結果が100ある場合はどこに占い結果をまとめとくべきでしょうか。

・files に csv としておいておいてそれを file_get_contetns でごにょにょ
・MYSQLに保存しとく
・そのファイルにべた書き

以外に良い方法あれば教えて下さい。
730nobodyさん:2009/07/23(木) 00:30:05 ID:???
なんでDBがあかんねや
731nobodyさん:2009/07/23(木) 00:31:22 ID:???
files に csv としておいておいてそれを fget_csv でごにょにょ
732nobodyさん:2009/07/23(木) 00:39:40 ID:???
>>730
10個くらい一気に結果を取得したいから、そうなると 10個の DBを作らないといけなくなります。
なので負荷を軽くしたいのでDBはできるだけ避けたいのです・・・と思いましたが言われて気づきました。
DBでもいけそうなのでそれでやります。ありがとうございました。
733nobodyさん:2009/07/23(木) 00:43:56 ID:???
フレームワーク以前に設計のはなしですな
734nobodyさん:2009/07/23(木) 18:12:20 ID:???
どうしてCakePHPのスレなのに初心者質問スレになってるのか教えてください
735nobodyさん:2009/07/23(木) 18:36:41 ID:???
>>734
ぐぐれかす
736nobodyさん:2009/07/24(金) 00:19:55 ID:???
1.1から1.2になって何倍くらい早くなったの?
感覚的でもいいので教えて下さい
737nobodyさん:2009/07/24(金) 01:35:58 ID:???
そんなに早くなったっけ?
738nobodyさん:2009/07/24(金) 03:15:11 ID:???
>>736
1.1 業務用としては使い物にならないレベル
1.2 業務用としても普通に使えるレベル
739736:2009/07/24(金) 09:29:45 ID:???
そうなんだ。ちょっと試してみるかな。
どもです。
740nobodyさん:2009/07/24(金) 15:11:55 ID:???
1.1は遅くなかったんじゃないの?
1.2になってクソ遅くなって、
すていぶるになってからは落ち着いたって誰かが言ってた。
741nobodyさん:2009/07/24(金) 17:36:55 ID:???
俺もどっかでそう読んだ。
なんにしても、プロダクションモードにしとけば使えるレベルだと個人的には思ってるが
742nobodyさん:2009/07/25(土) 16:12:29 ID:???
javascirptのライブラリなんかで、jsとスキン用のCSSとかパッケージになってるやつとかどうしてます?
Vendorsの中でバラしてjsフォルダとcssフォルダとかに分けると
あとでライブラリのバージョンアップとかの時に面倒ですよね。
743nobodyさん:2009/07/25(土) 16:28:28 ID:???
>>742
バージョン管理ツール使え


Subversion実践入門達人プログラマに学ぶバージョン管理
 サードパーティ製のコード
744nobodyさん:2009/07/25(土) 16:46:58 ID:???
ライブラリの塊に新バージョンが出たときに
それをディレクトリに振り分けるのが面倒臭いといってるんでは?
745nobodyさん:2009/07/25(土) 20:25:31 ID:???
javascriptとCSSで分離できないライブラリなんてあるか?
あるとしたらそのライブラリの設計が問題じゃないかな。
746nobodyさん:2009/07/26(日) 00:22:51 ID:???
SVNの話じゃないんじゃない?
747nobodyさん:2009/07/26(日) 00:48:19 ID:???
例えば
http://sorgalla.com/projects/jcarousel/
こういうのとか、YahooのYUIとかもそうですが、
ダウンロードして解凍したフォルダの中にlib/hoge.jsとか skin/myskin/hoge.css とかなってると、
cakeの$javascript->link( )で持ってきてくれないのね。
jsファイルはvendors/js、CSSはvendors/css に手動で入れなきゃならない・・・ってことなんです。

ググって見たら、dispatcher.phpを改造してYUIに対応させてる方もおりましたんで
これを参考にしてみます。でも本体改造はちょっと気が引ける・・・のと、
その都度改造っていうのもちょっとなー
748742:2009/07/26(日) 00:49:03 ID:???
あ、>>747>>742です。
749nobodyさん:2009/07/26(日) 16:59:20 ID:???
CakePHP使ってるサイト少ないよね
ほとんど趣味の世界なのかな
750nobodyさん:2009/07/26(日) 17:30:30 ID:+LxCHWip
>>749
当たり前だろ。
751nobodyさん:2009/07/26(日) 18:42:34 ID:???
当たり前なのか?
商用では何が使われてるんだよ
752nobodyさん:2009/07/27(月) 05:22:59 ID:???
CakePHP使ってますと公言してもメリットがないから
使ってるサイトが少なそうに見えている、とも考えられる

あと1.2で大分ましになったけど、同じフルスタックとはいえ
導入するメリットがSymphonyに対して見えにくかったというのもある。
簡単だ!みたいな点だけ強調されすぎた。なんかそういうのはもういい。
その点では1.2になって本当に良くなった。敷居は上がったかもしれんが
753nobodyさん:2009/07/27(月) 07:16:36 ID:???
>>752
同意。俺、商用サイトしか作らないけどここ2年近くは全てcakephpを元に作ってる。
わざわざcakephpで作ってますとは書かないね。
754nobodyさん:2009/07/27(月) 12:24:15 ID:???
制作事例を公表するというのは、セキュリティ的には、システムの脆弱性をさらすようなものだから、
よっぽど強固な作りになっていない限り、制作事例は公表しないというのが面倒が無くて良い気がする。

オレは、仕事でCakePHPを組込んでいるよ。どれか教えないけどね
755nobodyさん:2009/07/27(月) 14:03:54 ID:???
>>753
そらパクってるからな笑
756nobodyさん:2009/07/27(月) 17:53:25 ID:???
説明とOKボタンだけのダイアログを、フォームのボタンを押した時に表示するようにしたいんですが
実装は可能でしょうか?
方法があれば教えていただきたいです

マニュアルの11.1.11を参考にしていますが、これだと「Delete」の文字列のリンクでダイアログが出てくることと、
OK,キャンセル二つのボタンが出て、実装したいものと少々違います。
# <?php echo $html->link('Delete', "/posts/delete/{$post['Post']['id']}", null, 'Are you sure?' )?>
757nobodyさん:2009/07/27(月) 18:18:19 ID:???
>>756
普通にjavascriptを書く

javascriptヘルパーを使うならcodeBlock()でheadに書き出せる
758nobodyさん:2009/07/27(月) 18:49:42 ID:???
要するにキャンセルがあるからダメなの?

だったら自前でダイアログ(っぽいもの)を吐き出す必要があるのでは?
759nobodyさん:2009/07/27(月) 20:51:40 ID:???
MySQL上にViewを定義します。
CakePHP側でこのViewのモデルを定義し、findAll等でデータを取得するとなぜか
配列にはViewがテーブル別に分割されて取得されます。
あくまでViewの配列に一括で入ってくることを期待しているのですが・・・
760nobodyさん:2009/07/27(月) 21:02:26 ID:???
何言ってんの?
ちゃんと他人が理解できるよう質問しろバカ
761nobodyさん:2009/07/27(月) 21:54:17 ID:???
mysql view のことじゃね?
cakeで扱えるのかは知らん
762nobodyさん:2009/07/27(月) 23:29:47 ID:???
>>759
ためしてないけど、ビューのデフォルトのフィールド名が問題な気がする。
フィールド名が、TABLE1.field、TABLE2.field、なんてなっていると、
TABLE1とTABLE2に分かれるんじゃなかったっけ?
763nobodyさん:2009/07/28(火) 12:38:13 ID:qCVItZ1Y
ページにFlash素材を複数配置しているんですが、
Flashデータだけブラウザにキャッシュする方法が
あれば教えていただけますか。

配置順は変わったりするので、ページをキャッシュしてしまうとまずいです。
cacheヘルパーのキャッシュはViewをキャッシュするようなので
少し用途が違うようですが、いかがでしょうか。
764nobodyさん:2009/07/28(火) 12:40:25 ID:???
勝手にキャッシュされんだろ
スレチ
765nobodyさん:2009/07/28(火) 19:36:17 ID:28CkmgXW
最近cakephpを使って開発を始めたんですが、少し気になる事があったので質問させてください。
データのCSVの保存とかは、ドキュメントを見た感じモデルに書くべきって書いてあったからいいんですが、
データの計算や、加工等などはどこでやるべきなのでしょうか?
MVCの概念からいくとモデルになるのでしょうが、Cakeの場合モデルはDB操作や、
データの保存等に使用のみ(?)と書いてあったのでどこに書くべきか迷っています。

すみません、ご教授お願いします。
766nobodyさん:2009/07/28(火) 19:45:58 ID:???
コントローラに書くとそのコントローラからしか呼び出せない(正確にはにくい)
モデルだと、そのモデルを使うコントローラすべてから使える
データに密接な加工はモデルに書くべきでしょ

ttp://www.sooey.com/journal/2008/03/26/717/

ていうかすごく根本的なことだと思うが・・・
767nobodyさん:2009/07/28(火) 20:05:06 ID:28CkmgXW
>>766
ありがとうございます。
URL先の記事非常に参考になりました。
768nobodyさん:2009/07/29(水) 09:33:21 ID:???
ログイン認証で質問です。
Authコンポーネントが用意されていますが、独自で実装するよりこれを使ったほうがいいですか?
ユーザーの権限によって処理を振り分けたりということをしたいのですが、Authコンポーネントを
使っても柔軟に対応できるものですか?
769nobodyさん:2009/07/29(水) 09:49:33 ID:???
モデルAのひとつのフィールドには配列をserializeしたデータが入っており、取り出すときに必ずunserializeしたいのですが、
AのafterFind内でunserializeすると、Aを直接findで取得した場合はいいのですが、
関連モデルBから引っ張ってきた場合にはAのafterFindは呼ばれないようです。
Aのデータ展開時に確実にunserializeするにはどうすればいいのでしょうか?
770nobodyさん:2009/07/29(水) 10:28:26 ID:???
>>768
Auth+ACL

>>769
俺もそれでよく躓く
そういう仕様らしくてどうしようもないのかも。
どうしてもやりたい時はビヘイビアでやるけどこれも一筋縄ではいかない
他の方の回答を期待したい
771nobodyさん:2009/07/29(水) 10:44:41 ID:???
772nobodyさん:2009/07/29(水) 14:20:19 ID:???
モデルの意味を勘違いしている人が多いよね。
データに関わるものであれば、モデルでビジネスロジックを書いてもいいのに。
773nobodyさん:2009/07/29(水) 14:56:14 ID:???
cakeでbulkinsertって出来ないの?
774nobodyさん:2009/07/29(水) 15:09:17 ID:???
>>771

769ではないけど
その機能はしってるけど、そうじゃなくて以下のような時にどう実装すればいいんだろ


モデルがUserとPostの2つあって
Post BelongsTo Userのとき

User.ipにはip2longしたIPアドレスを持っていて
UserモデルにはafterFindでIPアドレスをlong2ipで復元するように書いてある
なのでUser->find等したときは意識せずとも勝手に変換されたIPを取得できる。

この時に
Postモデルから芋づるでUserも引っ張ると、UserのafterFindを通らない。
775nobodyさん:2009/07/29(水) 16:08:07 ID:???
なんでだろ。俺も似たように使ってるけど、
Postから引っ張ってもUserのafterFindは通ってるよ。
afterFind に debug(); を置いても何も出ない?
776774:2009/07/29(水) 16:15:45 ID:???
え!マジ?
記憶があいまいなので確かこんな感じと書いてみたんだけど違ってたのかな?

Post->User->find()
ではなくて

recursiveセットした上での
Post->find()
のことなんだけど

ほんとにUserのafterFind通る??
777nobodyさん:2009/07/29(水) 16:23:51 ID:???
まずは>>775のいうようにdebug()おいて確認するべし。

過去の経験からいくと、通らないことはない。
778nobodyさん:2009/07/29(水) 21:41:16 ID:???
>>771のエントリを読むと、芋づる方じゃなくて芋づられる方のデータを対象に出来るって書いてあるね
ためしてないが
779nobodyさん:2009/07/29(水) 23:42:38 ID:???
>>778
うんどっちでも来るはずよ。どっちから呼ばれたかを判定するための$primaryだから。
ただ、if($primary === false) { ---- }
てやらないとちゃんと判定してくれなかったかも。
780769:2009/07/30(木) 01:41:34 ID:???
769書いた後12時間爆睡してしまいました。


アソシエーションがA HABTM B なんで>>774とは微妙に違うんですが、
今やってみると…両方とも思いっきりafterFind通っていました。なんでだろう。
ちょっと気持ち悪いけどとりあえず解決下っぽいです。
ありがとうございました。
781nobodyさん:2009/07/30(木) 05:31:06 ID:???
夜型か地球の裏側住まい乙
782nobodyさん:2009/07/30(木) 08:20:25 ID:???
ブラジル人乙。
783nobodyさん:2009/07/30(木) 09:14:34 ID:???
>>769
あぁ。これ一回一回やってたけど afterFind でできるのか。
これって save() する時に serialize やってくれるようにできないかな。
784nobodyさん:2009/07/30(木) 09:45:07 ID:???
>>783
http://book.cakephp.org/ja/view/683/beforeSave
「このコールバックは、データが保存される前にそのデータを加工する場合、特に便利です」
785nobodyさん:2009/07/30(木) 12:29:51 ID:???
786783:2009/07/30(木) 13:58:02 ID:???
>>784
さんくす。モデルって関連づけとバリデーションくらいしか触ってなかた。
787nobodyさん:2009/07/30(木) 18:03:42 ID:???
やべえ今更>>766
ttp://www.sooey.com/journal/2008/03/26/717/
みて、自分のコードのcontrollerの冗長さに泣けた
788nobodyさん:2009/07/30(木) 19:40:02 ID:???
CakePHPというか、アメリカ圏というべきかな。では
ドメインモデルの設計が主流みたいなんだよね。
それに対して日本はトランザクションスクリプトが多い感じ。
(低レベル日本じゃこの考え方自体があまり知られていない感じもするけどw)

なので、ドメインモデルとして使えばCakePHPは複雑なこともかなりやれるけど、
トランザクションスクリプトでやろうとすると、なんでこんなことがやりにくいの?ってなってしまう。

データを加工して表示するのはビュー。処理はモデル。
コントローラはモデルに処理を依頼して、ビューにデータを渡すだけ。
こういう設計にするのが一番じゃないかな。
789774:2009/07/30(木) 19:48:14 ID:???
>>766のURLはテンプレにいれてもいいんじゃないかな
この概念を知らないでCakeいじってた頃は今思うと悲惨だった
790774:2009/07/30(木) 19:51:50 ID:???
afterFindの件、今やると確かに通ってる
バージョンアップで変わったのか勘違いかどっちかです。
時間できたらテストしてみます

おさーがせしました
791nobodyさん:2009/07/30(木) 21:07:46 ID:???
>>790
たしか、バージョンアップで変わったが正解だと思う。

俺も昔、それ関係でソースを呼んでいたのだが、
ひもづるで呼んだときは通らなくて、
まあ、SQLの仕組み上JOINして持ってくるだろうから
難しい話だと思ったのでそいういう仕様かなぁと思っていた。

たぶん今俺が使って実稼動しているシステム。
新しいCakeでは動かないだろうな・・・
ちゃんとテストしているからすぐ修正できるとは思うが。
792nobodyさん:2009/07/30(木) 21:53:52 ID:???
今回の件と関係あるかわからないけど
アソシエーション先のbehaviorのafterFindは呼ばれなかった気がする。

あとは、primaryで呼ばれたときと、hasManyで呼ばれたときと、
HABTMで呼ばれたときの配列の構造がそれぞれ違うので
そのあたりの対策をちゃんとしないといけないと思う。
この辺のアソシエーション周りの統一感のなさが設計ミスとしか思えない…
793nobodyさん:2009/07/31(金) 09:54:03 ID:???
>>789
もう入ってるんですけど>>3
794nobodyさん:2009/07/31(金) 11:24:13 ID:???
変わりに言っておこう。



穴があったら入りたい。
795nobodyさん:2009/07/31(金) 12:24:36 ID:???
お前らレベル高いな

ココも勉強になるわ
796nobodyさん:2009/07/31(金) 17:54:51 ID:???
Commentsテーブルと、複数コメントを持つUsersテーブルがあって
/models/user.php内に
var $hasMany = 'Comment'; を記述する。

users_controller.phpのコントローラー内で
Commentの作成日がXX日までの物を検索し、ページネート表示としたいのですが
どのようにConditionを記述するのでしょうか

$tempにXX日の文字列を入れ、
$condition = array('Comment.created <' => $temp);
$conditions = array('AND'=>array($condition));
$result = $this->paginate('User', $conditions);
このような記述をしたところ

Warning (512): SQL Error: 1054: Unknown column 'Comment.created' in 'where clause'
という警告がでてきてしまいました。
797nobodyさん:2009/07/31(金) 18:16:31 ID:???
>>796
$this-User->recursive = 0;
じゃなかったかな?

SQL見たらjoinされてないでしょ
798nobodyさん:2009/07/31(金) 18:17:21 ID:???
>>797
typo
$this->User->recursive = 0;
799nobodyさん:2009/07/31(金) 18:37:33 ID:???
>>766みたいな方法でも良いと思うが、
メゾット毎に役割を決めた方がメンテナンス性が上がるような気がする。
800789:2009/07/31(金) 18:58:02 ID:???
おーテンプレはいってましたか
えらいすんまへんでした
801nobodyさん:2009/07/31(金) 20:01:55 ID:???
メゾットよりリゾットが食いたい
802796:2009/07/31(金) 20:07:20 ID:???
>>797
joinされてない!
ありがとうございました
803nobodyさん:2009/08/01(土) 07:33:40 ID:???
>>799
>メゾット毎に役割を決めた方がメンテナンス性が上がる

こういうのだるくね?重複するコードは、あちこちに書き散らすの?
766の書き方がノーマルで見通しいいと思うがなあ。
804nobodyさん:2009/08/01(土) 08:32:39 ID:???
>>803
重複するコードはprivateにして、selfで呼び出すとか、
ビヘイビアを使えば良いんじゃない?
個人的には766の書き方がスマートで好き。
でも、複数人で作業するならメゾットを分けた方が良いこともあるのかも。
805nobodyさん:2009/08/01(土) 08:39:20 ID:???
メゾットよりリゾートに行きたい
806nobodyさん:2009/08/01(土) 08:40:31 ID:???
メゾットよりメゾネットの方が好きだな
807nobodyさん:2009/08/01(土) 09:00:12 ID:???
リゾットうまい。
808nobodyさん:2009/08/01(土) 09:30:14 ID:???
809nobodyさん:2009/08/01(土) 16:56:15 ID:???
メソッドでした。すみません。
810nobodyさん:2009/08/02(日) 01:09:48 ID:???
みんな、楽しいやつらだなぁw
811nobodyさん:2009/08/03(月) 12:36:51 ID:???
夏休みだから湧いているの?

じゃあオレも...

「あつは、なついねぇ〜」
812nobodyさん:2009/08/03(月) 14:54:24 ID:???
>>802
796のどうやったら解決できたか、まだいたら聞きたい
hasManyのSQLでのJOIN方法はrecursivre??

例を借りて
検索フォームとかに「XX日以降」みたいに入力されると
XX以降にコメントのついたUserを表示したいんだけども
users_controler内で条件にComment.created とか Comment.modified とか、使おうとすると
まさに同じようなエラーでるw
なんであっさり解決できたんだ…
813nobodyさん:2009/08/03(月) 15:00:14 ID:???
ヒント:頭の出来
814nobodyさん:2009/08/03(月) 15:16:17 ID:???
hasandbelongstomanyの時なんかもっと頭の中ぐちゃぐちゃになるぞ。
815nobodyさん:2009/08/03(月) 17:04:26 ID:???
出来が悪いのは重々承知で、ヒントになりそうな情報・サイトは無いでしょうか
recursivreで調べてみたけども1にしてもダメそうだし

一端Commentを条件で検索して、条件にあったuser_idでUserを〜とかやらないとダメ?
816nobodyさん:2009/08/03(月) 17:12:01 ID:???
知らんけどぐぐっていっちゃん上のリンクたどってみたけど
これでええか?

ttp://d.hatena.ne.jp/nori0620/20080510/1210418348
817nobodyさん:2009/08/03(月) 17:40:32 ID:???
>>815
>>812だけじゃどんな内容なのか分かりづらい
まったく同じエラーが出てるのかな?
Unknown column ... where clause と出たらおそらく適切にjoinされていないのだろうというのが>>797
もしjoinできていないなら、アソシエーションはどうなってる?
検索はpaginate?find?findならallなのかlistなのか、とか

createdやmodifiedで検索できないということはないはずだから、それ以外の情報をおくれ
818nobodyさん:2009/08/03(月) 18:31:30 ID:???
一度に検索までもっていこうとしたのが(頭のレベル的に)ダメだったっぽい
816の所を読んで、まずJOINできているのを確認して
それから検索条件を指定して・・・で出来ました
色々失礼いたしました
と、ありがとうございました
819nobodyさん:2009/08/03(月) 18:36:31 ID:???
超悲観的w
がんばれ
820nobodyさん:2009/08/03(月) 20:01:30 ID:???
husbandbelongstomarryってなに?
821nobodyさん:2009/08/03(月) 20:06:20 ID:???
Soft Deletable Behavior って A→B と関連付けして B を SoftDeletable した時に
A->find() すると B が論理削除されるのにヒットする。
条件付ければ済む話だけどスマートにいかんもんかね。

822nobodyさん:2009/08/04(火) 06:35:48 ID:???
モデルバリデーションのmaxLength,minLength,betweenってmulti-byteじゃないのか
まーしゃーねーか拡張簡単だし
823nobodyさん:2009/08/04(火) 07:35:09 ID:???
自分で作れ
824nobodyさん:2009/08/04(火) 08:27:59 ID:???
うん自分で作った。すぐできた
825nobodyさん:2009/08/04(火) 09:59:34 ID:???
すぐできた(笑)
826nobodyさん:2009/08/04(火) 10:56:30 ID:???
Release: 1.2.4.8284 Stable & 1.3-dev
827nobodyさん:2009/08/04(火) 11:10:06 ID:???
こうやって CakePHP ユーザの多くが各地で車輪の再発名をしているんだろうなぁ
828nobodyさん:2009/08/04(火) 11:54:45 ID:???
既存のデータベース(Oracle)のマスタ更新画面をCakeで作ってみたのですが、
これらのテーブル内では 作成日->RDATE、更新日->UDATE というカラム名になっていて、
Cake の規約に沿って自動的に日付を更新することができません。

日付の更新処理を自前で書けばいいだけですが、せっかくのフレームワークなので、
標準で持っている機能をそのまま使えるような方法はないものでしょうか?
(UDATE as modified とか書ければ簡単なんですが…)
829nobodyさん:2009/08/04(火) 12:24:47 ID:???
作成日は created
更新日は modified
にするのがルールだよね!
でも、このルール変更できたような気が...
830nobodyさん:2009/08/04(火) 12:35:01 ID:???
たしか array('created', 'updated', 'modified')
ってcoreとかにベタ書きされてた気がするから無理じゃね?
831828:2009/08/04(火) 12:37:54 ID:???
>829
ソース読んでみたんですが、更新日のカラム名は決め打ちみたいです。
改造するのもアリなんですけど、もっといい方法がある気がしまして…。
832830:2009/08/04(火) 12:42:16 ID:???
ビヘイビアで

setup時に
UDATE⇒modified
RDATE⇒created

beforeFind
beforeSaveで逆

とかやればできそうなきもしないでもない。
ていうかできるなら既にどっかの外人が作ってそうですね
833nobodyさん:2009/08/04(火) 12:47:13 ID:???
普通の方法じゃ変更できないYO
834nobodyさん:2009/08/04(火) 14:46:54 ID:???
規約を守れー。
835828:2009/08/04(火) 14:54:25 ID:???
Oracleのテーブルを調べたところ、作成日(RDATE)に関してはデフォルトでSYSDATEが送られていましたので、
更新日(UDATE)だけ処理すればいいということがわかりました。

結局、安直ながら以下の1行をビュー(edit.ctp)に書いて思惑通りの動作になりました。

echo $form->input('udate',array("type"=>"hidden","value"=>"sysdate"));

ご意見を頂きました皆様(殊に830様)、ありがとうございました。
836nobodyさん:2009/08/04(火) 15:40:55 ID:???
バージョンアップきたけど、何か大きく変わったところあるのかな?
例のページネーションのソートのバグとかかな?
837nobodyさん:2009/08/04(火) 20:09:01 ID:???
1.2からpluginをbakeできるってことなんだけど、どうやってもこけるorz

モデルの生成は以下で問題なくできる
>cake bake plugin model

んでも、そのあとコントローラ作ろうと
>cake bake plugin controller
のあと対話に答えていって、最後にいざbake!って感じのところでこける
>Error: You must have a model for this class to build scaffold methods. Please try again.

なんでですの???
838nobodyさん:2009/08/04(火) 20:26:44 ID:???
OpenIDコンポーネント使って、OpenID対応試しています。

OpenIDのサイトに移動する直前に、真っ白な画面が一瞬表示されて、
Javascriptで自動的に隠しフォームが送信されてリダイレクトされますが、
あの画面はデザインできないんでしょうか?

CakePHP限定の話題じゃなくてすみません;
839nobodyさん:2009/08/04(火) 22:13:47 ID:???
>>837
-appでアプリケーションの場所を指定してやってもダメすか?
840nobodyさん:2009/08/04(火) 22:16:42 ID:???
>>839
どもです。
-appでappまでのパスは指定はしてます。

そちらではpluginのbakeできてますか?
841nobodyさん:2009/08/04(火) 23:06:36 ID:???
>>840
対話式っつうのはやったことないけど、
「cake bake plugin プラグイン名」 でプラグインの骨格ができて、
「cake bake plugin プラグイン名 controller コントローラー名」
「cake bake plugin プラグイン名 model モデル名」で
プラグインの中にコントローラやモデルができるよ。
842nobodyさん:2009/08/05(水) 00:30:48 ID:???
cake bake plugin プラグイン名 controller
でやると、DBのテーブル読み込んでくれて、どれのコントローラー作る?って聞かれるんですね
んで、指定して進めるとエラーになりまして。。。。

cake bake plugin プラグイン名 controller コントローラー名ってのやってみます。
843nobodyさん:2009/08/05(水) 00:43:51 ID:???
cake bake plugin プラグイン名 controller コントローラー名
だと失敗しないですね。

でも出来上がるのscaffoldなんですね。
いつもscaffoldはnにしてbasic class methodでbakeするんですが。
scaffoldの存在意義がわからないもので。。。

んー、もすこし調べてみます
844nobodyさん:2009/08/05(水) 11:27:29 ID:???
MySQL テーブルのプライマリキーとなる ID の代わりに日本語のキーを作成して、
それを cakePHP で認識させることはできるでしょうか?
845nobodyさん:2009/08/05(水) 15:45:57 ID:???
>>836
kwsk

5.3に対応したとかじゃないのかな。
何で誰も今回のバージョンアップについて書いてないんだろう。
846nobodyさん:2009/08/05(水) 19:46:49 ID:???
>>836
そのバグは5月の段階で直っているはず。
847nobodyさん:2009/08/05(水) 19:54:23 ID:???
バグじゃないけど
cakeのページャー使うと
limit:100とか入れられたら
勝手にリミット書き換えるのやめて欲しいよね。
こっちで手動で設定してる値あるならそっちを優先して欲しいんですけど。
848nobodyさん:2009/08/05(水) 19:58:46 ID:???
コントローラーでそう書けばおk
まぁいいたいことはわかるけど
849nobodyさん:2009/08/05(水) 22:56:40 ID:???
フォーラムで「CakePHPでサイト作りました」って報告する人がいるけど、あれ何なんだろう。
開発中の小話なんかを一緒に書いてくれてれば参考になるから嬉しいんだけど、
あれじゃただの宣伝にしか見えない。
850nobodyさん:2009/08/05(水) 23:01:14 ID:???
宣伝でしょ
851nobodyさん:2009/08/05(水) 23:40:06 ID:???
Cake 1.3からPHP4用のコードを削ったのがCake 2っていう理解で合ってる?
1.2が出てから急に大きく動き出したので、嬉しいやら戸惑うやら…。
852nobodyさん:2009/08/06(木) 10:16:22 ID:???
>>851
CakePHP1.3.x は、すでにPHP4切り捨て。CakePHP1.2の資産はほぼ活用できる方向

Cake3 は、ゼロからコード書き直しのいわば次モデル。PHP5.3 & 6 対応(だったはず)
恐らく別物に近くなるのでは?詳細不明だけど、実用できるのは当分先じゃね?
853nobodyさん:2009/08/06(木) 10:46:15 ID:???
>>849
プレスリリース出せばいいのにね。
854nobodyさん:2009/08/06(木) 10:47:38 ID:???
GETで名前付きパラメータで値を渡すとき、値に「/」とか「%」とかが混じってると
コントローラまで処理が行われません。

回避手段として、取得側でこれらの文字をなんらかに置換して、受け取り側でも
変換するというのが常套手段なんでしょうか?
855nobodyさん:2009/08/06(木) 11:00:16 ID:???
urlencodeしたらいいじゃん。
って言うのは的はずれなんですかね。
856nobodyさん:2009/08/06(木) 11:05:57 ID:???
>>855
すみません、書き忘れてました。
当然urlencodeはしてます。
で、URLに%25とか%2Fが含まれるとアウトになってしまうと。
857nobodyさん:2009/08/06(木) 11:20:40 ID:???
それあぱっちの所為だったきがする
ソースさがしてくる
858857:2009/08/06(木) 11:28:01 ID:???
ごめん今時間ないんで失念しちゃって。。
とにかく/をURLエンコードしてパラメータとして渡した場合、
なぜかapatcheだかmod_rewriteだかURLデコードして・・みたいな不具合だった
どう解決したか忘れたけど、ちょっとこの辺で調べてみて。

あとでまた調べてみる
859nobodyさん:2009/08/06(木) 11:38:15 ID:???
PHP4環境で、ビヘイビアの中でモデルのリファレンス使って、findByってできませんよね?
Overloadable::__call()を呼んでくれない。

findByは良いのだけど、別ビヘイビアのメソッドを呼びたい時はどうすればいいんでしょうか?
$model->call__(メソッド名, 引数配列);で無理やりやるしかないのでしょうか?
860nobodyさん:2009/08/06(木) 12:51:46 ID:???
>>853
プレスリリースってどうやるの?
861nobodyさん:2009/08/06(木) 13:01:25 ID:???
>>858
ありがとうございます。

実はざっと検索はしていたのですが、
http://kuroutoshikou.blog16.jp/index.php?cat=10
ここの2009/03/04の記事以外に適当なものが見つからず、ここに質問させていただいた次第です。
こちらのサイトでは対処として置換する方法を取っていました。

いろいろ考えたのですが、独自規則で変換するのもあとあと面倒になる可能性があるので
「パラメータはbin2hexで16進文字列変換して渡す」
というルールで考えてみたいと思います。
これなら0-F以外の文字が渡されることは通常無いですし、チェックも比較的簡単かと。

ほかにいい案がありましたら皆様教えてください。
862nobodyさん:2009/08/06(木) 13:14:53 ID:???
>>861
$pattern = '/\/'.$paramname.'\:([^\/]+)(\/*)/i';
$mnum = preg_match($pattern,$_SERVER['REQUEST_URI'],$encoded_get_vars);
ごにょごにょ
とか
試してないが
863nobodyさん:2009/08/06(木) 16:39:36 ID:???
Cake3はcakeディレクトリの構造からして変わってたし見慣れないファイルがたくさんだったしでワクワクした
864nobodyさん:2009/08/06(木) 17:25:17 ID:???
>>860
ぐぐると沢山でてくるよ。
865852:2009/08/07(金) 18:39:40 ID:???
>>851-852
ごめん。嘘書いた。PHP4切り捨ては、CakePHP2からだた。
866nobodyさん:2009/08/08(土) 17:54:59 ID:???
cakeってもっと早くならないの?
ヘルパー系がすごい重いんだけど。
867nobodyさん:2009/08/08(土) 20:37:34 ID:???
>>866
そんなに気になるならそこだけ自作してみる
868nobodyさん:2009/08/10(月) 12:47:28 ID:???
>>866

鯖環境によるのでは?
オレのところだと、ローカル鯖だと重いけど、公開鯖だとそんなに遅くないけど...
869nobodyさん:2009/08/10(月) 14:22:16 ID:???
まさかdebugオンで遅いとか言ってないよね?
870nobodyさん:2009/08/10(月) 15:09:54 ID:???
>>867
それが出来ればそうしたいです。

>>868
ローカルで実行速度チェックするのが楽なのでローカルでの
実行速度を基準にして遅いと思うんです。

>>869
デバッグ0にしたらApp::importとかがなくなって
150msが80msくらいになるんですけど

View->_renderで60msくらいかかっててこの辺が何とかならないのかなと思った次第です。
871nobodyさん:2009/08/10(月) 18:51:20 ID:???
正直自分が何とかしない、または出来ない部分を気にしてもしょうがないと思うが。
具体的なボトルネックを探してチケット投げるとか、自分で直す意外にコアあたりはどうしようもないんじゃないのかな。

具体的なヘルパーが駄目なら直すなりチケット投げればいいんじゃないのかな。
872nobodyさん:2009/08/11(火) 12:14:39 ID:???
たしか、公式サイトのパフォーマンスの改善に関する事項で
「ヘルパーの利用を控える」とかいうのを昔読んだ事あるw

重いと思えるなら、ヘルパーの利用控える
後、php.iniで使用メモリーの上限を上げる

でも、殆ど効果ないかも...
873nobodyさん:2009/08/11(火) 13:00:41 ID:???
たしかにヘルパーは高機能すぎたり、php4に対応してたりで自分でコンパクトなの作るのもありっちゃありかも?
速度にこだわるならだけど。

今のところ、前に比べりゃ早いしそこまで困ってないけど。
874nobodyさん:2009/08/12(水) 00:43:19 ID:???
cake1.2使ってるが、トランザクション機能は標準装備じゃないのかよ・・・。
saveAll()も微妙だし。
なんでbegin()だのを自分でapp_model.phpに追加せねばならんのだろうな。
ttp://www.ryuzee.com/contents/blog/1159

それともアレか、cake使いってMyISAMしか使わないのか。
875nobodyさん:2009/08/12(水) 04:28:02 ID:???
やっとsaveallが出来たぐらいだし、その辺はこれから期待なのかねぇ
876nobodyさん:2009/08/12(水) 12:08:46 ID:???
>>874
アソシエーション組んでたらたまにロールバックしたりするよ。
877nobodyさん:2009/08/13(木) 00:05:30 ID:???
>>876
それはあんまりうれしくないサプライズだなあ

cake 「たまに消すよ!機転がきくよ!」
878nobodyさん:2009/08/13(木) 01:05:53 ID:???
質問です。

名簿のようなものを作っているのですが、一人のユーザーが複数のアドレスを持つので
アドレスフィールドを別モデルにしました。(User hasMany Address)

Userの編集画面のビューで

$cnt = count($user['Address'])+1;
for ($i=0; $i<=$cnt; $i++) {
 echo $html->input("Address.$i.address");
 echo $html->input("Address.$i.id", array('type'=>'hidden'));
}

こんな感じでAddressの数にあわせて複数のテキストフィールドが表示され、$User->saveAllで更新もできています。
問題はAddressを減らしたい時なのですが、テキストフィールドを空にしても当然空になるだけでレコードは残ります。
HABTMだと削除も勝手にやってくれますよね。(一旦全部削除→全部追加となるようですが)
HasManyの関連レコードも一緒に編集というのは結構よくあるパターンに思えますが、なにか常套手段的なものはあるんでしょうか?
書籍数冊&ググったんですが、追加・保存する例しか探す事ができませんでした。
879nobodyさん:2009/08/13(木) 01:46:08 ID:???
>>878
説明するのが手間だから、Addressでbakeして。
deleteアクションとか見れ

要は一通りbakeすればやり方分かるよって事です
880nobodyさん:2009/08/13(木) 04:38:49 ID:???
>>879
>>878に便乗して横から質問ですが、
deleteアクションを使うという事は、関連モデル(この場合はAddress)の方で
どのレコードが空になったか突き合わせて見れ!ってことですか?
または一旦Userに紐づいた関連Addressを全消ししてから保存せい!ってこと?
$User->saveで出来ないかな、というかそっちでやるべきじゃないかな
横からちんぷんかんぷんなレスすいません。出直して来ます
881nobodyさん:2009/08/13(木) 05:06:00 ID:???
フォームヘルパー使うとディフォルトで

value="5" とか数字になるよね?
普通DBに数字で保存しとくものなの?

今まで りんご,みかん って保存してたんだけど。
0,1 で保存して 他の DBテーブル読み込んで結合させるってのが一般的なのかな。

これだと りんご を探したいとき りんご で検索できないでしょ。 0,1 だと 0のもの探したいのに
10 とかもひっかかってくるだろうし。
882nobodyさん:2009/08/13(木) 07:41:17 ID:???
>>881
お前は何を言っているんだ
883nobodyさん:2009/08/13(木) 08:08:34 ID:???
>>881
うわー早朝からすごい大物をみてしまった
Cakeとか以前にDB勉強してきて。お願いします 
884nobodyさん:2009/08/13(木) 09:50:24 ID:???
>>878
普通に考えると、deleteとeditのフォームは別になるんじゃまいか?
editのフォームでテキストフィールドを空にして削除させようとするのであれば、そういう処理をコントローラーに書くしかないよねえ
削除チェックボックス用意するとかすれば簡単そう
885878:2009/08/13(木) 10:47:03 ID:???
最初の説明が拙くてすみません。
>>880がズバリ頭の中にあった疑問そのままです。補足していただいてありがとうございます。

さて、プロフィールの一項目だけ別フォームでedit/deleteっていう仕様はちょっと抵抗があるので、Usersのeditフォームのみで何とかしたいです。
そうするとやっぱりAddressの値ないしは削除チェックボックスをみて削除する処理を自前で用意するしかないみたいですね。

とりあえず、下記の処理をUser->saveAll()の前にいれて希望の動作ができました。

if (isset($this->data['Address'])):
 $item_to_delete = array();
 foreach ($this->data['Address'] as $key=>$value):
  if (trim($value['address']) == '') {
   if ($value['id'])
    $item_to_delete[] = $value['id'];
   unset($this->data['Address'][$key]);
  }
 endforeach;
 if (!empty($item_to_delete))
  $this->User->Address->deleteAll(array('id'=>$item_to_delete));
endif;

これって本当はモデル内(User->beforeSaveとか)でやるべきなんですかね?

要は複数入力ができるフィールドがほしいだけだったんですけど、まったくサンプルが見つからなかったってことは、
こういうケースってあんまりないんでしょうか?
886884:2009/08/13(木) 10:55:33 ID:???
>>880
どのレコードが空になったかは、data[Address][n][address]の n に入ってるわな
HABTMのように全部消す必要はないよ

っと思ったら、>>878の例が思ってるのと違うなあ
ViewでAddressを出すとき
echo $form->input('Address.address');
じゃなかったっけ?
$addressesで

っと、リロードしたら>>885が来てた
887884:2009/08/13(木) 11:01:09 ID:???
>>885
そんな感じだと思う

でも deleteAll は使わないほうが良かったはず。
afterDelete()を通らなかったと思う。
888nobodyさん:2009/08/13(木) 11:11:29 ID:???
>>885
余計なお世話だけど、モデルのデータでやらないとvalidation error で困りそう
889878:2009/08/13(木) 11:41:05 ID:???
>>887
なるほろ。それでは一個ずつdeleteするようにします。

>>888
そうなんですよね。それずっと考えてました。
User更新されずにAddressが消えただけ\(^o^)/ってなりますよね。

なんですが、AddressのbeforeSave内でフィールドをチェックして自分をdeleteするようにすると、
beforSaveがtrueを返す→いったん削除後新規に保存される
falseを返す→他の一連の処理も全部やった後にロールバック。deleteもUser->saveも全部キャンセル
ってなりませんか?ちなみにOracleです。
890nobodyさん:2009/08/13(木) 12:25:16 ID:???
>>889
コールバックでやるならafterSaveじゃね?

$this->User->set( $this->data );
// if なんたらで $this->User->data['Address'][ n ] を unset
$this->User->saveAll(); // ここでdeleteさせる

いや、unsetしちゃだめか。無駄なupdate->deleteしたほうが楽か
891nobodyさん:2009/08/13(木) 13:35:31 ID:???
url_rewriter.tags と session.use_trans_sid を設定して、cookie がなくても
セッションを維持できるようにしたのですが、Controller->redirect は自分で
sid を付加しないといけないようです。
cookie のときはこの処理が要らないので、つながってるセッションが cookie か
sid か判定したいのですが、どこを見たら判定することが出来ますか?
892nobodyさん:2009/08/13(木) 13:40:44 ID:???
いってることがよくわからんけど
session.use_trans_sidを有効にするってことは、もうCookieでのセッションは効かないよね?
SIDのGETなりでも、Cookieでも、っていう欲張りなことがしたいの?
できるの?
893891:2009/08/13(木) 14:19:58 ID:???
ttp://www.php.net/manual/ja/session.idpassing.php
ブラウザで cookie が有効だと、設定 on でも SID は自動的にくっつかないみたいです。

app_controller.php の redirect で parent::redirect を呼ぶようにして
session が SID の時のみ $url に SID を追加したいので、その判定をしたいです。
894892:2009/08/13(木) 15:12:59 ID:???
ん?本当に?
つーかそんなことそのURLに書いてある?

ブラウザのCookieが有効かどうかなんてサーバー側は知りえないんじゃないかな?
(1ページ目で食わせて遷移先で食ってるか調べるっていう小細工でもしなければ)
って思ってたんだけど。ちがうんかいな
895892:2009/08/13(木) 15:22:41 ID:???
まぁ脱線してるから、
もしそれが可能っていうかそういう仕様なんだったら
controller->params['url']['SID']みればいいだけでないのっと。

経験上そういう仕様ではなかったと思うけどね。
896nobodyさん:2009/08/13(木) 15:46:42 ID:???
>>878
Ajaxを使ってOKなら、アドレスフィールドの横にAdd/Deleteボタンでも作ってやって、
アドレスの追加・削除は、その場でAjaxでAddressコントローラ/モデルに投げてしまえば美しく決まると思うよ。
897nobodyさん:2009/08/13(木) 15:59:13 ID:???
>895
params で取れることがわかりました。ありがとうございます。

設定が無効になるってこのへんかなぁ?蛇足ですね。失礼しました。
ttp://cvs.php.net/viewvc.cgi/php-src/ext/session/session.c?revision=1.417.2.8.2.40.2.22&view=markup#l1390
898nobodyさん:2009/08/14(金) 03:44:43 ID:???
881ですけど、無知で大変恐縮ですが教えて貰えませんか。
mysqlの本には りんご、みかんって保存するようなことかいてあったし。

0,1,2で保存しちゃうと DBのアソシエーションだらけになりませんか?
899nobodyさん:2009/08/14(金) 04:48:59 ID:???
連投すいません。
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1404&forum=3&post_id=3042
の方法でやってみることにします。
900nobodyさん:2009/08/14(金) 10:29:16 ID:???
貴方はDBに格納するかどうか以前に、データの正規化について学ぶべきだと思う。
何故コードで管理するか判ってないよね?
901nobodyさん:2009/08/14(金) 16:52:50 ID:???
作りやすさとかメンテナンス性なら、りんご、みかんって保存するほうが楽だと思う。
個人的には楽したいし出来るときはする。

ソースもデータも見て分かるって事は重要だと思うし。

パフォーマンスでカリカリチューンしたいなら違うのかもしれんが、富豪的に作って後から困るぐらいアクセスあってから考えればいい。
902nobodyさん:2009/08/14(金) 18:46:19 ID:???
>>900
本来は正規化はすべきと思うけど、現状のCakePHPを使う限りは
正規化しないDBのほうが使いやすいと思うよ。
903nobodyさん:2009/08/14(金) 20:46:10 ID:???
携帯からなので詳しく書けないけど、
elementsに

$type = array('りんご','みかん','バナナ');

e((isset($type[$fruits])) ? $type[$fruits] : 'カテゴリーがありません');

と書いて、DBはintで管理したら良いかもね。
検索のことを考えれば、普通はDBに文字列を登録しないよ。
904nobodyさん:2009/08/14(金) 23:37:47 ID:???
まあそれ以前に、>>881

> これだと りんご を探したいとき りんご で検索できないでしょ。 0,1 だと 0のもの探したいのに
> 10 とかもひっかかってくるだろうし。

この辺りの理解がヤバい訳だが。もしかして全部LIKEで引っ張ってくるつもりか?
まあ生産的な話じゃないんで誘導
【この先一体】MySQL 総合 Part15【どうなるの】
ttp://pc11.2ch.net/test/read.cgi/db/1240291265/601-700
905nobodyさん:2009/08/15(土) 06:23:54 ID:???
>900〜904
ご親切にありがとうございます。大変勉強になります。
みなさんすごいお詳しいですね。
>データの正規化
勉強してみます!
906nobodyさん:2009/08/17(月) 12:13:49 ID:???
907nobodyさん:2009/08/17(月) 17:24:27 ID:???
DBはmysqlなんですけど、saveするときにtinyintのカラムに
$data['column'] = 8;
とかでやると1で登録されちゃうんですけど、どうすりゃいいのかにゃ。
908nobodyさん:2009/08/17(月) 18:11:33 ID:???
>>907
そのテーブルの show create table を該当カラム部分だけでも張って味噌。
909nobodyさん:2009/08/17(月) 18:18:36 ID:???
>>908
レスとん。
該当カラムのとこ↓
`column` tinyint(1) NOT NULL default '0',

$data['column'] = 8;
以外に
array('column' => '8')
とか色々やったんだけど駄目なんだ〜。
'0'は0として登録されるんだけどそれ以外は1になっちゃう。
ってことは内部でtrue,falseに変換されちゃってんのかに。
910nobodyさん:2009/08/17(月) 18:26:07 ID:???
>>909
>tinyint(1)
911nobodyさん:2009/08/17(月) 18:28:23 ID:???
>>909
tinyint(1)
ってどうしたくて設定したの?

tinyint(1)
をググってみることをおすすめする。
多分二個目
912nobodyさん:2009/08/17(月) 18:30:15 ID:???
タイニーイントってブーリアン型みたいなもんじゃないの
913nobodyさん:2009/08/17(月) 18:34:05 ID:???
>>912
必ずしもそうじゃないから混乱するんだなぁ・・
914nobodyさん:2009/08/17(月) 18:34:46 ID:???
いいけど、正直スレ違いだよね
915nobodyさん:2009/08/17(月) 20:55:03 ID:???
うん。一度ActiveRecordから離れてMySQLの基本に立ち戻る事をオヌヌメ
最近Cake以外の話題でスレ消費してるな。ここはMySQL初心者質問スレか?
916nobodyさん:2009/08/18(火) 09:44:04 ID:???
そうおもうなら答えずスレ違いとだけ書いとけよ
答えるから続くんだろ
917nobodyさん:2009/08/18(火) 09:54:27 ID:???
そこまでガチガチにしなくてもいいんじゃね、答える人がいるんだから
嫌ならさっさと誘導なりすればいいけどさ
918nobodyさん:2009/08/18(火) 12:23:58 ID:???
よく判らない型は利用しない...

ヘボ現場からの声でした
919nobodyさん:2009/08/18(火) 18:06:03 ID:???
まぁいいじゃん。教えてあげようよ。

俺らが親切にすればその教えてもらった人もできるようになったら

「俺も、2chで世話になったな。あ。俺もこれくらい教えてやろうか」
となるだろうし。

な。俺からも頼むから。
920nobodyさん:2009/08/18(火) 18:24:14 ID:???
>>919
お前も世話になってるんだからお前が教えろ
921nobodyさん:2009/08/18(火) 18:27:18 ID:???
>>918
にしても、よく分からない型(MySQL?)使用してる現場って(汗
頑張れ、超頑張れ
922nobodyさん:2009/08/18(火) 19:06:03 ID:NZ4pSX/j
超初心者なのですが、わかる方がいたら教えてください。
CakePHP1.2ガイドブックを買ってきて勉強を始めたんですけど
bakeで焼いてみようと言う部分で、サンプル通りに作り
入力画面、更新画面などが表示されるようになったのですが
更新すると手入力をする日付(コンボボックス)の部分が「This field cannot be left blank」
とでて更新されないようなのです。
この部分がチェックの時にどうなっているのかを何処で見て修正すればよいのかがわかりません。
フォームでは日付+時間を指定しているのですが・・・
わかる方がいたらよろしくお願いいたします。
923nobodyさん:2009/08/18(火) 19:24:12 ID:???
入ってたらvalidationルールの設定をミスってると思う。

とりあえず
コントローラのeditアクション内
$this->Model名->save直前で
debug($this->data);

データdata[hoge][year]やmonthが入ってるか確認

たぶん入ってるでしょう
んならModelのvalidatesの該当するフィールドのルールを確認
とりあえず消して、ブラウザから更新かけてみる
たぶん通る

おそらくルールはdateであるべきだけど、そうなってないんじゃないかな

924nobodyさん:2009/08/18(火) 19:25:52 ID:???
出だしの「入ってたら」は無視してちょ
925nobodyさん:2009/08/18(火) 19:29:12 ID:NZ4pSX/j
書き込みありがとうございます。
早速探ってみます。
926nobodyさん:2009/08/18(火) 19:56:25 ID:???
922です。
validatesの該当するフィールドのルールを消したら動きました。
ルールはdateになっていたのですが、
MySQLのフィールドがdatetime 入力項目が 年 月 日 時間(1〜12) 分 AM/PM
の為 dateでは駄目なんでしょうか・・・・
927923:2009/08/18(火) 20:13:44 ID:???
dateじゃだめみたいすね
coreのvalidation.php見てみたけど、dateは完全に年月日のみ対応
timeも時分秒のみ対応。
さらにdatetimeルールはない。

つーことで正規表現で独自ルール書くしかないのかな

ちょっといまネットがつながりにくいところにいるもんで、
「CakePHP datetime バリデーション」
あたりの単語で検索かけてもいい感じの出てこない?

一応、datetimeヴァリデーションはどこにあるの?って外人が言ってるURLは見つけた。。。
http://groups.google.co.jp/group/cake-php/browse_thread/thread/d764fc281392a78c

俺以外の誰かお願い。
928nobodyさん:2009/08/18(火) 20:33:44 ID:???
ttp://www.awaresoft.jp/blog/4-cake-php/18-mybake.html
こんなんみっけた。
でもdatetime型には対応してない
というか、datetime型にマッチさせるにはカスタムバリデーション書かないと駄目ぽいね
929nobodyさん:2009/08/19(水) 00:20:29 ID:???
CakePHPかわいいよCakePHP
Djangoもちょっと触ったけどCakePHPに慣れたせいで書きづらかった。もうだめだ。
930nobodyさん:2009/08/19(水) 10:47:03 ID:???
みなさまありがとうございます。
頑張って見ます。
931nobodyさん:2009/08/19(水) 12:31:29 ID:???
初心者的質問なのですが、お教えください。

一寸上のレスで、Cake1.2 トランザクション駄目だみたいなのを読んで、
心配なのでトランザクションのテストをしたいのですが、
トランザクションのテストって、どうすれば良いのですか?

浅い考えとして、2人の人間にほぼ同時に同じデータを編集してもらって、
結果を判断する方法しか思い浮かばないのですが、これでは間違っていますか?

詳しい方、ご教授お願い致します。
932nobodyさん:2009/08/19(水) 13:13:08 ID:???
>>931
間違ってはないけど、処理途中にスリープ入れるとかしてタイミングが
取りやすい工夫はしたほうがいいよ。
933nobodyさん:2009/08/19(水) 19:49:23 ID:???
1.コネクションを2つ別々に作成する。
2.コネクション1で書き込み
3.コネクション2でチェック
4.などする。
934nobodyさん:2009/08/21(金) 19:18:52 ID:1U31Opzk
質問です。
cakephp1.2 + smartyでvalidateを行おうと思っていますが、ググっても
modelの記述方法しかないので「view部分は何もせんでいいの?」と
思っていたのですが、ひょっとしてfromヘルパーでhtml記述しているという
前提でしょうか?
935nobodyさん:2009/08/21(金) 19:23:38 ID:???
質問がよくわからんけど
viewに書く書き方もぐぐれば普通にでない?

こんな感じ

$form->input('hoge', array(
 'error' => array(
  'validationるーる名' => 'るーる',
 ),
));
936nobodyさん:2009/08/21(金) 19:26:01 ID:???
あ、ごめ
ルール自体はモデルにかくわ。

formヘルパー使ってなくてもdata[モデル][フィールド]の形でデータをsaveするとバリデーションは通るはず。
エラー出力と蚊が大変になると思うけど
937nobodyさん:2009/08/21(金) 21:33:06 ID:???
エラー出力は
<?=$form->error('field_name');?>
を表示したい箇所にぶちこめばOKじゃね??
938937:2009/08/21(金) 21:37:04 ID:???
あ、formヘルパー使わない前提か。
スマソ
939937:2009/08/21(金) 21:47:18 ID:???
うーん、validateまたはsaveに失敗したら、
コントローラ内で
$this->set('invalid_fields',$this->Model->invalidFields());
とかやって、
ビュー側で
<ul>
<?php
if(!empty($invalid_fields)){
foreach($invalid_fields as $invalid_field){
echo '<li>'.$invalid_field.'</li>';
}
}
?>
<ul>
(Smarty的な書き方は知らん)

とか
940nobodyさん:2009/08/21(金) 22:14:08 ID:???
caker的にzendはどうなのよ
941nobodyさん:2009/08/22(土) 01:09:27 ID:???
>>940
zend frameworkのこと?
みんなライブラリとしてvendorにぶちこんでるでしょ。
942nobodyさん:2009/08/22(土) 01:21:51 ID:???
>>941
zend fwでvendorに入れて便利なのってどんなの?
教えろ、いや教えてください
943nobodyさん:2009/08/22(土) 14:22:17 ID:???
>>941
すみません、自己解決しました。
944nobodyさん:2009/08/22(土) 21:20:58 ID:???
>>943
くだらねぇいたずらすんなw
945nobodyさん:2009/08/23(日) 22:56:22 ID:1PDco6xA
CakePHP1.2 で hasMany先のフィールドを条件指定したときの検索でつまづいてます。
TableA hasMany TableB
TableA belongsTo TableC
→やりたいこと。テーブルAとテーブルBにそれぞれ検索条件を指定して結果を得たい。

class TableA extends AppModel
{
var $name = 'TableA';
public $useTable = 'xxxxxxx';
var $belongsTo = array(
'TableA' => array(
'className' => 'TableC',
'foreignKey' => 'tablec_id',
)
);
var $hasMany = array(
'TableB' => array(
'className' => 'TableB',
'foreignKey' => 'tableb_id'
)
);
}
コントローラで、
$condition = array('TableB.hoghoge' => "foofoo" , 'TableB.hoghoge' => "0");
$conditions = array('recursive'=>1 , 'conditions' => array ('AND' => array($condition)));
$lst = $this->TableA->find('all' , $conditions);
としたが、joinされず、Unknown column 'TableB.hoghoge' in where clause ... のエラー。
796あたりのレスをみながら頑張ったのだが解決できず。
どなたかアドバイスください…
946nobodyさん:2009/08/24(月) 11:27:58 ID:???
実際に実行されたSQLも張ってみれば?
947nobodyさん:2009/08/24(月) 12:03:11 ID:tRXwOu7Y
ここでレス待つより、SQLを見て、試行錯誤してでも直す方が絶対はやい。
core.phpのConfigure::write('debug', 2);で出るから見るといいよ。
948nobodyさん:2009/08/24(月) 12:29:31 ID:7Xy2qm5D
934です。
色々と考えて頂いてありがとうございます。
解決した訳ではありませんが、やはり一癖あるという事だけは良くわかりました。
お礼申し上げます。
949931:2009/08/24(月) 12:39:45 ID:???
>>932
>>933

貴重なアドバイスありがとうございました。
返事遅くなりまして申し訳ありません。

これから、試してみようと思います。
また、何かありましたらよろしくお願いします。
950945:2009/08/24(月) 20:20:13 ID:???
>>946,947
アドバイスありがとうございます。debug は 2でやってます。
時間の都合もあったので、今回はSQLを書いて->query($sql)で逃げました…トホホ
951nobodyさん:2009/08/25(火) 12:24:15 ID:???
>>945
既に遅いと思いますが、こんな手法も。
http://herd-horse.com/blog/archives/78
952nobodyさん:2009/08/28(金) 16:05:21 ID:???
cakephp1.2 でコントローラーで外部モデル読み出すとき
App::import('Model','Hyouka');
$this->Hyouka = new Hyouka();

とやってるんですけど、もっと良い方法ないですかね。
いちいち Hyouka ってのを 3つ書き直さないといけないので面倒。

かといって uses に書くと重くなっちゃうし。
953nobodyさん:2009/08/28(金) 16:10:29 ID:???
Classregistry::init('ModelName')->find('all');
954nobodyさん:2009/08/28(金) 16:11:38 ID:???

ClassRegistry::init('ModelName')
だった

すんまへん
955nobodyさん:2009/08/28(金) 17:04:50 ID:???
>>953 >>954
おおおおおおおおおおおおおおおおおおおお。
ありがとうございます。
できました!
956nobodyさん:2009/08/28(金) 18:27:06 ID:???
cakePHP 1.2.4.8284 でpaginateしています。

Viewでの paginator->sort で困っています。
通常のフィールドの並び替えはできるのですが、
ストアドファンクションを用いて呼び出したフィールドの並び替えができません。

SQL的に書くと、

SELECT id, name, DISTANCE(point_x1 FLOAT, point_y1 FLOAT, point_x2 FLOAT, point_y2 FLOAT) as distance
FROM places WHERE 1=1

これのidやnameは並び替えができるのですが、distanceについて、できません。
これについて解決法をご存じの方、ご教授いただければ幸いです。

よろしくお願いいたします。
957nobodyさん:2009/08/28(金) 18:44:35 ID:???
>>956
places.distance とかじゃ出来ないんだっけ?
958956:2009/08/28(金) 18:49:33 ID:???
>>957
ご回答ありがとうございます。
試してみましたが、やっぱりダメなようです。

debugモードを3にしてすべてダンプしてみると、どうも最終的に生成されたSQLに
ORDER BYが存在していないことが分かりました。

どこかでsortの情報が消されているような感じもします。
959nobodyさん:2009/08/28(金) 21:15:41 ID:???
お前らHABTMとかどうやってんの?
960nobodyさん:2009/08/28(金) 21:42:06 ID:???
俺も一時期$controller->loadModel('(モデル名)');とかでモデルを読み込んでたが、
最近は素直に$controller->usesに書くようになった。
実際$controller->usesに複数個モデルを書くとどのくらいパフォーマンスに影響が出るんだろう
961954:2009/08/28(金) 21:51:18 ID:???
あ、952に「コントローラーで」って書いてたorz

だったら俺も基本 usesに追加する。

コントローラーで読み込むモデルが固定されてる場合はuses
動的に変化する場合や、モデルで別モデル使うがアソシしてない場合は
ClassRegistryで読み込んでるなー
962nobodyさん:2009/08/28(金) 23:14:27 ID:???
アソシエーションは便利だけど、モデル内で細かいメソッドを作ってるときに
頻繁にジレンマに陥る。
963nobodyさん:2009/08/29(土) 01:43:33 ID:???
>>960
>実際$controller->usesに複数個モデルを書くとどのくらいパフォーマンスに影響が出るんだろう
けっこう変わるみたいだよ。実際 3つくらいモデルを uses で読み込むと重くなってくる。
なのでこれからは基本 Classregistry::init('ModelName')->find('all'); で読み込むことにします。

ついでに bootstrap で
//血液型一覧
Configure::write('bload', array('A','B','O','AB'));

//性別一覧
Configure::write('sex', array('女性','男性'));

を定義してるんだけど、一気に配列で読み込む方法ないかな。定義が多くなるといちいち一つずつ読み出すのが面倒になる。
$bload = Configure::read('bload');
$sex = Configure::read('sex');

じゃなくてできれば配列で
$config['bload']
$config['sex']
みたいな感じで一気に返したいんだけど。
教えて下さい。
964954:2009/08/29(土) 01:46:51 ID:???
いい加減ぐぐれ



Configure::write('my.sex', array('女性','男性'));
Configure::write('my.bload', array('A','B','O','AB'));

debug(Configure::read('my'));
965nobodyさん:2009/08/29(土) 02:31:13 ID:???
>>964
ご親切にありがとうございます。
勉強になりました。本当にありがとうございました。
966960:2009/08/29(土) 04:01:59 ID:???
>>963
そうなのか…。ありがとう。
ウェブで公開されてるCakePHP製アプリのコードを見ると、大抵$usesに書かれてるんだよね。
大してパフォーマンスに影響しないからそうしてるのかと思ってたけど、単にあまり考えてないだけなのかな

そろそろ実行時のプログラムの流れを観察しないとなー
967nobodyさん:2009/08/29(土) 10:30:52 ID:???
usesよりloadModelで逐一呼び出すほうが、高速って聞いたんだけど
違うのかよ!
968nobodyさん:2009/08/29(土) 10:32:38 ID:???
>>964
こんなこと出来るのは知らなかった。非常にありがとう。
969nobodyさん:2009/08/29(土) 11:36:24 ID:???
Zend Frameworkなんてモデルへのアクセス方法がincludeだけなんだぜ
970nobodyさん:2009/08/29(土) 12:35:54 ID:???
正直そっちのほうがわかりやすくて良い。それなりの速さであれば。
971nobodyさん:2009/08/29(土) 13:40:55 ID:???
Cakeのディレクトリ構造は知らないけど、includeだとだいたいフルパスでの記述になって面倒だから
include_pathにおいてオートロードさせちゃう方が楽だったり
972nobodyさん:2009/08/29(土) 18:49:53 ID:9ciXgaFz
venderフォルダにユーザー関数おいてんだけど、
こっから、configで定義した定数を参照出来ないんだけど?
どうすればいい?

関数呼び出し時に、値を渡すのはなしで。
973972:2009/08/29(土) 19:00:07 ID:???
すみません・・・。
参照出来ました。
初歩的なミスをしておりました。
974nobodyさん:2009/08/29(土) 20:57:28 ID:???
>>967
その通り。でも1.2からloadmodel使えなくなったんですよ。たぶん。
975nobodyさん:2009/08/30(日) 02:28:33 ID:???
autoLinkUrlsが改行とか日本語も含めてURLとして認識されちゃうみたいなんだけど、
この辺修正できてる人いる?
なんかいろいろいじってみたけど、正規表現が複雑すぎて直せない。
976937:2009/08/30(日) 04:19:14 ID:???
>>964
これはいい
954あなたはメシア
977名無しさん@そうだ選挙に行こう:2009/08/30(日) 14:22:50 ID:???
メシアじゃなくて飯屋
978967:2009/08/31(月) 11:26:48 ID:???
>>974
1.2使ってるけどloadModelバリバリ使ってますです。
979nobodyさん:2009/08/31(月) 14:39:00 ID:???
実際loadModelのほうが1.2で速いと確認した神はおらんのか
980nobodyさん:2009/08/31(月) 16:50:37 ID:???
>>979
ベンチマークのコンポーネントでも作って自分でやりゃいいじゃん。
981nobodyさん:2009/08/31(月) 17:46:51 ID:???
現時点では速度に問題を感じてないから、将来的に改良したければするかも。
$usesだっけ、のほうが見やすいかなと。
982nobodyさん:2009/08/31(月) 19:48:51 ID:???
ブートストラップでビューのディレクトリを分けたのはいいんだけど、
$this->render($action);
で、ビュー呼び出すのにデフォルトのほうしか呼べないのは困ったもんだよね。
983982:2009/08/31(月) 19:57:46 ID:???
$this->render('/コントローラー/アクション')
ってやったらちゃんと探してきてくれた。嬉しい。
984nobodyさん:2009/09/01(火) 12:24:01 ID:???
CakePHP万歳!!
985nobodyさん:2009/09/01(火) 12:25:43 ID:???
万歳!!
986nobodyさん:2009/09/01(火) 14:28:15 ID:???
ん?
万歳!!
987nobodyさん:2009/09/01(火) 14:37:26 ID:???
こうやって中国文化が引き継がれていくんだね
988nobodyさん:2009/09/01(火) 14:40:16 ID:???
日本なんて朝鮮半島と中国文化の直系じゃねぇかw
989nobodyさん:2009/09/01(火) 16:15:01 ID:???
次スレ

【PHP】フレームワーク CakePHP 7ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1251789126/
990nobodyさん:2009/09/01(火) 18:21:52 ID:???

だがちょっと早漏気味ジャマイカ

CakPHPへの要望を意味なく連ねてみよう

・デプロイツールが欲しい、データベースschemaがしっかりしたら使えるかな・・
・日本語、マルチバイト関連も意識してくれないかなぁ・・
・Authコンポーネントもうちょっとカスタマイズしやすくなりませんか・・

でも1.2なってからほんと重箱突くぐらいの不満しかないんだけどな。
991nobodyさん:2009/09/01(火) 18:54:05 ID:???
趣味で作るには最高だよな。
まぁ仕事でも使ってるけど。
992nobodyさん:2009/09/01(火) 23:21:21 ID:???
>>991
本当にそう。趣味で作る分には全く不満ないよ。
そういうオレも仕事でも使ってるけど。
993nobodyさん:2009/09/01(火) 23:44:29 ID:???
CakePHPを使う会社に入りたいです><
994nobodyさん:2009/09/02(水) 09:44:50 ID:???
埋め
995nobodyさん:2009/09/02(水) 09:44:55 ID:???
埋め
996nobodyさん:2009/09/02(水) 09:45:01 ID:???
埋め
997nobodyさん:2009/09/02(水) 09:45:05 ID:???
埋め
998nobodyさん:2009/09/02(水) 09:45:10 ID:???
埋め
999nobodyさん:2009/09/02(水) 09:45:15 ID:???
埋め
1000nobodyさん:2009/09/02(水) 09:45:26 ID:???
次スレ

【PHP】フレームワーク CakePHP 7ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1251789126/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。