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

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

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2009/03/09(月) 10:55:37ID:3PTy4GqZ
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
0002nobodyさん2009/03/09(月) 10:56:11ID:???
■過去スレ
【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/
0003nobodyさん2009/03/09(月) 10:56:29ID:???
■その他いろいろ
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/
0004nobodyさん2009/03/09(月) 10:57:11ID:???
■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/
0005nobodyさん2009/03/09(月) 10:57:55ID:???
テンプレらしきものは以上
補足があればどうぞ

Have a Nice Cooking !

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

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

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

Error: Missing Database Connection. Try 'cake bake'

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

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

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

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

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

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

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

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

また、参考になる書籍やページがあればそれも教えてください。
0074nobodyさん2009/03/20(金) 18:20:40ID:???
>>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
0075732009/03/20(金) 18:28:42ID:???
>>74
すべてのPostの一覧ならばそうするのですが、
「あるUserが投稿したPostの一覧」の場合にどうしようかと思いまして・・・
0076nobodyさん2009/03/20(金) 19:22:42ID:???
>>75
どんなURL(controllerとactionと引数)になるかを考えてみよう
/posts/index/user_name or /posts/list/user_name
/users/posts_list
のどちらかになる
postの一覧から特定のユーザーのpostを表示するのならPostsControllerで
ログインしたユーザーが自分のpostを一覧するとかなら、後者でもよいと思う
0077762009/03/20(金) 19:28:07ID:???
当然、後者のパターンも
/posts/mylist
でPostsControllerで実装してもよい
0078nobodyさん2009/03/20(金) 19:29:15ID:???
これで作ったものって
画像のプロテクトできる?
0079nobodyさん2009/03/21(土) 02:25:58ID:???
>>78
そもそも画像のプロテクトってどんなのを想定してるの?
0080nobodyさん2009/03/21(土) 03:48:06ID:???
>>71
そんな事はチラシの裏にでも書いとけ
0081nobodyさん2009/03/21(土) 05:52:16ID:???
>>71
お前に言われなくても、そんなこたー皆んな知ってる
CakePHPのマルチバイトをお前が整備したらほめてやる
0082nobodyさん2009/03/21(土) 11:34:24ID: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の最新版なのですが。


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

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

早く1.2正式版対応のを出してくれ!
0089nobodyさん2009/03/24(火) 10:19:40ID:VfITkfEn
Zendにしようかコッチにしようか悩んでます
皆さんはどのへんにメリット感じてこちらを選んだんですか?
0090nobodyさん2009/03/24(火) 10:48:10ID:???
Qdmailコンポーネントをつかって、SimpleReplace的な事をするにはどうパラメータをわたせばいいの?
0091nobodyさん2009/03/25(水) 00:05:18ID:???
>>90
これ読んで出来ないならしらね
ttp://hal456.net/qdmail/simple_replace
0092nobodyさん2009/03/25(水) 11:45:22ID:???
CakePHPによる実践Webアプリケーション開発 (単行本(ソフトカバー))
安藤 祐介 (著), 岸田 健一郎 (著), 新原 雅司 (著)
http://www.amazon.co.jp/dp/4839930651/
発売日: 2009/4/8
0093nobodyさん2009/03/25(水) 11:47:53ID:???
>>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での出力
0094nobodyさん2009/03/25(水) 14:54:45ID:???
国際化したとして、登録された時間が全部タイムゾーンでずれる訳ですけど、どのようにしてます?
0095nobodyさん2009/03/25(水) 17:29:44ID:???
modelでバリデーションを定義して、controllerでvalidate()実行すると、
バリデーションが正常に機能していることが確認できるところまでできました。
しかしview側にエラーメッセージが表示されません。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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


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

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


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

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

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

次に続く・・・
01401312009/04/05(日) 11:09:46ID:???
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、本番のさくらサーバ環境、ともに出来てる事を確認。

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


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

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

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

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

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

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

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

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

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

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

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

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

name="data[MyFile][hoge]"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

しょうがないからquery使った。
0216nobodyさん2009/04/13(月) 18:04:13ID: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という変数の中身が鍵らしいというところまでは
分かったんだが、それ以上が何とも。
誰かご教示頼む。
02172162009/04/13(月) 18:54:34ID:???
とりあえずほっといてチュートリアル進めているうちに自己解決しました。
.htaccessがコピーされてないだけだった('A`)
0218nobodyさん2009/04/13(月) 22:52:24ID:???
>>210
わかる。フレームワークの機能をどうしても利用しようとして、少しのことでもこだわり過ぎて
逆に効率が悪くなるという。

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

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

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

あと、そのCake製のサイト見てみたいです。
・・・2chで晒すのはアレですかね?
0220nobodyさん2009/04/14(火) 09:12:22ID:???
>>219
218じゃないけど、Userみたいなのはプラグイン名にしない。
もうちょっとまとめたもの、例えばMeiboみたいなのを付ける。
0221nobodyさん2009/04/14(火) 12:23:38ID:???
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'
     );
どうかよろしくお願いします。
0222nobodyさん2009/04/14(火) 12:43:42ID:???
>>221

hostは空でいいよ
つまり、

'host' => '',
0223nobodyさん2009/04/14(火) 18:56:14ID:???
>>219
ug プラグインにしてる。で、あとはroutes.php でルーティング。
これだとパスとか関係ないのでイイと思う。逆にルーティングを使わないと
パス名長すぎてかっこわるくなるね。
02242212009/04/14(火) 21:27:15ID:???
>>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にしてみてもダメでした。
どうかよろしくお願いします。
0225nobodyさん2009/04/14(火) 23:39:51ID:b4g3iQJt
つか、sqlite3ってまだ未サポートじゃなかったのかと思ってたがどうなんだ
02262212009/04/15(水) 12:57:21ID:???
>>225
とりあえず去年の2月の時期で未サポートという情報は見つけました。
手を抜かずにmysqlを使うことにします。
お騒がせいたしました。
0227nobodyさん2009/04/15(水) 13:53:06ID:???
http://cakephp.seesaa.net/article/117498131.html
0228nobodyさん2009/04/15(水) 15:27:53ID:???
>>227
機能をPHPモジュールで実装して
PHPのコンパイルオプションで選ぶようにするとか

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

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

コントロール内で

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

とした後、

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

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

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

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

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

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

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

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

じゃうまく動かない。
誰かうまい方法ご存じですか?
0277nobodyさん2009/04/27(月) 16:54:40ID:???
不等号じゃなしに普通にstampって書いて降順にすればいいんでは?
0278nobodyさん2009/04/27(月) 18:18:49ID:???
>>277
ありがとう!できました!
0279nobodyさん2009/04/28(火) 12:31:08ID: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' ) )
これでは渡すことができません。

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

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

それとも、途中でPEARの知識が必要になる?
0283nobodyさん2009/05/01(金) 21:59:24ID:???
>>282
PEAR使わずにcakephpだけでOKだよ。
途中で「やっぱりPEAR必要だった。」って言うことはないと思う。
ネットに公開されている便利部品を使って実現。という事は
多々発生すると思うよ。
0284nobodyさん2009/05/01(金) 23:35:11ID:???
それってさ、
「cakephp用の部品です」
って形で公開されてるの?
0285nobodyさん2009/05/01(金) 23:46:22ID:???
>>284
そういうのもある。
0286nobodyさん2009/05/02(土) 00:25:41ID:???
cakeってmysql必須なの...?
0287nobodyさん2009/05/02(土) 00:42:57ID:???
>>286
いいや
0288nobodyさん2009/05/02(土) 01:25:28ID:???
でもMySQLのパスワードとかデーターベース名を
セットアップしないと動かなかったよ?
0289nobodyさん2009/05/02(土) 01:26:14ID:???
これちょっとやってみたけど、
モデルとビューとコントローラーの
3つを書かないとだめなんだね?
0290nobodyさん2009/05/02(土) 01:30:44ID:???
だから
$uses = array();
でモデルいらねーっての
0291nobodyさん2009/05/02(土) 01:41:25ID:???
<?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なの?
0292nobodyさん2009/05/02(土) 01:49:13ID:???
逆になんで駄目だと思ったの?
0293nobodyさん2009/05/02(土) 07:48:48ID:???
ふむmd5に脆弱性があるんだね
0294nobodyさん2009/05/02(土) 08:10:57ID:???
>>291
入門書:CakePHPによるWebアプリケーション開発 \2,940 嫁
>>286 p.41, 44
>>289 >>290 p.44
>>291 p.41, 47
0295nobodyさん2009/05/02(土) 10:38:50ID:???
ここも一読して質問してくれ
http://book.cakephp.org/ja/
0296nobodyさん2009/05/02(土) 12:30:44ID:???
ビデオで学ぶCakePHP入門もある
ttp://d.hatena.ne.jp/i_ogi/20090418/1240044385
0297nobodyさん2009/05/02(土) 13:33:45ID:???
http_socketのcookieのところが複数クッキーに対応してないんですね。
あとpage:1とかの:が予約語なんでhtmlチェックとかしたら
怒られるんですよね。

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

これってなんで
アマゾンでC++のカテゴリに入れられてるの?
0300nobodyさん2009/05/02(土) 22:38:49ID:???
C++   → CPP
CakePHP → CPP
0301nobodyさん2009/05/02(土) 22:55:51ID:???
>>300
それってマジなの?
0302nobodyさん2009/05/03(日) 00:41:38ID:???
本屋はシステムに詳しい訳じゃないから分類の間違いは良くあるぜ
0303nobodyさん2009/05/03(日) 08:02:54ID:???
>>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/
0304nobodyさん2009/05/03(日) 19:51:13ID:???
質問です。
CakePHP と Ruby on Rails を二股で勉強しています。
言語の仕様上仕方ないのかもしれませんが、
Rails と比べて CakePHP は括弧やシングルクォートが多くなって
疲れる気がします。
けれど、Rails よりも動作環境の敷居が低い CakePHP も魅力です。
煽りじゃなくて、CakePHP と Rails どちらにしようか迷っている人間に、
「CakePHP はこんな所が素敵だよ」と背中を押す一言を頂けたら幸いです。
0305nobodyさん2009/05/03(日) 19:51:54ID:???
>>304
質問というか相談ですね。失礼しました。
0306nobodyさん2009/05/03(日) 21:55:39ID:???
RoR →サーバー代毎月5,000円必要
cake → 無料のサーバーでも動く
0307nobodyさん2009/05/03(日) 21:56:34ID:???
http://www.google.co.jp/trends?q=cakephp%2Cruby+on+rails&ctab=0&geo=jp&date=all&sort=0

あとはこのグラフを見れば一目瞭然
0308nobodyさん2009/05/03(日) 22:29:46ID:???
しかし実際はこっちのグラフの方が参考になる罠
ttp://www.google.co.jp/trends?q=cakephp%2Crails&ctab=0&geo=jp&geor=all&date=all&sort=0
0309nobodyさん2009/05/03(日) 22:45:40ID:???
>>306
レスありがとうございます。
やはり稼働環境の敷居という点が大きな違いですね。

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

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

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


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



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

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

次に続く・・・
03431312009/05/12(火) 06:53:20ID:???
・まずやってみた事
コントローラ側
// 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でインライン要素にしてます。

次に続く・・・
03441312009/05/12(火) 06:55:37ID:???
・結果
ページリンク前半部、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' ));

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

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

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

>>351
app/error.phpの中でもafterFilterは効くのでしょうか?
ちょっと試しに書いてみたのですが、動かないようです・・・
error.phpのサンプルがあまり無いため、よくわからないのですが
function error($params)を書いて、その中に処理を書くべきなのでしょうか?
0353nobodyさん2009/05/17(日) 22:18:17ID:???
>>352
じゃあsjisにすればいいんじゃないの?
404ページはapacheがデフォルトで持ってるhtmlファイルが出てるだけでしょ
0354nobodyさん2009/05/17(日) 22:38:31ID:oOtRNQgA
>>353
cakephpの404ページはviews/layout/default.ctpの中に
views/error/error404.ctpが入ったモノが表示されるはずです・・・
0355nobodyさん2009/05/18(月) 01:07:59ID:???
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で上書きすりゃえんじゃね。
0356nobodyさん2009/05/18(月) 02:20:27ID:???
>>354
それのエンコードかえたら?
0357nobodyさん2009/05/18(月) 20:26:30ID:???
requestAction()で別コントローラのアクションを呼び出すと、
そのアクション中でcontroller->set()されたものがビュー(エレメント)内で使えない。
これは元のコントローラでセットしろと言う事?
コードのまとまりが悪くなっちゃうと思うんだけど。
03583572009/05/18(月) 20:27:41ID:+BNQiVp5
セットされたものが使えないと言うのは、
requestAction()の呼び出し元のビューでもそうだし、
そのエレメント内でもそう。
つまりrequestAction()で呼び出されたアクション中ではcontroller->set()が機能してないって事だと思う。
03593572009/05/18(月) 20:45:14ID:+BNQiVp5
自分が遭遇してるケースは
ビューから
View->element(hoge,array('hoge'=>View->requestAction()));
と言う形でエレメントを描画しようとしたら
この形で呼び出したrequestActionではエレメントでも呼び出し元ビューでも
set()された変数がundefinedになるというもの。

requestAction()はコントローラからも呼び出せるが
MVC的にはビューから呼び出すのが正しいはず。
03603572009/05/18(月) 20:51:41ID:???
あー、requestAction()で呼び出された場合set()は効かなくて
element()の引数で渡すか完全にレンダーして返せと言う事か
とりあえずやりたい事は出来そうお騒がせしました
0361nobodyさん2009/05/18(月) 21:06:16ID:???
AuthComponentって便利ですね^^
0362nobodyさん2009/05/18(月) 21:07:00ID:???
CakePHPを始めるのにオブジェクト指向は必須ですか?
0363nobodyさん2009/05/19(火) 03:27:27ID:???
もうすでにあなたはオブジェクトの中にいるわけだけども。
0364nobodyさん2009/05/19(火) 20:44:37ID:???
ローカルの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導入してる人いる?
0365nobodyさん2009/05/19(火) 22:08:47ID:EQ1qWtUA
デバッグモードで表示されるSQLのクエリログを本番でも残したいんだけど
http://www.1x1.jp/blog/2007/04/cakephp_sql_log.html
http://d.hatena.ne.jp/kusakari/20080903/1220429833
これ意外でもうちょっとスマートな方法はない?
デバッグモードで動くコンポーネントとかは結構あるけど、
本番環境でログとれるのは見つからなかった。

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

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

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

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

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

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

まあ動きは本で学んで、あとはオンラインマニュアルで。ってのでいいかもしれんけど。
0378nobodyさん2009/05/22(金) 01:00:50ID:???
1.2から完成度が高いフレームワークになったね。
0379nobodyさん2009/05/22(金) 02:38:39ID:kpKonnkD
>>375
お金に余裕あるのなら1.2の本を買って先に読んだ方がいい
1.1を最初に学ぶと、後から学びなおしの部分が多い
0380nobodyさん2009/05/22(金) 06:46:23ID:???
>>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ガイドブック」のおいしい所を頂けば良いのでは
0381nobodyさん2009/05/22(金) 06:50:42ID:???
1.1とか実用レベルのフレームワークじゃなくない?
1.2ですらそう思う場面は出てくる

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

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

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

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

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

便利なんだか不便なんだかいまいちだなぁ。
0394nobodyさん2009/05/26(火) 12:08:51ID:???
>>392-393
つ $this->Auth->allow()
0395nobodyさん2009/05/26(火) 13:30:49ID: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が変な処理をしている?ようなきがします。

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

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

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

CakePHPのバージョンは1.2.2.8120で、PHPのバージョンは4.4です。
0398nobodyさん2009/05/26(火) 19:36:17ID:???
DB登録した時のエンコードに合わせれば、
アンシリアライズできるんじゃね?
03993972009/05/26(火) 19:55:53ID: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
0400nobodyさん2009/05/27(水) 08:53:05ID:???
CakePHP で動いている CMS の色々なサンプルを見たいのですが
いま、まともに動いているプロジェクトって wildflower ぐらい?
0401nobodyさん2009/05/27(水) 15:15:10ID:???
こんにちは。

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

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

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

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

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

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

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

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

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

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

これを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になった状態で検索に引っかかってしまいます。
何かいい方法はないのでしょうか。
0410nobodyさん2009/05/28(木) 17:58:51ID:???
array
0 =>
array
'News' =>
array
'contents' => string 'テスト' (length=16)
'id' => string '1' (length=1)
'Comment' =>
array
0 =>
array
...
1 =>
array
...
'Tag' =>
array
empty
このような状態です。
0411nobodyさん2009/05/28(木) 20:18:29ID:???
>>409
$option['conditions'] = array('NewsTag.tag_id' => $tag_id);
にしてやればいいと思うよ。
0412nobodyさん2009/05/29(金) 02:26:31ID:???
Fast cakephp
って本。

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

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

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

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


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

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

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

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


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

>>429で言ってるように理由はないんでしょうか?
0433nobodyさん2009/06/01(月) 18:57:16ID: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を見たら下の方を使っていたので
下の方にかき方変えようか迷ってるんだけど・・・
0434nobodyさん2009/06/01(月) 19:22:13ID:???
>>420
http://blog.ecworks.jp/archives/691
だそうですよ。よかったね修正してくれるって。でも直接言ってくれって。
0435nobodyさん2009/06/01(月) 19:28:19ID:???
420のたたきっぷりはビックリして何も言えなかったけど、
ktailibraryの作者さんの大人な対応ぶりにはさらにビックリ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

%ほげほげ

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

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

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

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

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

だから使わないんだよね。
0515nobodyさん2009/06/14(日) 17:49:59ID:???
apc入れようとしてるんだけど、さくらサーバでも導入する事できるの?
0516nobodyさん2009/06/15(月) 05:53:28ID:???
>>515
ttp://pc11.2ch.net/test/read.cgi/hosting/1227200815/
0517nobodyさん2009/06/15(月) 05:54:41ID:???
>>515
これも
ttp://pc11.2ch.net/test/read.cgi/hosting/1236253865/
0518nobodyさん2009/06/15(月) 20:19:10ID:???
http://stackoverflow.com/questions/994897/cakephpform-submiiting-problem-in-mozila

この質問って回答するの難しい?
0519nobodyさん2009/06/15(月) 21:55:12ID:???
日本語でおk
0520nobodyさん2009/06/16(火) 01:02:44ID:???
英語が雑なので分かりにくいのでは?
0521nobodyさん2009/06/16(火) 22:49:42ID:???
http://www.amazon.co.jp/dp/4839932468
CakePHP1.2ガイドブック
6/27発売 キタ━━━━━━(゚∀゚)━━━━━━ !!
0522nobodyさん2009/06/16(火) 22:58:46ID:???
もうCake本いらないだろ・・・symfonyのを出してくれよ;
0523nobodyさん2009/06/16(火) 23:00:25ID:???
そりゃ売れるものを出すだろ
0524nobodyさん2009/06/17(水) 12:27:40ID:???
Bakerの皆さんに質問です。

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

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

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

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

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


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

vendor("smarty/Smarty.class");

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


$this->smarty =new Smarty();
とか、そういう方向でしょうか・・・?
0530カナディアンマン2009/06/18(木) 16:07:17ID:???
チェックボックスを作成しました。
出力された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'));
0531nobodyさん2009/06/18(木) 16:31:55ID:???
>>530
値が取れないって、どうやったら取れなかったの?
debugは有効にしてる?
0532カナディアンマン2009/06/18(木) 17:00:36ID:???
レスありがとうございます。

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

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

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


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

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

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

やっぱりjobの中に何も入ってないです。
0540nobodyさん2009/06/18(木) 23:53:02ID:???
>>539
>>530見直したらアソシエーションしてるね
どう関連づけされているかおしえて。
0541nobodyさん2009/06/19(金) 00:05:29ID:???
>>539
HABTMなら
http://book.cakephp.org/view/85/Saving-Related-Model-Data-HABTM
$form->input('Job.Job');
ってまだHABTMやったことないけど
0542カナディアンマン2009/06/19(金) 00:39:16ID:???
アソシエーションはこれです。
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'));

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

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

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

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

<?php
class TitlesController extends AppController {

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

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

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

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

しかしtitleが使えないとなると、なんて変数名でセットしようか・・・
こういうところで悩んでしまってぜんぜん進まない;
0548nobodyさん2009/06/21(日) 06:29:42ID:???
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' => 'グウェンドリン'),
),
),
),
),
);
0549nobodyさん2009/06/21(日) 13:27:11ID:???
>>548
できなかったと思う
取得後に加工するのが手っ取り早い
0550nobodyさん2009/06/21(日) 23:07:24ID:???
>>548 find('threaded')でできなかったっけ?
05515482009/06/22(月) 02:56:27ID:???
>>550
ちゃんとマニュアルありましたね。ありがとうございます!
ttp://book.cakephp.org/ja/view/812/find-threaded
05525492009/06/22(月) 09:41:51ID:???
>>551
ごめん、勝手に array[ 'id' ] = 'name' 形式に脳内変換してた。。。
05535482009/06/23(火) 05:15:19ID:???
ググっても見つからなかったもので…。
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
0554nobodyさん2009/06/23(火) 05:30:36ID:???
>>553
えっ、それ使えなくなったら結構困るな
0555nobodyさん2009/06/23(火) 10:09:03ID:???
>>553
適当にメンバ変数に入れてあげればよい
$this->Member = $this->ComponentsName->getMember();
※もちろんコンポーネント内で処理しても良い

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

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

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

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

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

$form->create('Post',array("action"=>"add".DS.$id));
0570nobodyさん2009/06/25(木) 02:24:42ID:???
>>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で変更したときに柔軟性がある。
0571nobodyさん2009/06/25(木) 05:20:41ID:BlJ0aidQ
>>569
>>570

ありがとうございます!
0572nobodyさん2009/06/25(木) 09:05:29ID:???
>>568
$form->create('Post', array('url'=>'/'.$this->params['url']['url']));
0573nobodyさん2009/06/25(木) 09:21:19ID:???
>>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ルーティングあると思うようにリバースルーティングしてくれなくて挫折した
正攻法は後者。うまくいかないときは前者で対処してる
0574nobodyさん2009/06/25(木) 17:16:17ID:BlJ0aidQ
$this->model->getLastInsertID()という関数が、apache再起動したら使えなくなってしまいました。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

var $helpers = array('Html');

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

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

$rss->items の第 2 変数にヘルパーのメソッドが渡せれば解決するのですが・・・;
0589nobodyさん2009/06/28(日) 11:43:08ID:???
>>588
$rss->items($item, array( $hoge ,"fuga" ) )
とHogeヘルパーのfugaメソッドを渡せば行けるんじゃね?
0590nobodyさん2009/07/01(水) 09:51:27ID:???
>>588-589
こうかな?試してないけど
$rss->items($item, array( ClassRegistry::getObject('view')->getVar('hoge') ,"fuga" ) )
0591nobodyさん2009/07/04(土) 12:39:33ID:???
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

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

UserとDinnerがあったとして、

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

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


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

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

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

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

自分の英語レベルの低さに悲しくなる...orz
0598nobodyさん2009/07/06(月) 13:50:27ID:???
>>593
つ ttp://teknoid.wordpress.com/2008/10/16/how-to-validate-habtm-data/
05995932009/07/06(月) 17:06:53ID:7VJoQdab
>>598
ありがとうございます。

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

そうも言ってられませんのでいただきましたURLのような実装でいこうと思います。
ありがとうございました
06005932009/07/06(月) 20:30:54ID: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)),
>   ),
>  ),
> );
06015932009/07/06(月) 20:35:20ID: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がたっていれば保存する処理を以下に。
0602nobodyさん2009/07/06(月) 21:42:58ID:???
>>601
$flagは使わずにできるからもっとDRYにできますよ
06035932009/07/06(月) 23:04:14ID:7VJoQdab
>>602
詳しくおねげーします!!
0604nobodyさん2009/07/06(月) 23:20:21ID:???
>>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は自動。
06055932009/07/06(月) 23:22:20ID: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
そうなんですか!
ためしてみます
06065932009/07/06(月) 23:25:19ID:7VJoQdab
>>603じゃなかった
>>604
ためしてみます。ありがとうございます
0607nobodyさん2009/07/07(火) 00:15:37ID:CrPLCrV4
あー確かに行けるんですが、
saveAll()かける前に一ページはさんでて、
単にvalidateしてconfirmページ出すためにflag使ってたみたいです
validateAllとかあればいけそうなんだけど・・・

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

そうなんだよなw

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

index.php

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

oreore_phpinfo();
?>


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


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

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

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

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

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


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

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

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

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

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

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

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

そうじゃなくて、cakeのcore層でなにかしら解読の仕組みが用意されてて、app層に難読化コードを設置することで、
appとcoreをかけ合わせることで初めて実行できるようなものを期待しているの?
だとすると、自分の知る限りではない。
07257242009/07/22(水) 00:42:35ID:2l6UTOL5
だめだな質問ちゃんと読まないと
>Zend GuardとかがPHPだと一般的なようですが、CakePHPでも使用できるのでしょうか?
でしたか。
0726nobodyさん2009/07/22(水) 13:56:52ID:???
>>722
CakePHPとして配布されていて、
誰でも手に入れられるコードを
難読化してどうするよw
0727nobodyさん2009/07/22(水) 14:15:37ID: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に入れたまま使いたいんです。
0728nobodyさん2009/07/22(水) 14:24:03ID:???
あらディレクトリ名が間違ってた
shell->shells

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

plugins/plugin_name/vendors/shells/plugin_name_hoge.php

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

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

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

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


Subversion実践入門達人プログラマに学ぶバージョン管理
 サードパーティ製のコード
0744nobodyさん2009/07/25(土) 16:46:58ID:???
ライブラリの塊に新バージョンが出たときに
それをディレクトリに振り分けるのが面倒臭いといってるんでは?
0745nobodyさん2009/07/25(土) 20:25:31ID:???
javascriptとCSSで分離できないライブラリなんてあるか?
あるとしたらそのライブラリの設計が問題じゃないかな。
0746nobodyさん2009/07/26(日) 00:22:51ID:???
SVNの話じゃないんじゃない?
0747nobodyさん2009/07/26(日) 00:48:19ID:???
例えば
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に対応させてる方もおりましたんで
これを参考にしてみます。でも本体改造はちょっと気が引ける・・・のと、
その都度改造っていうのもちょっとなー
07487422009/07/26(日) 00:49:03ID:???
あ、>>747>>742です。
0749nobodyさん2009/07/26(日) 16:59:20ID:???
CakePHP使ってるサイト少ないよね
ほとんど趣味の世界なのかな
0750nobodyさん2009/07/26(日) 17:30:30ID:+LxCHWip
>>749
当たり前だろ。
0751nobodyさん2009/07/26(日) 18:42:34ID:???
当たり前なのか?
商用では何が使われてるんだよ
0752nobodyさん2009/07/27(月) 05:22:59ID:???
CakePHP使ってますと公言してもメリットがないから
使ってるサイトが少なそうに見えている、とも考えられる

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


アソシエーションがA HABTM B なんで>>774とは微妙に違うんですが、
今やってみると…両方とも思いっきりafterFind通っていました。なんでだろう。
ちょっと気持ち悪いけどとりあえず解決下っぽいです。
ありがとうございました。
0781nobodyさん2009/07/30(木) 05:31:06ID:???
夜型か地球の裏側住まい乙
0782nobodyさん2009/07/30(木) 08:20:25ID:???
ブラジル人乙。
0783nobodyさん2009/07/30(木) 09:14:34ID:???
>>769
あぁ。これ一回一回やってたけど afterFind でできるのか。
これって save() する時に serialize やってくれるようにできないかな。
0784nobodyさん2009/07/30(木) 09:45:07ID:???
>>783
http://book.cakephp.org/ja/view/683/beforeSave
「このコールバックは、データが保存される前にそのデータを加工する場合、特に便利です」
0785nobodyさん2009/07/30(木) 12:29:51ID:???
>>773
>>773
>>773
>>773

07867832009/07/30(木) 13:58:02ID:???
>>784
さんくす。モデルって関連づけとバリデーションくらいしか触ってなかた。
0787nobodyさん2009/07/30(木) 18:03:42ID:???
やべえ今更>>766
ttp://www.sooey.com/journal/2008/03/26/717/
みて、自分のコードのcontrollerの冗長さに泣けた
0788nobodyさん2009/07/30(木) 19:40:02ID:???
CakePHPというか、アメリカ圏というべきかな。では
ドメインモデルの設計が主流みたいなんだよね。
それに対して日本はトランザクションスクリプトが多い感じ。
(低レベル日本じゃこの考え方自体があまり知られていない感じもするけどw)

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

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

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

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

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

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



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

ココも勉強になるわ
0796nobodyさん2009/07/31(金) 17:54:51ID:???
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'
という警告がでてきてしまいました。
0797nobodyさん2009/07/31(金) 18:16:31ID:???
>>796
$this-User->recursive = 0;
じゃなかったかな?

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

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

じゃあオレも...

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

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

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

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

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

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

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

setup時に
UDATE⇒modified
RDATE⇒created

beforeFind
beforeSaveで逆

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

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

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

ご意見を頂きました皆様(殊に830様)、ありがとうございました。
0836nobodyさん2009/08/04(火) 15:40:55ID:???
バージョンアップきたけど、何か大きく変わったところあるのかな?
例のページネーションのソートのバグとかかな?
0837nobodyさん2009/08/04(火) 20:09:01ID:???
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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

名簿のようなものを作っているのですが、一人のユーザーが複数のアドレスを持つので
アドレスフィールドを別モデルにしました。(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の関連レコードも一緒に編集というのは結構よくあるパターンに思えますが、なにか常套手段的なものはあるんでしょうか?
書籍数冊&ググったんですが、追加・保存する例しか探す事ができませんでした。
0879nobodyさん2009/08/13(木) 01:46:08ID:???
>>878
説明するのが手間だから、Addressでbakeして。
deleteアクションとか見れ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

経験上そういう仕様ではなかったと思うけどね。
0896nobodyさん2009/08/13(木) 15:46:42ID:???
>>878
Ajaxを使ってOKなら、アドレスフィールドの横にAdd/Deleteボタンでも作ってやって、
アドレスの追加・削除は、その場でAjaxでAddressコントローラ/モデルに投げてしまえば美しく決まると思うよ。
0897nobodyさん2009/08/13(木) 15:59:13ID:???
>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
0898nobodyさん2009/08/14(金) 03:44:43ID:???
881ですけど、無知で大変恐縮ですが教えて貰えませんか。
mysqlの本には りんご、みかんって保存するようなことかいてあったし。

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

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

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

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

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

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

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

この辺りの理解がヤバい訳だが。もしかして全部LIKEで引っ張ってくるつもりか?
まあ生産的な話じゃないんで誘導
【この先一体】MySQL 総合 Part15【どうなるの】
ttp://pc11.2ch.net/test/read.cgi/db/1240291265/601-700
0905nobodyさん2009/08/15(土) 06:23:54ID:???
>900〜904
ご親切にありがとうございます。大変勉強になります。
みなさんすごいお詳しいですね。
>データの正規化
勉強してみます!
0906nobodyさん2009/08/17(月) 12:13:49ID:???
>>905
http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_1.html

正規化だお!!
0907nobodyさん2009/08/17(月) 17:24:27ID:???
DBはmysqlなんですけど、saveするときにtinyintのカラムに
$data['column'] = 8;
とかでやると1で登録されちゃうんですけど、どうすりゃいいのかにゃ。
0908nobodyさん2009/08/17(月) 18:11:33ID:???
>>907
そのテーブルの show create table を該当カラム部分だけでも張って味噌。
0909nobodyさん2009/08/17(月) 18:18:36ID:???
>>908
レスとん。
該当カラムのとこ↓
`column` tinyint(1) NOT NULL default '0',

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

こんな感じ

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

formヘルパー使ってなくてもdata[モデル][フィールド]の形でデータをsaveするとバリデーションは通るはず。
エラー出力と蚊が大変になると思うけど
0937nobodyさん2009/08/21(金) 21:33:06ID:???
エラー出力は
<?=$form->error('field_name');?>
を表示したい箇所にぶちこめばOKじゃね??
09389372009/08/21(金) 21:37:04ID:???
あ、formヘルパー使わない前提か。
スマソ
09399372009/08/21(金) 21:47:18ID:???
うーん、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的な書き方は知らん)

とか
0940nobodyさん2009/08/21(金) 22:14:08ID:???
caker的にzendはどうなのよ
0941nobodyさん2009/08/22(土) 01:09:27ID:???
>>940
zend frameworkのこと?
みんなライブラリとしてvendorにぶちこんでるでしょ。
0942nobodyさん2009/08/22(土) 01:21:51ID:???
>>941
zend fwでvendorに入れて便利なのってどんなの?
教えろ、いや教えてください
0943nobodyさん2009/08/22(土) 14:22:17ID:???
>>941
すみません、自己解決しました。
0944nobodyさん2009/08/22(土) 21:20:58ID:???
>>943
くだらねぇいたずらすんなw
0945nobodyさん2009/08/23(日) 22:56:22ID: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あたりのレスをみながら頑張ったのだが解決できず。
どなたかアドバイスください…
0946nobodyさん2009/08/24(月) 11:27:58ID:???
実際に実行されたSQLも張ってみれば?
0947nobodyさん2009/08/24(月) 12:03:11ID:tRXwOu7Y
ここでレス待つより、SQLを見て、試行錯誤してでも直す方が絶対はやい。
core.phpのConfigure::write('debug', 2);で出るから見るといいよ。
0948nobodyさん2009/08/24(月) 12:29:31ID:7Xy2qm5D
934です。
色々と考えて頂いてありがとうございます。
解決した訳ではありませんが、やはり一癖あるという事だけは良くわかりました。
お礼申し上げます。
09499312009/08/24(月) 12:39:45ID:???
>>932
>>933

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

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

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

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

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

すんまへん
0955nobodyさん2009/08/28(金) 17:04:50ID:???
>>953 >>954
おおおおおおおおおおおおおおおおおおおお。
ありがとうございます。
できました!
0956nobodyさん2009/08/28(金) 18:27:06ID:???
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について、できません。
これについて解決法をご存じの方、ご教授いただければ幸いです。

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

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

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

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

コントローラーで読み込むモデルが固定されてる場合はuses
動的に変化する場合や、モデルで別モデル使うがアソシしてない場合は
ClassRegistryで読み込んでるなー
0962nobodyさん2009/08/28(金) 23:14:27ID:???
アソシエーションは便利だけど、モデル内で細かいメソッドを作ってるときに
頻繁にジレンマに陥る。
0963nobodyさん2009/08/29(土) 01:43:33ID:???
>>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']
みたいな感じで一気に返したいんだけど。
教えて下さい。
09649542009/08/29(土) 01:46:51ID:???
いい加減ぐぐれ



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

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

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

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

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

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

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

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

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

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