【PHP】フレームワーク CakePHP 6ホール目【v1.2】
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2009/03/09(月) 10:55:37ID:3PTy4GqZ※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:???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:???例えば、A,B,C という3つのモデルが連携して、A_id と B_id が決まったら
C_id が返る、というようなイメージなのですが。
0007nobodyさん
2009/03/09(月) 15:20:58ID:VNswFz5T0008nobodyさん
2009/03/09(月) 16:46:13ID:???テンプレ作った人、乙です♪
0009nobodyさん
2009/03/11(水) 09:16:15ID:???$ajax->formと$form->endの間でreturn this.form.submit();
をやった場合には全部更新されてしまいました。
0011nobodyさん
2009/03/11(水) 13:40:54ID:???書きました。
form->endのボタンの場合はちゃんと指定部分だけ更新されるんですが、
その途中のform->selectのonChangeだと全部更新されてしまいます。
0012nobodyさん
2009/03/11(水) 15:34:20ID:57BlDi5P普通にmodifiedだけupdateなりすればいいかなとは思ってますが、おすすめの方法があれば・・。
0013nobodyさん
2009/03/11(水) 18:09:40ID:???値が正常にわたってないみたいです。
IPアドレスを渡す方法があれば教えてください
0015nobodyさん
2009/03/11(水) 19:06:24ID:???http://hogehoge/コントローラ/関数/引数(IPアドレス)/
に飛ぶとコントローラ側に値が入ってません。NULLになっています。
リンクを作る前にIPアドレスを適当な英語に変換して
また関数側で英語をIPアドレスに変換すればうまくいくんですが・・・
0017nobodyさん
2009/03/11(水) 20:50:52ID:???IPアドレス:ポート番号って値だったので。
なんとかして、そのまま受け取ることはできないかな
0018nobodyさん
2009/03/11(水) 20:54:25ID:???0019nobodyさん
2009/03/11(水) 23:38:14ID:???逆にコロンそのままじゃなきゃいけない理由はあるの?
/で区切るとか、置換するとか>18さんの言うとおりエンコードするとか・・
0020nobodyさん
2009/03/12(木) 00:14:51ID:???ありがとうございました。
0021nobodyさん
2009/03/12(木) 01:35:37ID:???0022nobodyさん
2009/03/12(木) 01:36:25ID:???0023nobodyさん
2009/03/12(木) 01:55:47ID:???0024nobodyさん
2009/03/12(木) 04:42:04ID:???page:1とかsort:createdとかが、見た目にクセがあるので
page=1&sort=createdみたいに普通のクエリストリングにしたいのですが、
ヘルパーに手を入れる必要がありますか?
0025nobodyさん
2009/03/12(木) 08:09:24ID:???キャッシュ使えば多少多くても大丈夫なんだろうけど、キャッシュなしで 7個は多いかな。
0027nobodyさん
2009/03/12(木) 08:52:05ID:???ありがとう。そのままクエリコピペしようと思ったけどムリだった。。。
cakephpに限ったことじゃないけど、できるだけSQLに頼らず PHP側で処理した方が
動作が軽くなるって認識でOKですかね。
0028nobodyさん
2009/03/13(金) 03:26:08ID:P2u6tjWp処理が何か知らないけど、SQLのほうがいいんじゃ。
基本debug=2で画面下にでる各SQLの実行時間を見ながら考えれば?
0029nobodyさん
2009/03/13(金) 13:25:07ID:???ありがと。SQLの時間が見れたんだね。気づかなかった。
bindModelやったらだいぶ処理時間が短くなった。
アソシエーションは大事だね。
0030nobodyさん
2009/03/14(土) 17:17:20ID:Spxmyd/mここを参考にCake1.2で空メール処理を作ってたのですが、
Shellのクラス内で$uses = (モデル名)をやると
Error: Missing Database Connection. Try 'cake bake'
と表示され、データベースに接続することができません。
そもそもバッチファイルではデータベース接続設定が
独自に要るとか何か原因になりそうなことはないでしょうか?
0032nobodyさん
2009/03/16(月) 05:17:54ID:???0034nobodyさん
2009/03/16(月) 08:31:43ID:???うまくいかないもんで聞いてみますた
0035nobodyさん
2009/03/16(月) 09:06:11ID:???0036nobodyさん
2009/03/16(月) 10:08:00ID:???登録時もAuthが自動でやってくれる。
$this->data['User']['password']に入ってれば。
0037nobodyさん
2009/03/16(月) 10:13:29ID:???0038nobodyさん
2009/03/16(月) 15:57:02ID:???0039nobodyさん
2009/03/16(月) 16:17:55ID:???バリデーションのとき面倒なのよね。
0040nobodyさん
2009/03/16(月) 17:24:43ID:???しょうがないなぁ・・。
俺はここ最後まで呼んだらすごい楽になったよ。
ttp://cakephp.jp/modules/newbb/viewtopic.php?topic_id=706&forum=14&post_id=3741#forumpost3741
0041nobodyさん
2009/03/16(月) 17:59:57ID:???ここの第3正規形、注文明細の表を見てもらいたい。
商品:姫トランスと満月を探してサウンドトラック
を注文した顧客のデータを取得したい場合
cakeならどうやって取得するんですか?
アソシエーションを定義しててもうまく取得できないのですが
何かいい方法があるのでしょうか。
mysqlなので積集合が使えないしサブクエリ出来れば使いたくないです。
0043nobodyさん
2009/03/17(火) 06:49:48ID:SCdB4QMUサンプルとかいっぱいあげてるサイトないですか?
0045nobodyさん
2009/03/17(火) 10:47:08ID:???0046nobodyさん
2009/03/17(火) 13:19:25ID:???>>45 に同感だが、
やるとすればrouterの$namedのパラメーターで設定じゃないかな。
やったことないから実際はわからんけど。
004744
2009/03/17(火) 13:47:50ID:???>>46
Cakeで作られたサイトをいくつか見たのですが、
ページング処理のあるページのURLにコロンなどが含まれていなかったので、
みなさん、なにか細工されているのかと思いまして・・・
routerでnamedパラメータの区切り文字「:」を変えることはできるのですが、
それだと、
page=1/order=created
のようになるだけなので・・・
あまり拘っても意味ないのかな。
0048nobodyさん
2009/03/17(火) 13:56:59ID:???掲示板のユーザー名も変更される場合、
掲示板テーブルにはユーザIDと本文を記録して
ひとつのレスごとにIDで検索かけて名前を取ってくる
って方法でいいんでしょうか?
0050nobodyさん
2009/03/17(火) 15:25:42ID:???検索エンジンのクローラーを別とすると、URLを見ているのは、HTML分かる人だけだわな。
とすると、クエリストリングだろうが、見慣れないcake式だろうが、そういう人が見ればどれでも一緒ということになる。
だからあまり気にすることないかと。
それよりは、面倒なところをcakeに任せた方がつくるのもメンテも楽だと思う。
005141
2009/03/17(火) 16:45:45ID:???まさに求めていたものでした。ありがとうございます。
ただ 'conditions'=>array(
conditionsに商品名=姫トランス&&商品名=満月を(ry
とした場合うまくいきませんでした。 )
0052nobodyさん
2009/03/17(火) 17:40:40ID:???'conditions' =>array('AND'=>array(.......))
とかで出てこないすか?マニュアルのモデルの所読んでみて。
0053nobodyさん
2009/03/17(火) 23:12:06ID:???選択肢を変化させたり、hiddenの値を変化させたりすると、
Securityコンポーネントに引っかかっちゃうんですけど、
なにか対処法はありませんかねぇ・・・。
0054nobodyさん
2009/03/18(水) 03:24:16ID:???0055nobodyさん
2009/03/18(水) 04:41:39ID:O+T5YpCdsessionにConditions入れて、beforeFilterとかで、controllerとaction
みて、sessionを破棄とかしてた時期もあった。
0056nobodyさん
2009/03/18(水) 11:04:58ID:???購入者名 商品名
________
購入者A 商品A
購入者A 商品B
購入者A 商品C
購入者B 商品A
購入者C 商品A
購入者C 商品B
というようなテーブルから商品AとBを買った購入者だけ取るのって難しくないですか?
AもしくはBなら簡単に出せるのですがandとなると
商品名がAかつBという行が存在出来ないので取れないんですよね。
005753
2009/03/18(水) 12:10:57ID:???ページネーションとかは問題ないですね。
フォームを出力したあとにjavascriptなどで変更してしまうと、
フォームヘルパーが出力したトークンと一致しなくなるので、
トークンチェックに引っかかってしまうわけです。
原因はわかるんですが、対処法が・・・
0058nobodyさん
2009/03/18(水) 21:41:22ID:???作りたいのですが、
cakeで実行するのに、どのような方法が便利か、
あれば教えてもらえませんか?
quickformでやろうとしたのですが、
DBから検索して配列に突っ込んで、と
あまりスマートにできません。
0059nobodyさん
2009/03/19(木) 03:39:36ID:L7hopyy3量が少ないなら、データ全部JSONで吐いて処理するけど、
多いなら普通選択されたキーをAJAXで渡して、JSONでとって、次のセレクトの中身入れ替える。
jqueryならかなり簡単。
0060nobodyさん
2009/03/19(木) 08:55:11ID:???0062nobodyさん
2009/03/19(木) 17:59:32ID:???0065nobodyさん
2009/03/20(金) 07:03:07ID:???0066nobodyさん
2009/03/20(金) 07:13:57ID:???0067nobodyさん
2009/03/20(金) 08:24:36ID:???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:???「標準」って良いかなあ???
CakePHP1.2から「Emailヘルパー」が標準になったけど、安心して使えないのでひどい目に
あった。安定稼働させる為にあれこれ調べメチャ手を取られた。
結局「Qdmail使うしかない。」の結論になった。
CakePHPは、部品が簡単に追加できるから、良い部品を追加して使う方がしあわせになれる
のでは?
0070nobodyさん
2009/03/20(金) 10:26:20ID:???0071nobodyさん
2009/03/20(金) 16:28:56ID:???Email関連ツールがCakePHPの標準装備となった点はユーザとして喜ばしい事であるよね。
しかし、実際に使って見るとマルチバイト文字を使う所で制約が大きかったり、使えなか
ったりする所があり「なんだEmailコンポーネント使えねージャン。」と言う事になって
いる。しかし、本来は標準装備された事はありがたい事なので、我々マルチバイト文字文
化圏の人間が、CakePHPメンバに協力し、CakePHP1.2のEmailコンポーネントがマルチバイト
文字でも正しく動くように改良出来ればいいんだよね。
(ただし、誰がやってくれるのか?の問題があるけど)
0072nobodyさん
2009/03/20(金) 16:46:34ID:???ま、拡張は楽だけど。
0073nobodyさん
2009/03/20(金) 18:10:29ID:???たとえば、
あるUserが投稿したPostの一覧を表示するアクションがあるとすると、
そのアクションはUsersControllerとPostsControllerのどちらに実装するものなのでしょうか?
MVCをはじめて間もないので・・・
よろしければ理由と一緒に教えていただけないでしょうか?
また、参考になる書籍やページがあればそれも教えてください。
0074nobodyさん
2009/03/20(金) 18:20:40ID:???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
007573
2009/03/20(金) 18:28:42ID:???すべてのPostの一覧ならばそうするのですが、
「あるUserが投稿したPostの一覧」の場合にどうしようかと思いまして・・・
0076nobodyさん
2009/03/20(金) 19:22:42ID:???どんなURL(controllerとactionと引数)になるかを考えてみよう
/posts/index/user_name or /posts/list/user_name
/users/posts_list
のどちらかになる
postの一覧から特定のユーザーのpostを表示するのならPostsControllerで
ログインしたユーザーが自分のpostを一覧するとかなら、後者でもよいと思う
007776
2009/03/20(金) 19:28:07ID:???/posts/mylist
でPostsControllerで実装してもよい
0078nobodyさん
2009/03/20(金) 19:29:15ID:???画像のプロテクトできる?
0082nobodyさん
2009/03/21(土) 11:34:24ID:7xjpEJ1gContactテーブルと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の最新版なのですが。
0084nobodyさん
2009/03/21(土) 15:08:18ID:???画像のプロテクトの意味がよくわからないけど printscreenで取られないようにってこと?
それだったらどうやっても無駄だよ。
最終手段はデジカメ撮影でパクられるから。
0086nobodyさん
2009/03/21(土) 16:12:37ID:???OSの機能いじるって事だがな
そこまでやるのかって話だろ
0088nobodyさん
2009/03/22(日) 22:51:16ID:???結構知らないメソッドとかあるんだなぁ。
早く1.2正式版対応のを出してくれ!
0089nobodyさん
2009/03/24(火) 10:19:40ID:VfITkfEn皆さんはどのへんにメリット感じてこちらを選んだんですか?
0090nobodyさん
2009/03/24(火) 10:48:10ID:???0092nobodyさん
2009/03/25(水) 11:45:22ID:???安藤 祐介 (著), 岸田 健一郎 (著), 新原 雅司 (著)
http://www.amazon.co.jp/dp/4839930651/
発売日: 2009/4/8
0093nobodyさん
2009/03/25(水) 11:47:53ID:???■目次
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:???バリデーションが正常に機能していることが確認できるところまでできました。
しかしview側にエラーメッセージが表示されません。
ぐぐったら $form->error('Model.field') を使う、とありましたが、表示されません。
$form->input() のoption配列のerrorも指定していません(のでエラー出るはずですよね?)
validate()を実行するだけではエラーメッセージをビュー側で使えないのでしょうか?
0097nobodyさん
2009/03/25(水) 18:00:52ID:???はい、指定されています。
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/以下におかないとダメなのでしょうか?
複数ページにログインフォームを置きたいのです。。。
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:???アクションごとに取ってきたい条件や、フィールドが違う場合どうするのが賢いの?
バインドしまくるのもなんか変な気がするし。
モデル作りまくればいいのかね
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 を使いたくないのです。管理画面と一般画面とで
バリデーションを変えるために、モデルを独立させたいのが主な理由です。
0108nobodyさん
2009/03/29(日) 18:39:50ID:???調べても出てこなかった
0109nobodyさん
2009/03/29(日) 22:30:44ID:???0110nobodyさん
2009/03/29(日) 23:11:16ID:???0112nobodyさん
2009/03/30(月) 01:28:40ID:???0113nobodyさん
2009/03/30(月) 01:55:47ID:???意識したことなかったけど、
どういう時に制限されるんですか?
0114nobodyさん
2009/03/30(月) 02:46:48ID:???更新日時はmodified
別に規約無視して自分で手動で突っ込んでもいいけど
0115nobodyさん
2009/03/30(月) 06:28:38ID:???0116nobodyさん
2009/03/30(月) 11:12:14ID:???だからid二つ作りたい時にどうするの?って聞いてるんだけど
user_idを二つ置くわけにはいかないでしょ?
外部キーって普通他テーブルのidにしか張らないよね
0117nobodyさん
2009/03/30(月) 11:13:32ID:???0118nobodyさん
2009/03/30(月) 11:30:06ID:???0119nobodyさん
2009/03/30(月) 12:01:42ID:???0120nobodyさん
2009/03/30(月) 12:47:34ID:???associationを自分で書いて、foreignKeyに好きなfield's nameヲ設定シロ。
∴ foreign keyの命名ruleは、実質存在しない。
命名rule気にするときは、bakeする時
0121nobodyさん
2009/03/30(月) 12:50:55ID:???例えばrecursive=1で検索したときに、
b_id1とb_id2があったら
2つのBモデルが結果に含まれるのか?って話をしてるんだけど。
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:???cakephp 1.1 はもっさり動作でサイト作った後キャッシュやらんと使い物にならんかったが
cakephp1.2 だとキャッシュしなくても全然イケル。
こりゃいい!
0130nobodyさん
2009/04/03(金) 11:08:47ID:???戻り値が
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の時にもちゃんと列を取得してもらうにはどうすればいいのかな?
0133131
2009/04/05(日) 01:20:53ID:???キャッシュのクリアはやってるつもりなんだけど、
合ってるのかわからん。
これでいいんだよね。
$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:???Modelのsaveメソッドでは条件が合えば自動でキャッシュをクリアしてる。
自前でテーブル足すとかしたらこれが効いてないんでしょうかね。
Modelクラスのソースのsaveメソッドの最後の方ででてくるから参考にしてみては。
0136nobodyさん
2009/04/05(日) 09:47:10ID:???}
0137nobodyさん
2009/04/05(日) 09:49:49ID:???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:???echo '処理1';
}
じゃだめ?
1行にしただけだけど。
0139131
2009/04/05(日) 11:07:23ID:???解決しました!!
ありがとう!!
仰ってた通りModelクラスの最後の方の
_clearCache()を見てたら判りました!
似たような事やる方がいらっしゃるかもしれないので、
解決した方法を書いておきます。
私はバカでただのゴミ野郎なので、
判りづらい事書いちゃったらすんません。
cakePHPは現時点最新の1.2.2.8120。
まず、アプリ名\cake\libs\model 内のmodel.phpから
_clearCache() が怪しいと睨む。
同ソース内のsaveメソッド最後の方の
$db->delete($this)
辺りで、
$this->_clearCache();
こんな感じで_clearCache()が引数無しで呼ばれたりしてる。
_clearCache()、やってる事はよく判らんが、
最終的に
clearCache($assoc);
っていうのをやってる。
次に続く・・・
0140131
2009/04/05(日) 11:09:46ID:???$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、本番のさくらサーバ環境、ともに出来てる事を確認。
以上です!
長々と失礼しますた〜。
さー!次は携帯用の表示、振り分け方法を考えないと!!!
0142nobodyさん
2009/04/05(日) 14:41:48ID:???一件に纏めてpaginate compornentしたいのですが
これはcakeではどのように書けば良いのでしょう?
ヒントを頂けると有難いです
0143nobodyさん
2009/04/07(火) 04:31:48ID:???並び順をモデルのデータから自動的に行う方法ってある?
例えばorderフィールドを作っておけば自動的に参照するとか。
0144nobodyさん
2009/04/07(火) 06:31:21ID:???0145nobodyさん
2009/04/07(火) 06:32:54ID:???0146nobodyさん
2009/04/07(火) 06:34:05ID:???find時またはformヘルパーで自動的に解釈してくれる機能は無いのかなと
0147nobodyさん
2009/04/07(火) 12:44:21ID:???0148nobodyさん
2009/04/07(火) 13:21:48ID:???0149nobodyさん
2009/04/07(火) 14:22:06ID:???デフォルトのデザインダサいので変えたいのですが、どうすればいいのですか?^^;
0154nobodyさん
2009/04/07(火) 20:21:23ID:???フォルダで階層化してもclass名とか衝突するからうざいよね。
0155nobodyさん
2009/04/07(火) 20:36:59ID:???そもそもフレームワークの枠組みの中でしかクラス作らないし
0156nobodyさん
2009/04/07(火) 21:15:02ID:???コアのクラスにはCake〜とかプレフィックス付けといてくれればいいのに。
0157nobodyさん
2009/04/07(火) 23:56:01ID:???paginateのcompornentを使ったときに、
group byで纏めたデータが何件あったのか、sqlで書くところの
from *, count(data) as countみたいのをやりたいのですが、
どういう項目に書けばいいのでしょう??
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:???0164nobodyさん
2009/04/08(水) 06:25:51ID:???0165nobodyさん
2009/04/08(水) 06:56:54ID:???0166nobodyさん
2009/04/08(水) 13:00:36ID:???全文検索したいんだけど。スフィンクスは使いたくないんだよね。
CAKEだけで全文検索をスマートにやるやり方を!!
0167nobodyさん
2009/04/08(水) 13:02:29ID:???views/layouts/以下に、default.ctpを作って、好きなようにHTMLを書く。
その、default.ctpが優先的に呼ばれるようになる。
0168nobodyさん
2009/04/08(水) 13:50:09ID:MhIiLyHNLIKE句じゃ駄目ずらか?
0171nobodyさん
2009/04/08(水) 16:53:26ID:???データベースのアクセス速度は越えられないわけで
0172nobodyさん
2009/04/08(水) 17:01:13ID:???MySQLならLIKE検索とFULLTEXT_INDEXを使った検索では何十倍も速度が違うぞ。
>>166
>>CAKEだけで全文検索をスマートにやるやり方を!!
NamazuなりLuceneなりを使うしかないんじゃない?
0173nobodyさん
2009/04/08(水) 17:16:31ID:???というか汎用的なものじゃないとフレームワーク使う意味ないので
0174nobodyさん
2009/04/08(水) 17:16:53ID:???ですよねー。
でもレンタルサーバ等でそういったものを
インストール出来ない環境が多いんでなんとかしたいんですよね。
今さくっとNgramで全文検索用作ったけどinodbとmyisamが混じって気持ち悪いし
トランザクション効かないしで><
0176nobodyさん
2009/04/08(水) 17:26:12ID:???○○%は速くても
%○○や
%○○%はシーケンシャルアクセスになりオンデマンドサービスで使えるものじゃない
0177nobodyさん
2009/04/08(水) 17:27:30ID:???レンタル鯖で入れられないならRDB標準のを使えばそれまでだろ。
標準のはテーブル越しのインデックスが作れなかった気がしたがな
0179nobodyさん
2009/04/08(水) 18:11:52ID:???$ret = `find . -type f | xargs grep あああ`;
0180nobodyさん
2009/04/08(水) 18:12:55ID:???質問者はMySQLなんて一言も言ってないのにMySQLの話をし出したから
誰もMySQLとは言ってないという指摘になったわけで
0181nobodyさん
2009/04/08(水) 18:52:51ID:???> >>178
> 質問者はMySQLなんて一言も言ってない
からこそ、RDBMSの具体例としてMySQLを挙げたんじゃないか?
君は集合の概念があまりわかってないみたいだね。
0182nobodyさん
2009/04/08(水) 19:47:21ID:???0183nobodyさん
2009/04/09(木) 00:24:09ID:GNSodjfY0184nobodyさん
2009/04/09(木) 00:50:39ID:???0186nobodyさん
2009/04/09(木) 19:23:23ID:???0187nobodyさん
2009/04/10(金) 01:41:28ID:TR2k1lyd0188nobodyさん
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:???と言うか本家のコアクラスで同じ事ができないのかを考えるべき
継承してAppつけるのも良い
0191189
2009/04/10(金) 22:27:15ID:???いえ、ライブラリじゃなくて、モデル名なんですよ。
フォームに
name="data[MyFile][hoge]"
とか表示されるのは、なんかかっこ悪いので・・・
symfonyはコアのクラスにはsfってついてるのになぁ・・・
0194nobodyさん
2009/04/10(金) 23:18:39ID:???意味的にはっきりしてる
0195nobodyさん
2009/04/11(土) 02:37:51ID:1ZQJOiPgOurとか
0196nobodyさん
2009/04/11(土) 13:10:59ID:???この実践本いいよね。
安い中古商品でたら買う予定。出たら教えてチョ
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:???わざわざコントローラに
$this->pagenateでパラメータを指定すると行数が増えてしまいますし、
データの取得はなるべくモデルでしたいと思いまして。
0199nobodyさん
2009/04/12(日) 08:57:33ID:???$this->paginateと言うプロパティがあるんだな。
これじゃあ、$this->paginate()の関数ポインタ使う場合どうしたら?とか思ってしまう。
ところでモデルからコントローラを使う手段は無かったと思うから
やるならコンポーネントだと思う
0200nobodyさん
2009/04/12(日) 09:05:50ID:???パラメータのほうは Controller::paginateParam とかにしてほしいね。
ぱっと見、わかりにくいし。
というか、findみたいに、毎回指定する方法じゃだめだったんだろうか?
>>198
モデルからコントローラをインポートすればできそうだけど、
そこまで無理をする必要はないかと。
0201200
2009/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に入ってくれない・・・
なにか良い方法ないかしら?
0203nobodyさん
2009/04/12(日) 10:27:59ID:???1.app_controllerでmyPaginate()を定義、paginate()をラップ
2.myPaginate()内でModel->paginateParamを取得する
3.各モデルにpaginateParamを定義
ただ、paginateのパラメータはモデル毎じゃなくてコントローラ毎に発生するものだと思うけどね。
もしやりたいというならこういう設計もあると言う事で。
0204nobodyさん
2009/04/12(日) 10:44:26ID:???用意されてるのに、わざわざ自前でやる理由を知りたいなぁ。
もしかして、ログイン処理とかも自前?
>>203
>>paginateのパラメータはモデル毎じゃなくてコントローラ毎に発生するものだと思うけどね。
同意見ですね。
ほかで使いまわすことも少ないだろうし。
0205203
2009/04/12(日) 11:25:52ID:???orderとかlimitが指定されていなかった場合に自動的に補完する、と言う程度が良いと思う。
コントローラ側から上書き可能な形にしておけば、やって損と言う事は無いと思う。
あまりコード量は減らないし構造が複雑化するからお勧めしないけどね。
0206nobodyさん
2009/04/12(日) 14:46:32ID:???ありがとうございます。
paginate用コンポーネントにpaginateのプロパティを書いて
$this->コンポーネント名->メソッドで呼び出すことにしました。
コントローラーがすっきりして良いですね。
0207199
2009/04/12(日) 14:50:45ID:???コントローラではそのままcontroller->paginate()を呼び出すかな
0208nobodyさん
2009/04/12(日) 14:51:35ID:???0209nobodyさん
2009/04/13(月) 07:04:51ID:???202じゃないけどログイン処理は自前でやってるよ。
他は全てライブラリやコンポーネント使うけど、authコンポーネントは苦手。
0210nobodyさん
2009/04/13(月) 07:36:02ID:???0211nobodyさん
2009/04/13(月) 07:47:40ID:???MVCの仕組みだけと言うべきかな
Authは最新版なら有用だと思う
というか自前でセキュリティホールの無い認証機構作るとかめんどくさすぎるから
0212nobodyさん
2009/04/13(月) 09:32:33ID:???それは誰に対していってるの?
全部Cakeの機能で賄おうとしてる人に対して?
私は >>211 に同意です。
0213nobodyさん
2009/04/13(月) 12:58:49ID:???> authコンポーネントは苦手。
その気持ち分かります。
以前、Authコンポを使って、グループ毎にログイン後のアクセス画面を変えるというのを作ったけど、
loginRedirectプロパティを書き換えたページ振り分けが上手くいかなくて苦しんだ。
※最初のユーザをログアウトして、別のユーザでログインすると何故か最初のユーザの画面が表示されてしまう...
結局、loginRedirectのプロパティ値は、Sessionに含まれ続けるという事を知って、
ログアウト毎にセッションをクリアすることで上手くいくと思ったのだが、上手く行かず...
結局、autoRedirectしないようにして、グループ情報を確認後に改めてリダイレクトするようにして対応した...orz
0214nobodyさん
2009/04/13(月) 13:49:00ID:???特にパラメータによって頻繁に情報が変わる検索ページとか。
0215nobodyさん
2009/04/13(月) 16:02:37ID:???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表示されるページに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という変数の中身が鍵らしいというところまでは
分かったんだが、それ以上が何とも。
誰かご教示頼む。
0217216
2009/04/13(月) 18:54:34ID:???.htaccessがコピーされてないだけだった('A`)
0218nobodyさん
2009/04/13(月) 22:52:24ID:???わかる。フレームワークの機能をどうしても利用しようとして、少しのことでもこだわり過ぎて
逆に効率が悪くなるという。
>>213
気持ちわかってくれてうれしい。同じ人もいたんだ。絶対否定されると思ったけど^^
>>214
自分は3つくらいのサイトをcakephpで作ったけど、ひたすらプラグインにまとめてデザイン無しのページを作り、
それを元にして新たなサイトを構築していってる。
プラグインにまとめまくると普通のコントローラーやビューがごちゃつかないのでいいよ。
特にユーザーログイン、画像アップデート、プロフィールアップデートなどをプラグイン化しておくと、
新たなサイト作ったときもその機能を作らなくても良いので楽。
以前このスレで 慣れるとビヘイビアが多くなる って人がいたけど、今は自分もビヘイビアを多く使うようになってきた。
0219nobodyさん
2009/04/13(月) 23:01:54ID:???プラグイン多用しているということで聞きたいのですが、
たとえばユーザー管理の仕組みをUserプラグインにまとめると、
モデル名にプラグイン名がついて、UserUserモデルになってしまって不恰好なのですが、
どうされてますか?
他にもCommentプラグインのCommentCommentモデルなど・・・
とにかくモデル名が長くなってしまって困っているんですが・・・
あと、そのCake製のサイト見てみたいです。
・・・2chで晒すのはアレですかね?
0220nobodyさん
2009/04/14(火) 09:12:22ID:???218じゃないけど、Userみたいなのはプラグイン名にしない。
もうちょっとまとめたもの、例えばMeiboみたいなのを付ける。
0221nobodyさん
2009/04/14(火) 12:23:38ID:???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'
);
どうかよろしくお願いします。
0223nobodyさん
2009/04/14(火) 18:56:14ID:???ug プラグインにしてる。で、あとはroutes.php でルーティング。
これだとパスとか関係ないのでイイと思う。逆にルーティングを使わないと
パス名長すぎてかっこわるくなるね。
0224221
2009/04/14(火) 21:27:15ID:???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:b4g3iQJt0226221
2009/04/15(水) 12:57:21ID:???とりあえず去年の2月の時期で未サポートという情報は見つけました。
手を抜かずにmysqlを使うことにします。
お騒がせいたしました。
0227nobodyさん
2009/04/15(水) 13:53:06ID:???0228nobodyさん
2009/04/15(水) 15:27:53ID:???機能をPHPモジュールで実装して
PHPのコンパイルオプションで選ぶようにするとか
あるいはyumのパッケージをAPIごとに分けて欲しいやつだけ入れるとか
そういう方法で対処するのが一番楽で高機能だと思うがな
0229nobodyさん
2009/04/16(木) 14:44:00ID:???話があったと思うんだけど、どうなったの?
0230nobodyさん
2009/04/16(木) 21:11:24ID:???0231nobodyさん
2009/04/16(木) 23:13:26ID:???やり方を知っている方がいたら教えてください?
コントロール内で
$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:???こんなのがあったよ。
CakePHP1.2 で sqlite3 を使用するには
ttp://blog1.atcms.jp/chuno/index.php?UID=1236462644
0234nobodyさん
2009/04/21(火) 15:14:47ID:???ちょっと前の勉強会だとbake使ってる人はほとんどいなかったのに、最近は違うのか?
0235nobodyさん
2009/04/21(火) 15:18:56ID:???というかモデル追加するたびに手書きでコントローラとか書いてたのか?
0236nobodyさん
2009/04/21(火) 15:24:47ID:???もちろん読みこめば何をやってるのかわかるんだけどさ。
自分は基本的にコードは手書きだよ。
0237nobodyさん
2009/04/21(火) 15:26:55ID:???0238nobodyさん
2009/04/21(火) 15:31:48ID:???ただ、普段の開発手法と違うから読みにくいというだけで。
普段Linux環境だからWindows環境で書かれてるのがわかりづらいとか、
そういうくらいのレベルの話だよ。
0239nobodyさん
2009/04/21(火) 16:07:29ID:???ぜんぶdefaultで、とにかく作成しちゃうモードがあればいいなとおもう
0240nobodyさん
2009/04/21(火) 16:16:48ID:???0241nobodyさん
2009/04/21(火) 17:49:53ID:JXH2p/YIscaffoldに固執しすぎてバッドハック的な事をしてるのが気になった。
cakeの仕様の変わりっぷりを考えると、後々まで使える手法じゃない可能性が高いし
0242nobodyさん
2009/04/21(火) 17:51:19ID:???0243nobodyさん
2009/04/21(火) 18:53:24ID:???という、scaffoldのままでいいコントローラってあまりないよね。
0244nobodyさん
2009/04/21(火) 21:03:12ID:???そもそもimportで読み込んだコンポーネントってstartup()とか動作するのかな?
単にimportを呼び出したスコープ内でメソッドが使えるだけ?
0245nobodyさん
2009/04/21(火) 21:19:09ID:???0246nobodyさん
2009/04/21(火) 21:38:59ID:???initialize()すら呼ばれないね。
コンポーネント内でApp::importした場合って、
initialize(&$controller)の$controllerにセットされないよね?
コンポーネント内ではimport出来ないの?
0247nobodyさん
2009/04/21(火) 21:45:39ID:???0248nobodyさん
2009/04/21(火) 23:44:48ID:???Amazonで2,740円(=2,400+340)の中古本が出たので即購入。ラッキー
(会社で新品書籍を購入すると10%offという人多いのかなあ?うらやましい)
0249nobodyさん
2009/04/22(水) 00:27:07ID:???協力会社の人も含めて
0250nobodyさん
2009/04/22(水) 04:16:17ID:???10%オフって・・・。
会社通して仕事の本買えば会社は全額経費になるのにひどい話だな。
俺が以前いた会社は全額経費で落としてくれた。
0251nobodyさん
2009/04/22(水) 04:28:09ID:IoF1Kk6A本当にこういう社会人がいたのか
ショックだ。
0254nobodyさん
2009/04/22(水) 15:40:08ID:???会社の本ではなく、自分の本にしたい。
0255nobodyさん
2009/04/22(水) 20:15:15ID:???個人で給与天引きで購入しても10%offだよ。
(書籍は何でもOK、子供の参考書でもOK)
書籍はどちらも職場に届く。
0256nobodyさん
2009/04/22(水) 20:43:15ID:???注文すれば多分エロ本でも10%OFFだと思う
0257nobodyさん
2009/04/22(水) 20:57:55ID:???サラリーマンのスレッドとなります。
0258nobodyさん
2009/04/22(水) 21:15:22ID:???0259nobodyさん
2009/04/23(木) 07:10:35ID:???また大企業だけの特権か?
0260nobodyさん
2009/04/23(木) 13:20:27ID:???0262nobodyさん
2009/04/25(土) 12:06:35ID:???debug=0の時にエラー出さないけど
ファイルにはエラーを出力するってどうやんの?
0263nobodyさん
2009/04/25(土) 12:14:00ID:???http://book.cakephp.org/ja/complete/157/
ログの記録
0265nobodyさん
2009/04/25(土) 17:26:55ID:???デフォルトでSession.startをfalseにして、
コントローラーによってtrueにしたりDBか/tmp保存に
切り分けたいのですが、何か良い方法はありますか?
0266nobodyさん
2009/04/26(日) 00:51:40ID:???frame src に同じコントローラーの別々のアクションを指定したいんですが、
どう書けば良いんでしょうか?
0267nobodyさん
2009/04/26(日) 10:36:52ID:???みんなはどうしてる?
0270nobodyさん
2009/04/26(日) 15:58:15ID:???話があったと思うんだけど、どうなったの?
0271nobodyさん
2009/04/26(日) 17:48:54ID:???果たしてOracleがやってくれるかどうか・・・。
0272nobodyさん
2009/04/26(日) 22:30:08ID:???ヘルパーに追加してる人とかっている?
0273nobodyさん
2009/04/27(月) 01:33:20ID:???'秋田'=>'秋田', '山形'=>'山形', '福島'=>'福島', '茨城'=>'茨城', '栃木'=>'栃木', '群馬'=>'群馬',
'埼玉'=>'埼玉', '千葉'=>'千葉', '東京'=>'東京', '神奈川'=>'神奈川', '新潟'=>'新潟', '富山'=>'富山',
'石川'=>'石川', '福井'=>'福井', '山梨'=>'山梨', '長野'=>'長野', '岐阜'=>'岐阜', '静岡'=>'静岡',
'愛知'=>'愛知', '三重'=>'三重', '滋賀'=>'滋賀', '京都'=>'京都', '大阪'=>'大阪', '兵庫'=>'兵庫',
'奈良'=>'奈良', '和歌山'=>'和歌山', '鳥取'=>'鳥取', '島根'=>'島根', '岡山'=>'岡山', '広島'=>'広島',
'山口'=>'山口', '徳島'=>'徳島', '香川'=>'香川', '愛媛'=>'愛媛', '高知'=>'高知', '福岡'=>'福岡',
'佐賀'=>'佐賀', '長崎'=>'長崎', '熊本'=>'熊本', '大分'=>'大分', '宮崎'=>'宮崎', '鹿児島'=>'鹿児島',
'沖縄'=>'沖縄')
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:???ってとき
$this->paginate = array(
'limit' => 10,
'page' => 1
);
$this->paginate['order']['modified'] = 'desc';
$this->paginate['order']['stamp > '] = 0;
じゃうまく動かない。
誰かうまい方法ご存じですか?
0277nobodyさん
2009/04/27(月) 16:54:40ID:???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:???セッション使うと、別windowで立ち上げたときに変な挙動になるんだよね。
できればGETの引数でやりたいんだけど、ググった限りだとセッション使う方法しかみつからなかったんで。
0282nobodyさん
2009/05/01(金) 20:45:13ID:???cakephp使う上で、問題無い?
それとも、途中でPEARの知識が必要になる?
0283nobodyさん
2009/05/01(金) 21:59:24ID:???PEAR使わずにcakephpだけでOKだよ。
途中で「やっぱりPEAR必要だった。」って言うことはないと思う。
ネットに公開されている便利部品を使って実現。という事は
多々発生すると思うよ。
0284nobodyさん
2009/05/01(金) 23:35:11ID:???「cakephp用の部品です」
って形で公開されてるの?
0286nobodyさん
2009/05/02(土) 00:25:41ID:???0288nobodyさん
2009/05/02(土) 01:25:28ID:???セットアップしないと動かなかったよ?
0289nobodyさん
2009/05/02(土) 01:26:14ID:???モデルとビューとコントローラーの
3つを書かないとだめなんだね?
0290nobodyさん
2009/05/02(土) 01:30:44ID:???$uses = array();
でモデルいらねーっての
0291nobodyさん
2009/05/02(土) 01:41:25ID:???<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:???0294nobodyさん
2009/05/02(土) 08:10:57ID:???入門書: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:???ttp://d.hatena.ne.jp/i_ogi/20090418/1240044385
0297nobodyさん
2009/05/02(土) 13:33:45ID:???あとpage:1とかの:が予約語なんでhtmlチェックとかしたら
怒られるんですよね。
コアライブラリいじるとアップデートの時変更忘れそうだから治して欲しい門です><
0298nobodyさん
2009/05/02(土) 21:13:12ID:???向いているわかりやすい入門書教えてください
0299nobodyさん
2009/05/02(土) 21:57:58ID:???これってなんで
アマゾンでC++のカテゴリに入れられてるの?
0300nobodyさん
2009/05/02(土) 22:38:49ID:???CakePHP → CPP
0302nobodyさん
2009/05/03(日) 00:41:38ID:???0303nobodyさん
2009/05/03(日) 08:02:54ID:???あくまでも個人的意見として
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 はこんな所が素敵だよ」と背中を押す一言を頂けたら幸いです。
0306nobodyさん
2009/05/03(日) 21:55:39ID:???cake → 無料のサーバーでも動く
0307nobodyさん
2009/05/03(日) 21:56:34ID:???あとはこのグラフを見れば一目瞭然
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:???レスありがとうございます。
やはり稼働環境の敷居という点が大きな違いですね。
>>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:???趣味: Rails
でいいじゃん。面倒くさいな
0311nobodyさん
2009/05/04(月) 01:54:49ID:???同じ品質のサーバでうごかすならどっちも5000円だけどな
0312nobodyさん
2009/05/04(月) 02:07:36ID:???0313nobodyさん
2009/05/04(月) 08:03:49ID:Tn5a5ZIs0314nobodyさん
2009/05/04(月) 19:42:43ID:???0316nobodyさん
2009/05/04(月) 21:29:58ID:???開発は初心者でも検索の初心者ではないだろ?
http://www18.big.or.jp/~fujiwara/ikki/hidemaru/
0317nobodyさん
2009/05/04(月) 22:10:28ID:???0318nobodyさん
2009/05/04(月) 22:11:10ID:???って打つと、なにもしないのに、勝手に
}
って出てくる。最初はまじでびっくりする。
0319nobodyさん
2009/05/04(月) 22:38:44ID:???Event a+=
まで書いてタブ押したらハンドラ登録からハンドラメソッドの雛形まで出してくれるのを考えると
PHPの開発環境はやっぱり貧弱だけどね
0320nobodyさん
2009/05/04(月) 23:18:02ID:???PHPユーザがZendに還元してる金なんてたかが知れてるし
0321nobodyさん
2009/05/05(火) 00:48:15ID:???>>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:???http://hide.maruo.co.jp/swreg/price.html
0325nobodyさん
2009/05/05(火) 09:59:08ID:???今はどうか知らないけど
0327nobodyさん
2009/05/05(火) 15:19:29ID:???「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:???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:???0333nobodyさん
2009/05/09(土) 23:14:46ID:???http://www.amazon.co.jp/dp/4839930651/
これを買うのが今なら一番だろう。
0334nobodyさん
2009/05/10(日) 09:48:31ID:???ビデオで学ぶ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する必要がありますか?
0342131
2009/05/12(火) 06:50:00ID:???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番目。
思いっきりバグがあるとか書いてあるし、
確かにその通りやっても上手く出来なかった。
次に続く・・・
0343131
2009/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でインライン要素にしてます。
次に続く・・・
0344131
2009/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:???0346nobodyさん
2009/05/14(木) 00:55:00ID:???0347nobodyさん
2009/05/14(木) 02:03:18ID:???こんなとこに書いてもすぐdat落ちするし再利用性無い
0348nobodyさん
2009/05/17(日) 17:53:26ID:???モデル名で取得する方法ってありますか?
0349nobodyさん
2009/05/17(日) 18:51:58ID:oOtRNQgA吐かせるにはどうしたらいいんでしょうか?
http://www.syuhari.jp/blog/archives/168
この辺を参考にafterFilterで文字コード変換しているのですが、エラーページの場合は
app_controller通らないので、UTF8のまま表示されてしまいます
(html側のエンコード指定はSJISなので、文字化けした状態です)
0350nobodyさん
2009/05/17(日) 18:54:10ID:???どうしてもsjisにしたいならapacheで設定する
方法は2つ
1.404時の出力ファイルをPHPスクリプトにする
2.404時のヘッダのエンコード設定をsjisにする
検証はしていない
0351nobodyさん
2009/05/17(日) 21:26:25ID:???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:???じゃあsjisにすればいいんじゃないの?
404ページはapacheがデフォルトで持ってるhtmlファイルが出てるだけでしょ
0354nobodyさん
2009/05/17(日) 22:38:31ID:oOtRNQgAcakephpの404ページはviews/layout/default.ctpの中に
views/error/error404.ctpが入ったモノが表示されるはずです・・・
0355nobodyさん
2009/05/18(月) 01:07:59ID:???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で上書きすりゃえんじゃね。
0357nobodyさん
2009/05/18(月) 20:26:30ID:???そのアクション中でcontroller->set()されたものがビュー(エレメント)内で使えない。
これは元のコントローラでセットしろと言う事?
コードのまとまりが悪くなっちゃうと思うんだけど。
0358357
2009/05/18(月) 20:27:41ID:+BNQiVp5requestAction()の呼び出し元のビューでもそうだし、
そのエレメント内でもそう。
つまりrequestAction()で呼び出されたアクション中ではcontroller->set()が機能してないって事だと思う。
0359357
2009/05/18(月) 20:45:14ID:+BNQiVp5ビューから
View->element(hoge,array('hoge'=>View->requestAction()));
と言う形でエレメントを描画しようとしたら
この形で呼び出したrequestActionではエレメントでも呼び出し元ビューでも
set()された変数がundefinedになるというもの。
requestAction()はコントローラからも呼び出せるが
MVC的にはビューから呼び出すのが正しいはず。
0360357
2009/05/18(月) 20:51:41ID:???element()の引数で渡すか完全にレンダーして返せと言う事か
とりあえずやりたい事は出来そうお騒がせしました
0361nobodyさん
2009/05/18(月) 21:06:16ID:???0362nobodyさん
2009/05/18(月) 21:07:00ID:???0363nobodyさん
2009/05/19(火) 03:27:27ID:???0364nobodyさん
2009/05/19(火) 20:44:37ID:???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:EQ1qWtUAhttp://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:???0368nobodyさん
2009/05/20(水) 19:42:48ID:???app_modelにバリデーション処理を書いて、
コントローラーで普通にcopyすればいいんじゃない?
私はそうしてるけど。
0369nobodyさん
2009/05/20(水) 20:02:44ID:???何か合理的な意味があるんでしょうか?
使いにくくて仕方なかとですたい
0370nobodyさん
2009/05/21(木) 00:45:17ID:???0372nobodyさん
2009/05/21(木) 11:51:39ID:???コンディションっつうのはつまりプライマリキーのことです
find の感覚で、第1引数にIDを渡しちゃうんです。
まぁ、慣れればどってこと無いのかもですが。
それに、column を指定しないことはあっても id を指定しないことなんて
滅多と無いんだから、普通に考えたら id を第1に持ってきそうな
気がするんですよ。
だけど、それは私がよく知らないからであって、ひょっとしたら深い意味があるのかなと。
0373nobodyさん
2009/05/21(木) 12:31:53ID:???idは事前に$this->Model->id = xx とかで指定しておくと第2引数のidも省略可でしょ。
そうなるとreadメソッドにとって大事なのはむしろfieldの方である。
とかそんな感じなんじゃないすかね。
0375nobodyさん
2009/05/21(木) 23:32:33ID:???1.2と
めちゃめちゃ違うの?
1.1の本、買っちゃったんだけど?
0376nobodyさん
2009/05/22(金) 00:16:48ID:???実際使ったことないけど、その界隈のブログだとか、スレ読んでると、かなり違うっぽいけど。
RCと正式版とも結構違うとか書いてあったような。
1.1でアプリケーションを組みつつ、1.2の違いを調べながら、問題あるようなら1.2の本買えば?
0377nobodyさん
2009/05/22(金) 00:40:30ID:???まあ基本の動作はそんなに変わってないだろうけど、
1.1で普通にやってたことが1.2では非推奨になってたりとか、
一所懸命なんか作ったはいいけど、1.2なら最初っからその機能あるじゃん。みたいなことはあるから。
まあ動きは本で学んで、あとはオンラインマニュアルで。ってのでいいかもしれんけど。
0378nobodyさん
2009/05/22(金) 01:00:50ID:???0379nobodyさん
2009/05/22(金) 02:38:39ID:kpKonnkDお金に余裕あるのなら1.2の本を買って先に読んだ方がいい
1.1を最初に学ぶと、後から学びなおしの部分が多い
0380nobodyさん
2009/05/22(金) 06:46:23ID:???> 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.2ですらそう思う場面は出てくる
内容はかなり変わってるよ
0383nobodyさん
2009/05/22(金) 13:16:01ID:???0384nobodyさん
2009/05/22(金) 15:57:38ID:???0385nobodyさん
2009/05/23(土) 21:10:11ID:???CakePHPによる実践Webアプリケーション開発(毎日コミュニケーションズ)
どっちも上でおすすめされてるけど、1冊選ぶならどっち?
ネットで調べた感じだと、秀和→初〜中級向け 毎日→中級向け なイメージ。
毎日はサンプルにエラー多数っぽい。秀和はここ以外レビューとか全然見つからない、で悩み中。
今回フレームワーク初めてで、とりあえず本家チュートリアルは問題なく分かった。
ただ実際にアプリ組もうとするとわかんないことばっかりで
Cake使わなければ2日でできるようなものに1週間弱かかったり。なんで基礎からやり直すことにした。
ポケットリファレンスは買うつもりなんだけど、あと1冊
とくに両方読んだ人、どっちにするべきか教えてちょ。
0386nobodyさん
2009/05/23(土) 21:33:00ID:???実際に使えるアプリをサンプルとして挙げているので、サンプル開発の流れがきちんと追えれば
実際のプロジェクトにも十分応用できると思う。
逆に秀和の方、1回読んだきりだ。
0388nobodyさん
2009/05/25(月) 00:22:40ID:???ログイン用のフォームを複数画面のはじっこに出しておきたいんだけど、cakeだとめんどくさいでしょうか?
おとなしくuser/loginに飛ばすのが一般的でしょうか?
0389nobodyさん
2009/05/25(月) 01:01:07ID:???別にめんどくさくないですよ。
Authでログインされてなければフォーム表示させればいいだけだから。
エレメントでも作っておけばいいです。
0391nobodyさん
2009/05/25(月) 04:48:35ID:???0392nobodyさん
2009/05/26(火) 07:44:05ID:???こういう仕様?
0393nobodyさん
2009/05/26(火) 08:04:19ID:???loginactionをコントローラ別で振り分けてやればいのね。
便利なんだか不便なんだかいまいちだなぁ。
0395nobodyさん
2009/05/26(火) 13:30:49ID:SiC5Hm3yttp://3d.rokujyou.com/cake/sample7.html
<?php echo $html->input('Urllist/url', array('size' => '40'))?>
の部分を
{$form->input('Urllist/url')}
としたのですがinput内にURLが表示されません。
cakephpのみのテストでは表示されていたのでsmartyが変な処理をしている?ようなきがします。
ご教示お願いします。
0396395
2009/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:EqLrLRVDfindでセッション情報を読みたいのですが、
dataカラムの、シリアライズされた文字列を、
アンシリアライズして配列に格納するにはどうしたらよいでしょうか?
unserialize()関数を使ってみましたが、Error at offsetというエラーが出て失敗します。
散々ググりましたが、良い手が見つかりません。
どなたか知恵を貸して下さい。
CakePHPのバージョンは1.2.2.8120で、PHPのバージョンは4.4です。
0398nobodyさん
2009/05/26(火) 19:36:17ID:???アンシリアライズできるんじゃね?
0399397
2009/05/26(火) 19:55:53ID:EqLrLRVDエンコードは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:???いま、まともに動いているプロジェクトって wildflower ぐらい?
0401nobodyさん
2009/05/27(水) 15:15:10ID:???<?php echo $form->day('DATE', null, array("disabled"=>true));?>
などとして、読み取り専用で表示されるようにしたいのです。
このような書き方で、表示上は確かに読み取り専用になるのですが、
上記を含むformのsubmitを実行すると、真っ白な画面が表示されてしまいます。
何か書き方が悪いのか、代替案があるのか、ご指導いただければと思います。
0403nobodyさん
2009/05/27(水) 15:43:24ID:???エラーが何も出ていないんです・・・。
blackHoleメソッドが呼ばれている気がするのですが、別にrequireAuthも
設定していないんですよね・・・。
0404401
2009/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);
とかになってない?
0407401
2009/05/27(水) 20:12:40ID:???Configure::write('debug', 2);
となっています。
>>406
すみません。
表示→submitの一連の流れが実行できるかという話です。
そもそもやりたいことというのが、
入力→確認→save
という一連の流れで使用するviewを同一のもので使いまわしたく、
readonly,disabledを使って表示の制御ができればいいかなと思ったのです。
暫定的に確認用のviewを用意することで回避はしますが、可能であれば
同一viewでやりたいと思っていますので、もしも情報ありましたらお教え
いただければと思います。
0408nobodyさん
2009/05/27(水) 21:22:37ID:???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:???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:???$option['conditions'] = array('NewsTag.tag_id' => $tag_id);
にしてやればいいと思うよ。
0412nobodyさん
2009/05/29(金) 02:26:31ID:???って本。
なんのために存在するのか、
まったく意味がわからない。
なにこの本。
0413nobodyさん
2009/05/29(金) 02:42:09ID:???0414nobodyさん
2009/05/29(金) 10:26:09ID:???0415nobodyさん
2009/05/29(金) 18:13:09ID:???URLはhttp://example.com/hogehoge/
で、hogehogeコントローラが呼び出されるでおk?
今試してみたんだが、ページが真っ白orz
エラー設定もconfigでできるのかな
0416nobodyさん
2009/05/29(金) 19:36:41ID:???コントローラは複数形
真っ白なのはCake設置の段階で何かが間違ってる可能性が高い
とりあえずブログチュートリアルでもやれ
0417nobodyさん
2009/05/29(金) 21:43:45ID:???0418nobodyさん
2009/05/29(金) 23:54:37ID:???Xpath使えないんだったら、普通にSimpleXML使うよなぁ・・・
PHP4でも使えるのはでかいけど。
0419nobodyさん
2009/05/30(土) 16:05:50ID:???ケータイサイト向けだと使いにくすぎる
せっかくの自動生成なのに、ケータイのアホ仕様のせいで!
>>418
SimpleXMLが十分便利なのでそっちつかっちゃうな
0420nobodyさん
2009/05/30(土) 17:20:34ID:???ここで出されてるライブラリ使ってるんだけどさ、
画像表示おかしくない?
相対URL生成する時はちゃんとRouter::url()通してくれないと
/~hoge/hugaとかに置いてる時におかしくなるんだよね。
バカなの死ぬの
0421nobodyさん
2009/05/30(土) 21:33:58ID:???使えないライブラリだと思うんなら自分で修正するか、他を探すか
1から自分で作ればいいじゃん
そんなこともできないの?
バカなの?死ぬの?
0422nobodyさん
2009/05/30(土) 22:03:05ID:???classもidもないただのspanが勝手につくの?
prevとかnextはspanなんてつかないのに
なんか気持ち悪いから消したいんだけど、第2引数にarray('tag'=>false)を
入れても<span>〜</span>が<>〜</>になって消えないし
0423nobodyさん
2009/05/30(土) 23:09:09ID:???0425nobodyさん
2009/05/31(日) 17:48:45ID:???確かにRouter::url()使わないでURL指定するライブラリを公開されると苦労するが
421や423や424の言う通り、ここで叩くお前がおかしい
バカなの?死ぬの?
0426nobodyさん
2009/05/31(日) 18:26:41ID:???0428420
2009/06/01(月) 12:36:50ID:???ここで本当に俺の言ってることがあってるかどうか確かめたかったんだ。
やっぱりRouter::url()使うのが正解なんだね。死なないよ
0429nobodyさん
2009/06/01(月) 13:38:40ID:???0431nobodyさん
2009/06/01(月) 16:46:42ID:???専門板できもい言い回し使うから叩かれるんだろうが
普通に
Router::url()使ってないからルートに置かない場合に
不便なんだけど、修正提案出した方がいいかな?
とか聞けばいいものを
0433nobodyさん
2009/06/01(月) 18:57:16ID:QwyjBfuLarray("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:???http://blog.ecworks.jp/archives/691
だそうですよ。よかったね修正してくれるって。でも直接言ってくれって。
0435nobodyさん
2009/06/01(月) 19:28:19ID:???ktailibraryの作者さんの大人な対応ぶりにはさらにビックリ。
やっぱりできるプログラマーは、違いますね!
0440nobodyさん
2009/06/02(火) 10:02:44ID:???それ以外のフォルダには以前からあるCMSのファイルやHTMLファイルがあります。
この状態で、calendar以外の場所、つまりappの外からcakeのモデルにアクセスすることは可能ですか?
0442440
2009/06/02(火) 19:04:30ID:???レスありがとうございます。
/calender にcakeをインストールしてイベント情報などを入れていて、
そのイベントのリストを別のディレクトリにあるページに表示したいんです。
feed経由やcakeを通さずに直接DBにクエリを投げる方法は思いつくのですが、
コントローラ内のアクションを通せば抽出も楽だし、
更に可能ならヘルパーやエレメントもそのまま使えないかな、と。
0443nobodyさん
2009/06/02(火) 19:33:15ID:???なんで別ディレクトリから読む必要があるのかわからないけど
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:???0445440
2009/06/02(火) 23:08:37ID:???サイト全体は既存のCMSで管理されているため、まるっとcakeにしちゃうことはできず、
/calendar 以下にappを構築して、他のディレクトリから必要に応じて使えればと考えました。
もしかすると何か根本的に考え方を間違えているのかもしれませんが…
>>443
お、なるほど。そんな手があるんですね。
画面遷移があるとまた一工夫必要っぽいですが、今回はこれでいけそうな気がします。
>>444
Ajaxで読み込むなら結構自由に何でもやれそうですね。
ただやっぱりクライアント環境に依存しないに越したことはないので、
まずは>>443の方法を試してみようと思います。
ありがとうございました!
0446nobodyさん
2009/06/02(火) 23:10:34ID:???0447nobodyさん
2009/06/03(水) 11:59:46ID:???0451nobodyさん
2009/06/04(木) 00:33:50ID:???0452nobodyさん
2009/06/04(木) 09:04:20ID:???0453nobodyさん
2009/06/04(木) 09:07:40ID:???↓
なまあたたかい
↓
ぞんざい
0454nobodyさん
2009/06/04(木) 19:04:13ID:???きれいに並べたいんだけどなんかないのですくわ
0455nobodyさん
2009/06/04(木) 20:16:55ID:???http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1874&forum=9
0458nobodyさん
2009/06/05(金) 16:59:50ID:???条件付の paginate したいときはコントローラー内で書くしかないのでしょうか。
何となく、SQL の発行とはかモデル内でやった方が良いかなぁと思うのですが、、
0460458
2009/06/05(金) 19:17:20ID:???ありがとうございます。
>>198-208
コンポーネントでやってみることにします。
私は何でもコントローラーに詰め込んでしまう傾向があるので、
MVC の基本から学んでみることにします。
0461nobodyさん
2009/06/05(金) 20:41:11ID:???0466nobodyさん
2009/06/05(金) 21:44:01ID:???http://www.infinity-blue.jp/archives/58
とっくの昔についてるわ
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:???0471nobodyさん
2009/06/08(月) 13:14:53ID:???ttp://www.tonttu.net/tec/cakePHP/cakephpHABTMwith.html
これじゃね?試してないが
0472nobodyさん
2009/06/08(月) 15:41:57ID:???なんかネックになってるSQLがあって、10秒くらいかかってるんじゃね?
キャッシュが効いてる時はすぐに表示されると言うだけで
0474nobodyさん
2009/06/09(火) 19:13:55ID:???ビヘイビアで設定しても呼び出し方が分からず困ってます。
TreeBehaviorとか決まった名前のビヘイビアしか作れないのでしょうか?
0475nobodyさん
2009/06/09(火) 20:07:13ID:???0476nobodyさん
2009/06/09(火) 21:20:39ID:???複数のモデル内 => ビヘイビア
複数のコントローラ => コンポーネント
です。
名前は hoge ビヘイビアでも abesouri ビヘイビアでも何でも作れますよ。
あなたはコントローラー内でのモデルの使い方がいまいちわかっていないと思います。
0477nobodyさん
2009/06/10(水) 09:41:54ID:???>>476のようにcomponentで実装するのが良いでしょう
より簡単なやり方としては。
app_controller.phpで共通する処理を書いてあげると、すべてのcontrollerで利用できます。
※ただし、URLでアクセスされないように、function _hoge() のように _ をつけてね
0478nobodyさん
2009/06/10(水) 13:01:47ID:???テキストフィールドに文字列を入力してエンターを押しても候補が表示されず、
1文字削除すると、候補が表示されます。
どうすれば直るのでしょうか?
0479478
2009/06/10(水) 13:28:23ID:???何か対処法はないでしょうか・・・
0480nobodyさん
2009/06/10(水) 14:28:19ID:???レスありがとうございます。
呼び出し方として
モデル->ビヘイビア
ではなく
コントローラ->{モデル,ビヘイビア}
ということでしょうか?
おんなじ処理(たとえばPV集計など)を書くのにコンポーネントだとMVC的に間違っている気がするのですが
0481nobodyさん
2009/06/10(水) 14:29:41ID:???core.php内で設定する以外でお願いします。
0483482
2009/06/10(水) 15:39:30ID:???0484nobodyさん
2009/06/10(水) 15:44:47ID:???まだいまいち状況がつかめていないが。
共通の処理というのが特定のモデルを使うようなものであれば、
そのモデルを各コントローラーから呼んであげればよい
モデルを使わないのであれば、各コントローラーで処理する
各コントローラーの処理を共通化するのは>>476-477
0485nobodyさん
2009/06/10(水) 16:28:13ID:???どういう場面で使えばいいのかわかんなくて、一度も使ってないんだけど
0486nobodyさん
2009/06/10(水) 20:31:17ID:???必要無いものを無理に使う必要はないと思う。
0487nobodyさん
2009/06/10(水) 21:59:36ID:???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:???手を出さないのが無難とはわかりつつも、わざわざグローバル関数として
用意されているのだから、便利な使い方があるに違いないと邪推してしまう
>>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:???0494nobodyさん
2009/06/11(木) 13:27:45ID:???e(h())ってなるのがいやなので、eh()ってのを作って使うとより便利だけどね。
0495nobodyさん
2009/06/11(木) 13:50:01ID:???0496nobodyさん
2009/06/11(木) 14:49:44ID:???基本的に勝手にエスケープされるのでほとんど使わない
そういやCakeだとLIKのワイルドカードの%と_がエスケープされないけど
これは自分でエスケープしなきゃいけないのかね
フレームワークでは意図的に入れたワイルドカードか不意にポストされた
ワイルドカードか判断できないってことなのかな
0498nobodyさん
2009/06/11(木) 15:42:25ID:???0501nobodyさん
2009/06/11(木) 21:09:45ID:???0502nobodyさん
2009/06/12(金) 00:59:17ID:???んー、検索フォームで%をポストされると、そのままワイルドカードに
なっちゃうんだよね
hoge%fugaで検索すると%hoge%fuga%にマッチするのを探しちゃう
本当なら%hoge\%fuga%になってほしいところなんだけど
まあ、そこまで問題ではないのかもしれないけど、意図しない動作なので気になる
0505nobodyさん
2009/06/12(金) 06:51:54ID:???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:???%は、エスケープされないみたいだね。
シングルクオート、ダブルクオートはエスケープされてるから、仕様っぽいな
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:???ユーザーからの入力値を受け付けて、なおかつワイルドカードで始まらない
like文っていうのはあまり想像できないけどな。
0510nobodyさん
2009/06/12(金) 16:10:41ID:???0511nobodyさん
2009/06/12(金) 19:58:24ID:???どこで出ているのか、特定できなくて困っています。
コントローラの最後にechoを入れるとゴミデータの前、
VIEWの最初に文字を入れるとゴミデータの後に
表示されるので、コントローラとViewの間で表示されていそうなんですが
どこがあやしいかわかりますか?
これをしてみれば?みたいなことがあれば教えてください。
0512nobodyさん
2009/06/12(金) 20:30:44ID:???0513511
2009/06/12(金) 21:14:17ID:???文字コードが誤って判定されていました。
http_outputを設定することで解決しました。
httpだと問題なく動作していたんですが、httpsにしたとたん
問題が発生しました。
SSLでは文字コードの判定が違うんでしょうか。
>>512
ゴミデータは?でした。
0514nobodyさん
2009/06/14(日) 05:26:58ID:???e(); は echo の略だから 1文字しか短くならない。
だから使わないんだよね。
0515nobodyさん
2009/06/14(日) 17:49:59ID:???0517nobodyさん
2009/06/15(月) 05:54:41ID:???これも
ttp://pc11.2ch.net/test/read.cgi/hosting/1236253865/
0518nobodyさん
2009/06/15(月) 20:19:10ID:???この質問って回答するの難しい?
0519nobodyさん
2009/06/15(月) 21:55:12ID:???0520nobodyさん
2009/06/16(火) 01:02:44ID:???0521nobodyさん
2009/06/16(火) 22:49:42ID:???CakePHP1.2ガイドブック
6/27発売 キタ━━━━━━(゚∀゚)━━━━━━ !!
0522nobodyさん
2009/06/16(火) 22:58:46ID:???0523nobodyさん
2009/06/16(火) 23:00:25ID:???0524nobodyさん
2009/06/17(水) 12:27:40ID:???最近のCakePHPではPostgreSQLでまともに動きますか?
それと、バグは収束傾向でしょうか?
0526nobodyさん
2009/06/17(水) 17:52:25ID:???こんなもんなのかと思える
ただの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:???0529527
2009/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'));
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になっているという情報はどのように取得できるのでしょうか?
0535nobodyさん
2009/06/18(木) 17:42:48ID:???0536534
2009/06/18(木) 18:08:35ID:???$this->data
ね
debugをオンにしてないってオチじゃないよね?
0537nobodyさん
2009/06/18(木) 18:57:33ID:???debug( $this->data );
を、controllerに記述して中身を確認しましょう。
そしたらあとはカラムの型に応じて適当に処理すべし
0538nobodyさん
2009/06/18(木) 20:08:09ID:???そのほとんどはデザイナ会社が勘違い(or 背伸び)で取ってきた案件が多いな。
だから>>521のような本が伸びるんだろう。
0539カナディアンマン
2009/06/18(木) 23:28:34ID:???debug( $this->data ); をしました。
結果
Array
(
[User] => Array
(
[hoge] => 1
[job] =>
[hogehoge] =>aaa
)
)
やっぱりjobの中に何も入ってないです。
0541nobodyさん
2009/06/19(金) 00:05:29ID:???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:???なんだ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:???<?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:???viewアクションだけ自作するのがよさげ
nullチェックと$this->set('title' ,$this->Title->read ・・・ くらいしかしてないから
0547545
2009/06/21(日) 00:44:37ID:???特定のアクションだけ自作とかできたんですね。
ありがとうございます。
しかしtitleが使えないとなると、なんて変数名でセットしようか・・・
こういうところで悩んでしまってぜんぜん進まない;
0548nobodyさん
2009/06/21(日) 06:29:42ID:???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' => 'グウェンドリン'),
),
),
),
),
);
0551548
2009/06/22(月) 02:56:27ID:???ちゃんとマニュアルありましたね。ありがとうございます!
ttp://book.cakephp.org/ja/view/812/find-threaded
0553548
2009/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
0555nobodyさん
2009/06/23(火) 10:09:03ID:???適当にメンバ変数に入れてあげればよい
$this->Member = $this->ComponentsName->getMember();
※もちろんコンポーネント内で処理しても良い
setは、あくまでviewに変数を受け渡すものだから、二度手間でもview()の最後でsetしてあげてください
0556nobodyさん
2009/06/23(火) 10:15:11ID:???コントローラとアクションは引数で渡す??
cron以外はcakeで開発しているので、設定ファイル等同じものが
使えたほうがいいと思うのですが、難しいですよね。
0557nobodyさん
2009/06/23(火) 10:21:24ID:???つ 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:???まずCoC(やDRYとか)の概念を理解することがRoR流のフレームワークを学ぶときの近道。
命名規則はすぐ慣れるから安心しる(なぜそうなのかが分かれば間違えることはない)
0562nobodyさん
2009/06/24(水) 16:18:05ID:???単数複数の概念があると、単数形や複数形で書くメリットも大きい。
あと、単数複数が間違ってたら、エラーページが出てきて
「○○ってクラスがねえから、こんな感じで書け!」って
教えてくれるので単数複数を間違えてもすぐ気づくし。
0564nobodyさん
2009/06/24(水) 17:59:42ID:???俺も苦労した。
今のバージョンは
indexs でOKだけど、以前は
indexcies? にしないとエラーになった時があった。
0565nobodyさん
2009/06/24(水) 20:31:06ID:???datumなんて知らねえよ
0566nobodyさん
2009/06/24(水) 23:20:54ID:???やたら覚えさせられたが。
俺はもう古い時代の人間なのか。
0568nobodyさん
2009/06/25(木) 01:25:04ID:BlJ0aidQecho $form->end('Save Post');
これでフォーム作って送信したあとのURLがパラメーターを持つようにしたい
場合どうしたらよいのですか?
http://localhost/cake/posts/add/1
この画面で送信ボタン押して制御が画面に戻った後
http://localhost/cake/posts/add
になってしまいます。
0570nobodyさん
2009/06/25(木) 02:24:42ID:???基本的にはマニュアル見るのが早いかつ確実
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で変更したときに柔軟性がある。
0572nobodyさん
2009/06/25(木) 09:05:29ID:???$form->create('Post', array('url'=>'/'.$this->params['url']['url']));
0573nobodyさん
2009/06/25(木) 09:21:19ID:???$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サーバー停止してしまうと、モデルのなにかが初期化されてしまうのでしょうか?
0575nobodyさん
2009/06/25(木) 17:21:59ID:BlJ0aidQ0576nobodyさん
2009/06/25(木) 20:08:20ID:???あくまで推測の域だが、save後にlastidが取れるのはセッションに
保存してるからじゃないかな。mysqlみたいにSQLで用意してる
DBもあるけど、そうじゃないのもあるし、セッションが失われる行動を
取ると当然なくなると思う。
オートインクリはサポートしてないDBもあるから、それに合わせた
コーディングが出来てないんじゃないの?
ソースとかマニュアル見てみたけど推測の域を出ないな。
0577nobodyさん
2009/06/26(金) 02:57:40ID:???すいません!再起動、関係なかったです。
原因は↓でした。
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:???排他でselect maxか、同一トラン内でしか取得出来んだろ。
0579nobodyさん
2009/06/26(金) 11:22:52ID:LY+hfClRとやると実際のflash画面には$idが抜けてしまいます。
>>568さんに近いような気もするんですが、
$idをflashに渡すにはどうすれば良いですか?
0581nobodyさん
2009/06/26(金) 16:53:48ID:???flashに変数を渡そうとしたことが無い。
発想を変えてみては?何で渡したいのか知らんけど。
$this->flash($id . 'さんは unko をたっぷりしました', 'add');
これでflashのメッセージには $id が渡る。
flashを抜けた先でさらに id を使いたい場合は
$this->flash($id . 'さんは unko をたっぷりしました', 'add/'.$id);
で、いいんじゃないの。
0583nobodyさん
2009/06/26(金) 22:19:28ID:???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:???var $helpers = array('Html');
function foo() {
return $this->Html->link("hoge", "hoge");
}
0586nobodyさん
2009/06/27(土) 20:00:04ID:???Helper内と勘違いした。ごめん
View内で関数つかうのなら、Helperにしたほうがよくないかい?
テンプレート内に関数いれるとなると、MVCの役割的にもよくないと思う。
0587nobodyさん
2009/06/27(土) 21:19:31ID:???>>586にあるとおり独自のHelperを作成してください。
そのなかで$helpers=array('Html')とでもやっておけば$this->Html->link()などと使えます。
0588584
2009/06/27(土) 22:07:39ID:CJ8L5rCq>>587
丁寧なご説明ありがとうございます。
$rss ヘルパーに、$rss->items($data, "a_function_name") というアイテムの一覧を出力するメソッドがあるのですが、この 2 番目の引数がグローバル関数の名前を取る仕様になっているのです。
$rss->items の第 2 変数にヘルパーのメソッドが渡せれば解決するのですが・・・;
0589nobodyさん
2009/06/28(日) 11:43:08ID:???$rss->items($item, array( $hoge ,"fuga" ) )
とHogeヘルパーのfugaメソッドを渡せば行けるんじゃね?
0590nobodyさん
2009/07/01(水) 09:51:27ID:???こうかな?試してないけど
$rss->items($item, array( ClassRegistry::getObject('view')->getVar('hoge') ,"fuga" ) )
0591nobodyさん
2009/07/04(土) 12:39:33ID:???これでアクセスすると下記のようなエラーが出ます
何がおかしいんでしょうか?
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最低一つは選択ってどうかけばいいですか??
教えて!
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:???それはある
詰め込み世代の新人って指示待ちか出来もしない癖に勝手な事やって迷惑掛けてくれる奴かの両極端だった
ここ数年の奴らは、意外と使える
我々にしてもそうだったけど目で盗んで憶えるというか自分の頭で考えて言われなくても的確に動けるのが増えた気がする
日本人らしさが戻って来た感じ
0595nobodyさん
2009/07/06(月) 06:51:08ID:???例えばシェルが
Class hogeShell extends Shell {
function hoge($id) {
〜
としたときにコマンドを叩くときこの $id を渡したい。
0597nobodyさん
2009/07/06(月) 12:32:18ID:???Informations ってテーブル切って、bakeしたら「テーブルねぇぞ!」って怒られたら、調べてみたら Information で統一だった
自分の英語レベルの低さに悲しくなる...orz
0598nobodyさん
2009/07/06(月) 13:50:27ID:???つ ttp://teknoid.wordpress.com/2008/10/16/how-to-validate-habtm-data/
0599593
2009/07/06(月) 17:06:53ID:7VJoQdabありがとうございます。
う〜〜〜ん、なんかスッキリしない方法ですねやっぱり。
よくありそうな仕様なのに正攻法でないというか。。
そうも言ってられませんのでいただきましたURLのような実装でいこうと思います。
ありがとうございました
0600593
2009/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)),
> ),
> ),
> );
0601593
2009/07/06(月) 20:35:20ID:7VJoQdabcontrollers/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がたっていれば保存する処理を以下に。
0603593
2009/07/06(月) 23:04:14ID:7VJoQdab詳しくおねげーします!!
0604nobodyさん
2009/07/06(月) 23:20:21ID:???$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は自動。
0605593
2009/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
そうなんですか!
ためしてみます
0607nobodyさん
2009/07/07(火) 00:15:37ID:CrPLCrV4saveAll()かける前に一ページはさんでて、
単にvalidateしてconfirmページ出すためにflag使ってたみたいです
validateAllとかあればいけそうなんだけど・・・
とりあえずありがとうございました。
0608nobodyさん
2009/07/07(火) 05:58:58ID:???0609nobodyさん
2009/07/07(火) 06:18:09ID:???0611nobodyさん
2009/07/07(火) 21:48:44ID:???BAKE楽しいっすね
自動でコード生成してくれるなんて最高〜〜
0612nobodyさん
2009/07/08(水) 06:42:23ID:???それに勘違いしてるヤツが多いけど、大昔はメモリも
少なくディスクも小さかつたから、フレームワークも
RDBもなかったけど、仕様より規約的な考えは汎用機の
世界でもあった。
ステップ数商売(笑)と勘違い野郎のOOP向けコーディングが
やたら複雑怪奇なソースコードを書く癖がついたと
個人的には見ている。
0613nobodyさん
2009/07/08(水) 20:34:12ID:???どうにもうまくいかないんだが…
0614nobodyさん
2009/07/08(水) 21:32:39ID:???0616nobodyさん
2009/07/09(木) 21:40:19ID:???フォーラム行ったらまさにおなじ質問してる人がいてそのサイトを参考にやりましたって言ってたなぁ。
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:???0620nobodyさん
2009/07/10(金) 10:18:41ID:yJRQTl0bたぶんションベンみたいなフレームなんだろうね
0621nobodyさん
2009/07/10(金) 10:52:41ID:???日本語、、、いや思考が大丈夫かって気がするわなぁ
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:???> てかrails系のスレに来て「お決まりだらけ」がイヤて、
> 日本語、、、いや思考が大丈夫かって気がするわなぁ
ちなみに私は普段CakePHPを使用していますが、
それを使用するほど大きなプロジェクトではなく、
でも多少手のかかる物の場合に使えるフレームワークがほしい…
そんなときに使えるフレームワークを目指して作成しました。
0625nobodyさん
2009/07/10(金) 15:59:57ID:???公開すんの?なら早くみして
つーかそもそもスレち
0626622
2009/07/10(金) 16:02:01ID:???→なるなぁ。
とくに簡単であればあるほど自分でフレームワークを作るなんで無駄だもの。
しかも、俺様フレームワークの機能が足りなくて追加するのは
すでに CI が持っている機能だろうし。
CI でコマンドラインな PHPUnit も使えるよ。
0627nobodyさん
2009/07/10(金) 16:11:12ID:???ttp://cakephp.seesaa.net/article/123192243.html
0628nobodyさん
2009/07/10(金) 16:58:03ID:???そうなんだよなw
MVCの考え方とか、テンプレートだとか、規約とかそんなものを
追加していくと結局肥大化するんだよね。
0629nobodyさん
2009/07/10(金) 17:07:22ID:???なんか根本的に考え方が違うね。
例えば、phpinfo()を出すだけ程度のプログラムに
フレームワークを使う気になるかい?
0630nobodyさん
2009/07/10(金) 17:10:28ID:???それだとpurePhpでいーし
0633nobodyさん
2009/07/10(金) 17:24:44ID:???頭おかしいんじゃないか?
0634nobodyさん
2009/07/10(金) 17:27:17ID:???アプリの一部の機能としてのでバックモードか
開発中の確認か・・・・とかだろJK
phpinfo()をコンテンツとして公開したいんなら
>632の言うとおり他にもいろいろつくわけで
何が言いたいの?
0635nobodyさん
2009/07/10(金) 17:42:08ID:???0640nobodyさん
2009/07/10(金) 18:38:07ID:???0641nobodyさん
2009/07/11(土) 08:05:26ID:???自作とかやりたきゃくだすれにでも逝ってくれまいか
0642nobodyさん
2009/07/11(土) 13:04:06ID:???phpinfoってのは、その極端な例では?
どういうことをやり始めたらフレームワークを使うべき?
みんなはphpファイル数枚ですむようなことでも
フレームワークを使うの?
0643nobodyさん
2009/07/11(土) 13:06:56ID:???FWの自作なんて誰でも一度はやることなのに
0644nobodyさん
2009/07/11(土) 13:17:35ID:???phpファイル数枚ですむようなシステムを作る場合でも、本当にゼロから書く人間はいないだろう。
たとえば今まで作ったファイルをコピーしてベースにしたり、似たようなソースを探してきてそれをコピペしたり。
それも広義な意味でフレームワークだろう。結局トータルで見た工数でメリットかあるならフレームワークを
使えば良いし、Cakeが最適ならそれを使えばいい。
俺ならゼロから作るリスクを考えると、たとえリソース数が肥大したとしても何らかのフレームワークを使う。
0646nobodyさん
2009/07/12(日) 02:13:26ID:???0647nobodyさん
2009/07/12(日) 02:41:49ID:???ってスレ立てようか?
設計方針とかここが自慢とかの話題で楽しそうな気がしないでもない
0648nobodyさん
2009/07/12(日) 03:01:33ID:???のメニューのリンク切れは何とかならんのかね?
0649nobodyさん
2009/07/12(日) 03:10:32ID:???これとかだろ?
ところどころおかしいんだよね・・
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1958&forum=4&post_id=4798#forumpost4798
どこに報告したらいいのやら
0650nobodyさん
2009/07/12(日) 11:33:05ID:???>>647にスレでも作ってもらえって。
>>1 にな
>CakePHPは、Ruby on Railsの概念の多くを取り入れた、
>Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです。
てスレの趣旨が書いてあるだろ。
0651nobodyさん
2009/07/12(日) 12:57:28ID:???で紹介してもらったリンク先を参考にしてちょっと思いついたことがあったんで、あれからさらに修正していたよ。
コンセプトもだいぶ固まってきた。phpファイル単体で実行する古典的なスクリプトから
簡単に移行できるフレームワーク(そんな規模じゃないけど)
他のフレームワークがフルスタックなものばかりなので逆に、出来る限りなにも含めない。
移行する際は、既存のファイルを特定のディレクトリにそのまま入れるだけで動く。
実のところ、ちょっとした便利関数とディレクトリ構造とそのアクセス方法を決めただけに過ぎない。
で、今のところ、コアファイル1つ。.htaccessとindex.php、いくつかのディレクトリ(変更可能)
そしてオプション(無くても良い)で、設定ファイルとコアを拡張するためのファイルそれぞれ一つづつという
コメント入れて非圧縮時で15kbの俺俺フレームワークができた。(ためしにコメント削ったら10kb切った)
本当はフレームワーク作るのが目的じゃなくて、個人的なあるツールを作るのが目的なんで
そっちができたらフレームワーク公開を考えるよ。忘れたころにこっそりとw
0653nobodyさん
2009/07/12(日) 13:18:13ID:???なぁ、フレームワークについて語るスレがちゃんとあるんだぜ?
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行程度でおわりだしね。
0657nobodyさん
2009/07/12(日) 21:28:48ID:???覚えることはない?
それなに?何に役立つの
0658nobodyさん
2009/07/12(日) 21:46:38ID:???本当に迷惑だから、もう来るな。
ここはCakePHPの事を話し合うスレだ。
CakePHP以外の話は別のスレでやれ。
0659nobodyさん
2009/07/13(月) 00:00:22ID:???でやっとこさ自分でなんか形になるもんが出来て浮き足立ってるだけだろ。
これだからID無し板はダメなんだよ。透明アボーソできないじゃないか。
0660nobodyさん
2009/07/13(月) 01:39:20ID:???しっかり生きろよw
0661nobodyさん
2009/07/13(月) 02:28:04ID:???0662nobodyさん
2009/07/13(月) 03:23:51ID:???公開してないやんw
0663nobodyさん
2009/07/13(月) 13:11:15ID:???0665655
2009/07/13(月) 17:27:08ID:???phpinfo() を出すのに 350 行程度で済むようになりました。
CakePHP はもっとファイル数や行数あるよね?
0668nobodyさん
2009/07/13(月) 18:38:25ID:???3行でいけたよ。
<?
phpinfo();
?>
まぁ完全に出すだけだけど、無駄がない分動作が速い。
cakeだと重いでしょ?俺のはフレームワークじゃないから早いよ。
導入もファイル一枚だから楽チン。
やっぱ俺俺フレームワークすげぇわwww
0669668
2009/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:???ttp://code.cakephp.org/cake3
0673nobodyさん
2009/07/13(月) 20:37:45ID:???PEARとか使うとたまにかぶる・・・
0674nobodyさん
2009/07/13(月) 21:12:18ID:???いや、冗談抜きでそれ動くわw
無理して動かすとか言う話じゃなく、
それでいい。
>>673
俺のはつけてるよ。
0675nobodyさん
2009/07/13(月) 21:21:00ID:???0676nobodyさん
2009/07/13(月) 21:21:48ID:???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:???覚えることはほとんどなくてoreore_をつけるだけw
Cakeは覚えることが多すぎるから、疲れた人にはもってこいだと思う
公開までもうちょっとまちなー
0679nobodyさん
2009/07/13(月) 21:26:12ID:???0681nobodyさん
2009/07/13(月) 21:32:30ID:???おれも>>675状態だったからびっくりしたわ。
ちゃんと最新動向追っかけてないとだめだな。
0682nobodyさん
2009/07/13(月) 21:50:41ID:???マジレスするのすら気が引けるが、phpinfo()の返り値はBooleanな
いきなり動きませんが。つか君、自分が面白い人だと思ってるの?
0683nobodyさん
2009/07/13(月) 21:54:59ID:???CakePHPの使い過ぎで頭固くなったんじゃない?w
0684682
2009/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:???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:???もう釣れないからオレオレFW別スレ立てたら?w
0695nobodyさん
2009/07/15(水) 14:16:19ID:???0696nobodyさん
2009/07/15(水) 14:25:58ID:???今個人的に使っている範囲では、使わない部分なんで簡易なままにして
おいたけど、さらにシンプルな使い方にする方法を思いついたので。
0697696
2009/07/15(水) 14:37:58ID:???まぁめんどくさくなったから中途半端だけど
とりあえずルーティングとしては問題ないww
oreore_framework.php
<?php
〜〜〜〜省略〜〜〜〜
function routing() {
return rand(0, 1) ? true : false;
}
〜〜〜〜省略〜〜〜〜
?>
0698nobodyさん
2009/07/15(水) 14:51:28ID:???お前がフレームワークのことに精通しているのは十分わかった。
ここの住人がお前を全く必要としていないのはわからんか?
0699nobodyさん
2009/07/15(水) 17:11:52ID:???出て恋やゴルァ(死語)
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:???0706nobodyさん
2009/07/16(木) 14:50:54ID:???0707nobodyさん
2009/07/16(木) 15:09:10ID:???そのままといえるのかどうか分からないが、
たいていのソフトはコンパイルの一連の作業でconfigureとかに
--prefix=$HOME/local なんてオプションをつけると
システム全体じゃなくて、ログインユーザー専用としてコンパイルしてくれるよ。
インストールディレクトリは全部$HOME/local以下になる。
デーモン系は立ち上げられないんじゃ?と思うのなら、それは問題ない。
subversionのコマンドを実行すると、裏でSSHでログインし、サーバー側で
subversionのコマンドを実行して処理を返す。なんてことをやっているから。
0708nobodyさん
2009/07/16(木) 15:16:40ID:???ほんとお前いい加減にしろや
よそいってやれ
二度とくんな
0709nobodyさん
2009/07/16(木) 16:39:05ID:???insertの時だけじゃなくてupdateの時もかかっちゃうの?
0710nobodyさん
2009/07/16(木) 16:39:38ID:???0711nobodyさん
2009/07/16(木) 16:44:14ID:???0712711
2009/07/16(木) 16:45:43ID:???'on'=>'update'
とか
'on'=>'create'
かな
0714nobodyさん
2009/07/16(木) 17:05:43ID:???ありがとう
自分の意図してたのは>>713みたいなケースだったので
onオプションは今回は使わなくていいみたいだった
0715711
2009/07/16(木) 17:07:10ID:???すまんちゃんと読めてなかった
0716nobodyさん
2009/07/19(日) 14:33:41ID:???Zend GuardとかがPHPだと一般的なようですが、CakePHPでも使用できるのでしょうか?
0717nobodyさん
2009/07/21(火) 19:22:57ID:zqz/ptwz0718nobodyさん
2009/07/21(火) 20:10:36ID:???プラグイン機能をつけようと思っている。
もちろん、プラグインは必須ではなく、
コアだけなら1ファイルですむんだけど。
0719nobodyさん
2009/07/21(火) 20:15:35ID:???0721nobodyさん
2009/07/21(火) 22:06:05ID:???どうなんだろ。
0722nobodyさん
2009/07/21(火) 22:34:08ID:qTwJynafCakePHP として配布されているコードのことなのか、
CakePHP 上(?)に自分が書いたコードのことなのかどっちだ?
0723nobodyさん
2009/07/21(火) 22:46:42ID:???0724nobodyさん
2009/07/22(水) 00:39:20ID:2l6UTOL5jsのpackedみたいなののphp版がある(かどうか知らないけど、あると仮定する)と
cakephpフレームワークを利用したappをつくって、それを暗号化すればいいだけだよね?
もちろんcakeに限らずpureなPHPでもZendでもsymfonyだろうが、同じように難読化・暗号化できるんじゃない?
そうじゃなくて、cakeのcore層でなにかしら解読の仕組みが用意されてて、app層に難読化コードを設置することで、
appとcoreをかけ合わせることで初めて実行できるようなものを期待しているの?
だとすると、自分の知る限りではない。
0725724
2009/07/22(水) 00:42:35ID:2l6UTOL5>Zend GuardとかがPHPだと一般的なようですが、CakePHPでも使用できるのでしょうか?
でしたか。
0727nobodyさん
2009/07/22(水) 14:15:37ID:2l6UTOL5plugins/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:???「あなたは○○」 と結果を出したいのですが、その結果が100ある場合はどこに占い結果をまとめとくべきでしょうか。
・files に csv としておいておいてそれを file_get_contetns でごにょにょ
・MYSQLに保存しとく
・そのファイルにべた書き
以外に良い方法あれば教えて下さい。
0730nobodyさん
2009/07/23(木) 00:30:05ID:???0731nobodyさん
2009/07/23(木) 00:31:22ID:???0732nobodyさん
2009/07/23(木) 00:39:40ID:???10個くらい一気に結果を取得したいから、そうなると 10個の DBを作らないといけなくなります。
なので負荷を軽くしたいのでDBはできるだけ避けたいのです・・・と思いましたが言われて気づきました。
DBでもいけそうなのでそれでやります。ありがとうございました。
0733nobodyさん
2009/07/23(木) 00:43:56ID:???0734nobodyさん
2009/07/23(木) 18:12:20ID:???0736nobodyさん
2009/07/24(金) 00:19:55ID:???感覚的でもいいので教えて下さい
0737nobodyさん
2009/07/24(金) 01:35:58ID:???0739736
2009/07/24(金) 09:29:45ID:???どもです。
0740nobodyさん
2009/07/24(金) 15:11:55ID:???1.2になってクソ遅くなって、
すていぶるになってからは落ち着いたって誰かが言ってた。
0741nobodyさん
2009/07/24(金) 17:36:55ID:???なんにしても、プロダクションモードにしとけば使えるレベルだと個人的には思ってるが
0742nobodyさん
2009/07/25(土) 16:12:29ID:???Vendorsの中でバラしてjsフォルダとcssフォルダとかに分けると
あとでライブラリのバージョンアップとかの時に面倒ですよね。
0743nobodyさん
2009/07/25(土) 16:28:28ID:???バージョン管理ツール使え
Subversion実践入門達人プログラマに学ぶバージョン管理
サードパーティ製のコード
0744nobodyさん
2009/07/25(土) 16:46:58ID:???それをディレクトリに振り分けるのが面倒臭いといってるんでは?
0745nobodyさん
2009/07/25(土) 20:25:31ID:???あるとしたらそのライブラリの設計が問題じゃないかな。
0746nobodyさん
2009/07/26(日) 00:22:51ID:???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に対応させてる方もおりましたんで
これを参考にしてみます。でも本体改造はちょっと気が引ける・・・のと、
その都度改造っていうのもちょっとなー
0749nobodyさん
2009/07/26(日) 16:59:20ID:???ほとんど趣味の世界なのかな
0750nobodyさん
2009/07/26(日) 17:30:30ID:+LxCHWip当たり前だろ。
0751nobodyさん
2009/07/26(日) 18:42:34ID:???商用では何が使われてるんだよ
0752nobodyさん
2009/07/27(月) 05:22:59ID:???使ってるサイトが少なそうに見えている、とも考えられる
あと1.2で大分ましになったけど、同じフルスタックとはいえ
導入するメリットがSymphonyに対して見えにくかったというのもある。
簡単だ!みたいな点だけ強調されすぎた。なんかそういうのはもういい。
その点では1.2になって本当に良くなった。敷居は上がったかもしれんが
0753nobodyさん
2009/07/27(月) 07:16:36ID:???同意。俺、商用サイトしか作らないけどここ2年近くは全てcakephpを元に作ってる。
わざわざcakephpで作ってますとは書かないね。
0754nobodyさん
2009/07/27(月) 12:24:15ID:???よっぽど強固な作りになっていない限り、制作事例は公表しないというのが面倒が無くて良い気がする。
オレは、仕事でCakePHPを組込んでいるよ。どれか教えないけどね
0756nobodyさん
2009/07/27(月) 17:53:25ID:???実装は可能でしょうか?
方法があれば教えていただきたいです
マニュアルの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:???普通にjavascriptを書く
javascriptヘルパーを使うならcodeBlock()でheadに書き出せる
0758nobodyさん
2009/07/27(月) 18:49:42ID:???だったら自前でダイアログ(っぽいもの)を吐き出す必要があるのでは?
0759nobodyさん
2009/07/27(月) 20:51:40ID:???CakePHP側でこのViewのモデルを定義し、findAll等でデータを取得するとなぜか
配列にはViewがテーブル別に分割されて取得されます。
あくまでViewの配列に一括で入ってくることを期待しているのですが・・・
0760nobodyさん
2009/07/27(月) 21:02:26ID:???ちゃんと他人が理解できるよう質問しろバカ
0761nobodyさん
2009/07/27(月) 21:54:17ID:???cakeで扱えるのかは知らん
0762nobodyさん
2009/07/27(月) 23:29:47ID:???ためしてないけど、ビューのデフォルトのフィールド名が問題な気がする。
フィールド名が、TABLE1.field、TABLE2.field、なんてなっていると、
TABLE1とTABLE2に分かれるんじゃなかったっけ?
0763nobodyさん
2009/07/28(火) 12:38:13ID:qCVItZ1YFlashデータだけブラウザにキャッシュする方法が
あれば教えていただけますか。
配置順は変わったりするので、ページをキャッシュしてしまうとまずいです。
cacheヘルパーのキャッシュはViewをキャッシュするようなので
少し用途が違うようですが、いかがでしょうか。
0764nobodyさん
2009/07/28(火) 12:40:25ID:???スレチ
0765nobodyさん
2009/07/28(火) 19:36:17ID:28CkmgXWデータの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ありがとうございます。
URL先の記事非常に参考になりました。
0768nobodyさん
2009/07/29(水) 09:33:21ID:???Authコンポーネントが用意されていますが、独自で実装するよりこれを使ったほうがいいですか?
ユーザーの権限によって処理を振り分けたりということをしたいのですが、Authコンポーネントを
使っても柔軟に対応できるものですか?
0769nobodyさん
2009/07/29(水) 09:49:33ID:???AのafterFind内でunserializeすると、Aを直接findで取得した場合はいいのですが、
関連モデルBから引っ張ってきた場合にはAのafterFindは呼ばれないようです。
Aのデータ展開時に確実にunserializeするにはどうすればいいのでしょうか?
0770nobodyさん
2009/07/29(水) 10:28:26ID:???Auth+ACL
>>769
俺もそれでよく躓く
そういう仕様らしくてどうしようもないのかも。
どうしてもやりたい時はビヘイビアでやるけどこれも一筋縄ではいかない
他の方の回答を期待したい
0772nobodyさん
2009/07/29(水) 14:20:19ID:???データに関わるものであれば、モデルでビジネスロジックを書いてもいいのに。
0773nobodyさん
2009/07/29(水) 14:56:14ID:???0774nobodyさん
2009/07/29(水) 15:09:17ID:???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(); を置いても何も出ない?
0776774
2009/07/29(水) 16:15:45ID:???記憶があいまいなので確かこんな感じと書いてみたんだけど違ってたのかな?
Post->User->find()
ではなくて
recursiveセットした上での
Post->find()
のことなんだけど
ほんとにUserのafterFind通る??
0779nobodyさん
2009/07/29(水) 23:42:38ID:???うんどっちでも来るはずよ。どっちから呼ばれたかを判定するための$primaryだから。
ただ、if($primary === false) { ---- }
てやらないとちゃんと判定してくれなかったかも。
0780769
2009/07/30(木) 01:41:34ID:???アソシエーションが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:???あぁ。これ一回一回やってたけど afterFind でできるのか。
これって save() する時に serialize やってくれるようにできないかな。
0784nobodyさん
2009/07/30(木) 09:45:07ID:???つ http://book.cakephp.org/ja/view/683/beforeSave
「このコールバックは、データが保存される前にそのデータを加工する場合、特に便利です」
0787nobodyさん
2009/07/30(木) 18:03:42ID:???ttp://www.sooey.com/journal/2008/03/26/717/
みて、自分のコードのcontrollerの冗長さに泣けた
0788nobodyさん
2009/07/30(木) 19:40:02ID:???ドメインモデルの設計が主流みたいなんだよね。
それに対して日本はトランザクションスクリプトが多い感じ。
(低レベル日本じゃこの考え方自体があまり知られていない感じもするけどw)
なので、ドメインモデルとして使えばCakePHPは複雑なこともかなりやれるけど、
トランザクションスクリプトでやろうとすると、なんでこんなことがやりにくいの?ってなってしまう。
データを加工して表示するのはビュー。処理はモデル。
コントローラはモデルに処理を依頼して、ビューにデータを渡すだけ。
こういう設計にするのが一番じゃないかな。
0790774
2009/07/30(木) 19:51:50ID:???バージョンアップで変わったのか勘違いかどっちかです。
時間できたらテストしてみます
おさーがせしました
0791nobodyさん
2009/07/30(木) 21:07:46ID:???たしか、バージョンアップで変わったが正解だと思う。
俺も昔、それ関係でソースを呼んでいたのだが、
ひもづるで呼んだときは通らなくて、
まあ、SQLの仕組み上JOINして持ってくるだろうから
難しい話だと思ったのでそいういう仕様かなぁと思っていた。
たぶん今俺が使って実稼動しているシステム。
新しいCakeでは動かないだろうな・・・
ちゃんとテストしているからすぐ修正できるとは思うが。
0792nobodyさん
2009/07/30(木) 21:53:52ID:???アソシエーション先のbehaviorのafterFindは呼ばれなかった気がする。
あとは、primaryで呼ばれたときと、hasManyで呼ばれたときと、
HABTMで呼ばれたときの配列の構造がそれぞれ違うので
そのあたりの対策をちゃんとしないといけないと思う。
この辺のアソシエーション周りの統一感のなさが設計ミスとしか思えない…
0794nobodyさん
2009/07/31(金) 11:24:13ID:???穴があったら入りたい。
0795nobodyさん
2009/07/31(金) 12:24:36ID:???ココも勉強になるわ
0796nobodyさん
2009/07/31(金) 17:54:51ID:???/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:???$this-User->recursive = 0;
じゃなかったかな?
SQL見たらjoinされてないでしょ
0800789
2009/07/31(金) 18:58:02ID:???えらいすんまへんでした
0801nobodyさん
2009/07/31(金) 20:01:55ID:???0803nobodyさん
2009/08/01(土) 07:33:40ID:???>メゾット毎に役割を決めた方がメンテナンス性が上がる
こういうのだるくね?重複するコードは、あちこちに書き散らすの?
766の書き方がノーマルで見通しいいと思うがなあ。
0804nobodyさん
2009/08/01(土) 08:32:39ID:???重複するコードは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:???0811nobodyさん
2009/08/03(月) 12:36:51ID:???じゃあオレも...
「あつは、なついねぇ〜」
0812nobodyさん
2009/08/03(月) 14:54:24ID:???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:???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:???>>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:???がんばれ
0820nobodyさん
2009/08/03(月) 20:01:30ID:???0821nobodyさん
2009/08/03(月) 20:06:20ID:???A->find() すると B が論理削除されるのにヒットする。
条件付ければ済む話だけどスマートにいかんもんかね。
0822nobodyさん
2009/08/04(火) 06:35:48ID:???まーしゃーねーか拡張簡単だし
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:???0827nobodyさん
2009/08/04(火) 11:10:06ID:???0828nobodyさん
2009/08/04(火) 11:54:45ID:???これらのテーブル内では 作成日->RDATE、更新日->UDATE というカラム名になっていて、
Cake の規約に沿って自動的に日付を更新することができません。
日付の更新処理を自前で書けばいいだけですが、せっかくのフレームワークなので、
標準で持っている機能をそのまま使えるような方法はないものでしょうか?
(UDATE as modified とか書ければ簡単なんですが…)
0829nobodyさん
2009/08/04(火) 12:24:47ID:???更新日は modified
にするのがルールだよね!
でも、このルール変更できたような気が...
0830nobodyさん
2009/08/04(火) 12:35:01ID:???ってcoreとかにベタ書きされてた気がするから無理じゃね?
0831828
2009/08/04(火) 12:37:54ID:???ソース読んでみたんですが、更新日のカラム名は決め打ちみたいです。
改造するのもアリなんですけど、もっといい方法がある気がしまして…。
0832830
2009/08/04(火) 12:42:16ID:???setup時に
UDATE⇒modified
RDATE⇒created
beforeFind
beforeSaveで逆
とかやればできそうなきもしないでもない。
ていうかできるなら既にどっかの外人が作ってそうですね
0833nobodyさん
2009/08/04(火) 12:47:13ID:???0834nobodyさん
2009/08/04(火) 14:46:54ID:???0835828
2009/08/04(火) 14:54:25ID:???更新日(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:???モデルの生成は以下で問題なくできる
>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のサイトに移動する直前に、真っ白な画面が一瞬表示されて、
Javascriptで自動的に隠しフォームが送信されてリダイレクトされますが、
あの画面はデザインできないんでしょうか?
CakePHP限定の話題じゃなくてすみません;
0841nobodyさん
2009/08/04(火) 23:06:36ID:???対話式っつうのはやったことないけど、
「cake bake plugin プラグイン名」 でプラグインの骨格ができて、
「cake bake plugin プラグイン名 controller コントローラー名」
「cake bake plugin プラグイン名 model モデル名」で
プラグインの中にコントローラやモデルができるよ。
0842nobodyさん
2009/08/05(水) 00:30:48ID:???でやると、DBのテーブル読み込んでくれて、どれのコントローラー作る?って聞かれるんですね
んで、指定して進めるとエラーになりまして。。。。
cake bake plugin プラグイン名 controller コントローラー名ってのやってみます。
0843nobodyさん
2009/08/05(水) 00:43:51ID:???だと失敗しないですね。
でも出来上がるのscaffoldなんですね。
いつもscaffoldはnにしてbasic class methodでbakeするんですが。
scaffoldの存在意義がわからないもので。。。
んー、もすこし調べてみます
0844nobodyさん
2009/08/05(水) 11:27:29ID:???それを cakePHP で認識させることはできるでしょうか?
0845nobodyさん
2009/08/05(水) 15:45:57ID:???kwsk
5.3に対応したとかじゃないのかな。
何で誰も今回のバージョンアップについて書いてないんだろう。
0847nobodyさん
2009/08/05(水) 19:54:23ID:???cakeのページャー使うと
limit:100とか入れられたら
勝手にリミット書き換えるのやめて欲しいよね。
こっちで手動で設定してる値あるならそっちを優先して欲しいんですけど。
0848nobodyさん
2009/08/05(水) 19:58:46ID:???まぁいいたいことはわかるけど
0849nobodyさん
2009/08/05(水) 22:56:40ID:???開発中の小話なんかを一緒に書いてくれてれば参考になるから嬉しいんだけど、
あれじゃただの宣伝にしか見えない。
0850nobodyさん
2009/08/05(水) 23:01:14ID:???0851nobodyさん
2009/08/05(水) 23:40:06ID:???1.2が出てから急に大きく動き出したので、嬉しいやら戸惑うやら…。
0852nobodyさん
2009/08/06(木) 10:16:22ID:???CakePHP1.3.x は、すでにPHP4切り捨て。CakePHP1.2の資産はほぼ活用できる方向
Cake3 は、ゼロからコード書き直しのいわば次モデル。PHP5.3 & 6 対応(だったはず)
恐らく別物に近くなるのでは?詳細不明だけど、実用できるのは当分先じゃね?
0854nobodyさん
2009/08/06(木) 10:47:38ID:???コントローラまで処理が行われません。
回避手段として、取得側でこれらの文字をなんらかに置換して、受け取り側でも
変換するというのが常套手段なんでしょうか?
0855nobodyさん
2009/08/06(木) 11:00:16ID:???って言うのは的はずれなんですかね。
0856nobodyさん
2009/08/06(木) 11:05:57ID:???すみません、書き忘れてました。
当然urlencodeはしてます。
で、URLに%25とか%2Fが含まれるとアウトになってしまうと。
0857nobodyさん
2009/08/06(木) 11:20:40ID:???ソースさがしてくる
0858857
2009/08/06(木) 11:28:01ID:???とにかく/をURLエンコードしてパラメータとして渡した場合、
なぜかapatcheだかmod_rewriteだかURLデコードして・・みたいな不具合だった
どう解決したか忘れたけど、ちょっとこの辺で調べてみて。
あとでまた調べてみる
0859nobodyさん
2009/08/06(木) 11:38:15ID:???Overloadable::__call()を呼んでくれない。
findByは良いのだけど、別ビヘイビアのメソッドを呼びたい時はどうすればいいんでしょうか?
$model->call__(メソッド名, 引数配列);で無理やりやるしかないのでしょうか?
0861nobodyさん
2009/08/06(木) 13:01:25ID:???ありがとうございます。
実はざっと検索はしていたのですが、
http://kuroutoshikou.blog16.jp/index.php?cat=10
ここの2009/03/04の記事以外に適当なものが見つからず、ここに質問させていただいた次第です。
こちらのサイトでは対処として置換する方法を取っていました。
いろいろ考えたのですが、独自規則で変換するのもあとあと面倒になる可能性があるので
「パラメータはbin2hexで16進文字列変換して渡す」
というルールで考えてみたいと思います。
これなら0-F以外の文字が渡されることは通常無いですし、チェックも比較的簡単かと。
ほかにいい案がありましたら皆様教えてください。
0862nobodyさん
2009/08/06(木) 13:14:53ID:???$pattern = '/\/'.$paramname.'\:([^\/]+)(\/*)/i';
$mnum = preg_match($pattern,$_SERVER['REQUEST_URI'],$encoded_get_vars);
ごにょごにょ
とか
試してないが
0863nobodyさん
2009/08/06(木) 16:39:36ID:???0866nobodyさん
2009/08/08(土) 17:54:59ID:???ヘルパー系がすごい重いんだけど。
0869nobodyさん
2009/08/10(月) 14:22:16ID:???0870nobodyさん
2009/08/10(月) 15:09:54ID:???それが出来ればそうしたいです。
>>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:???速度にこだわるならだけど。
今のところ、前に比べりゃ早いしそこまで困ってないけど。
0874nobodyさん
2009/08/12(水) 00:43:19ID:???saveAll()も微妙だし。
なんでbegin()だのを自分でapp_model.phpに追加せねばならんのだろうな。
ttp://www.ryuzee.com/contents/blog/1159
それともアレか、cake使いってMyISAMしか使わないのか。
0875nobodyさん
2009/08/12(水) 04:28:02ID:???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:???説明するのが手間だから、Addressでbakeして。
deleteアクションとか見れ
要は一通りbakeすればやり方分かるよって事です
0880nobodyさん
2009/08/13(木) 04:38:49ID:???>>878に便乗して横から質問ですが、
deleteアクションを使うという事は、関連モデル(この場合はAddress)の方で
どのレコードが空になったか突き合わせて見れ!ってことですか?
または一旦Userに紐づいた関連Addressを全消ししてから保存せい!ってこと?
$User->saveで出来ないかな、というかそっちでやるべきじゃないかな
横からちんぷんかんぷんなレスすいません。出直して来ます
0881nobodyさん
2009/08/13(木) 05:06:00ID:???value="5" とか数字になるよね?
普通DBに数字で保存しとくものなの?
今まで りんご,みかん って保存してたんだけど。
0,1 で保存して 他の DBテーブル読み込んで結合させるってのが一般的なのかな。
これだと りんご を探したいとき りんご で検索できないでしょ。 0,1 だと 0のもの探したいのに
10 とかもひっかかってくるだろうし。
0884nobodyさん
2009/08/13(木) 09:50:24ID:???普通に考えると、deleteとeditのフォームは別になるんじゃまいか?
editのフォームでテキストフィールドを空にして削除させようとするのであれば、そういう処理をコントローラーに書くしかないよねえ
削除チェックボックス用意するとかすれば簡単そう
0885878
2009/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とか)でやるべきなんですかね?
要は複数入力ができるフィールドがほしいだけだったんですけど、まったくサンプルが見つからなかったってことは、
こういうケースってあんまりないんでしょうか?
0886884
2009/08/13(木) 10:55:33ID:???どのレコードが空になったかは、data[Address][n][address]の n に入ってるわな
HABTMのように全部消す必要はないよ
っと思ったら、>>878の例が思ってるのと違うなあ
ViewでAddressを出すとき
echo $form->input('Address.address');
じゃなかったっけ?
$addressesで
っと、リロードしたら>>885が来てた
0887884
2009/08/13(木) 11:01:09ID:???そんな感じだと思う
でも deleteAll は使わないほうが良かったはず。
afterDelete()を通らなかったと思う。
0889878
2009/08/13(木) 11:41:05ID:???なるほろ。それでは一個ずつdeleteするようにします。
>>888
そうなんですよね。それずっと考えてました。
User更新されずにAddressが消えただけ\(^o^)/ってなりますよね。
なんですが、AddressのbeforeSave内でフィールドをチェックして自分をdeleteするようにすると、
beforSaveがtrueを返す→いったん削除後新規に保存される
falseを返す→他の一連の処理も全部やった後にロールバック。deleteもUser->saveも全部キャンセル
ってなりませんか?ちなみにOracleです。
0890nobodyさん
2009/08/13(木) 12:25:16ID:???コールバックでやるなら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:???セッションを維持できるようにしたのですが、Controller->redirect は自分で
sid を付加しないといけないようです。
cookie のときはこの処理が要らないので、つながってるセッションが cookie か
sid か判定したいのですが、どこを見たら判定することが出来ますか?
0892nobodyさん
2009/08/13(木) 13:40:44ID:???session.use_trans_sidを有効にするってことは、もうCookieでのセッションは効かないよね?
SIDのGETなりでも、Cookieでも、っていう欲張りなことがしたいの?
できるの?
0893891
2009/08/13(木) 14:19:58ID:???ブラウザで cookie が有効だと、設定 on でも SID は自動的にくっつかないみたいです。
app_controller.php の redirect で parent::redirect を呼ぶようにして
session が SID の時のみ $url に SID を追加したいので、その判定をしたいです。
0894892
2009/08/13(木) 15:12:59ID:???つーかそんなことそのURLに書いてある?
ブラウザのCookieが有効かどうかなんてサーバー側は知りえないんじゃないかな?
(1ページ目で食わせて遷移先で食ってるか調べるっていう小細工でもしなければ)
って思ってたんだけど。ちがうんかいな
0895892
2009/08/13(木) 15:22:41ID:???もしそれが可能っていうかそういう仕様なんだったら
controller->params['url']['SID']みればいいだけでないのっと。
経験上そういう仕様ではなかったと思うけどね。
0896nobodyさん
2009/08/13(木) 15:46:42ID:???Ajaxを使ってOKなら、アドレスフィールドの横にAdd/Deleteボタンでも作ってやって、
アドレスの追加・削除は、その場でAjaxでAddressコントローラ/モデルに投げてしまえば美しく決まると思うよ。
0897nobodyさん
2009/08/13(木) 15:59:13ID:???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:???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:???何故コードで管理するか判ってないよね?
0901nobodyさん
2009/08/14(金) 16:52:50ID:???個人的には楽したいし出来るときはする。
ソースもデータも見て分かるって事は重要だと思うし。
パフォーマンスでカリカリチューンしたいなら違うのかもしれんが、富豪的に作って後から困るぐらいアクセスあってから考えればいい。
0902nobodyさん
2009/08/14(金) 18:46:19ID:???本来は正規化はすべきと思うけど、現状の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:???> これだと りんご を探したいとき りんご で検索できないでしょ。 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:???ご親切にありがとうございます。大変勉強になります。
みなさんすごいお詳しいですね。
>データの正規化
勉強してみます!
0906nobodyさん
2009/08/17(月) 12:13:49ID:???http://www.atmarkit.co.jp/fdb/rensai/db_enginer03/db_enginer03_1.html
正規化だお!!
0907nobodyさん
2009/08/17(月) 17:24:27ID:???$data['column'] = 8;
とかでやると1で登録されちゃうんですけど、どうすりゃいいのかにゃ。
0909nobodyさん
2009/08/17(月) 18:18:36ID:???レスとん。
該当カラムのとこ↓
`column` tinyint(1) NOT NULL default '0',
$data['column'] = 8;
以外に
array('column' => '8')
とか色々やったんだけど駄目なんだ〜。
'0'は0として登録されるんだけどそれ以外は1になっちゃう。
ってことは内部でtrue,falseに変換されちゃってんのかに。
0911nobodyさん
2009/08/17(月) 18:28:23ID:???tinyint(1)
ってどうしたくて設定したの?
tinyint(1)
をググってみることをおすすめする。
多分二個目
0912nobodyさん
2009/08/17(月) 18:30:15ID:???0914nobodyさん
2009/08/17(月) 18:34:46ID:???0915nobodyさん
2009/08/17(月) 20:55:03ID:???最近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で世話になったな。あ。俺もこれくらい教えてやろうか」
となるだろうし。
な。俺からも頼むから。
0922nobodyさん
2009/08/18(火) 19:06:03ID:NZ4pSX/jCakePHP1.2ガイドブックを買ってきて勉強を始めたんですけど
bakeで焼いてみようと言う部分で、サンプル通りに作り
入力画面、更新画面などが表示されるようになったのですが
更新すると手入力をする日付(コンボボックス)の部分が「This field cannot be left blank」
とでて更新されないようなのです。
この部分がチェックの時にどうなっているのかを何処で見て修正すればよいのかがわかりません。
フォームでは日付+時間を指定しているのですが・・・
わかる方がいたらよろしくお願いいたします。
0923nobodyさん
2009/08/18(火) 19:24:12ID:???とりあえず
コントローラの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:???validatesの該当するフィールドのルールを消したら動きました。
ルールはdateになっていたのですが、
MySQLのフィールドがdatetime 入力項目が 年 月 日 時間(1〜12) 分 AM/PM
の為 dateでは駄目なんでしょうか・・・・
0927923
2009/08/18(火) 20:13:44ID:???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:???こんなんみっけた。
でもdatetime型には対応してない
というか、datetime型にマッチさせるにはカスタムバリデーション書かないと駄目ぽいね
0929nobodyさん
2009/08/19(水) 00:20:29ID:???Djangoもちょっと触ったけどCakePHPに慣れたせいで書きづらかった。もうだめだ。
0930nobodyさん
2009/08/19(水) 10:47:03ID:???頑張って見ます。
0931nobodyさん
2009/08/19(水) 12:31:29ID:???一寸上のレスで、Cake1.2 トランザクション駄目だみたいなのを読んで、
心配なのでトランザクションのテストをしたいのですが、
トランザクションのテストって、どうすれば良いのですか?
浅い考えとして、2人の人間にほぼ同時に同じデータを編集してもらって、
結果を判断する方法しか思い浮かばないのですが、これでは間違っていますか?
詳しい方、ご教授お願い致します。
0933nobodyさん
2009/08/19(水) 19:49:23ID:???2.コネクション1で書き込み
3.コネクション2でチェック
4.などする。
0934nobodyさん
2009/08/21(金) 19:18:52ID:1U31Opzkcakephp1.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じゃね??
0938937
2009/08/21(金) 21:37:04ID:???スマソ
0939937
2009/08/21(金) 21:47:18ID:???コントローラ内で
$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:???0945nobodyさん
2009/08/23(日) 22:56:22ID:1PDco6xATableA 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:???0947nobodyさん
2009/08/24(月) 12:03:11ID:tRXwOu7Ycore.phpのConfigure::write('debug', 2);で出るから見るといいよ。
0948nobodyさん
2009/08/24(月) 12:29:31ID:7Xy2qm5D色々と考えて頂いてありがとうございます。
解決した訳ではありませんが、やはり一癖あるという事だけは良くわかりました。
お礼申し上げます。
0949931
2009/08/24(月) 12:39:45ID:???>>933 様
貴重なアドバイスありがとうございました。
返事遅くなりまして申し訳ありません。
これから、試してみようと思います。
また、何かありましたらよろしくお願いします。
0950945
2009/08/24(月) 20:20:13ID:???アドバイスありがとうございます。debug は 2でやってます。
時間の都合もあったので、今回はSQLを書いて->query($sql)で逃げました…トホホ
0951nobodyさん
2009/08/25(火) 12:24:15ID:???既に遅いと思いますが、こんな手法も。
http://herd-horse.com/blog/archives/78
0952nobodyさん
2009/08/28(金) 16:05:21ID:???App::import('Model','Hyouka');
$this->Hyouka = new Hyouka();
とやってるんですけど、もっと良い方法ないですかね。
いちいち Hyouka ってのを 3つ書き直さないといけないので面倒。
かといって uses に書くと重くなっちゃうし。
0953nobodyさん
2009/08/28(金) 16:10:29ID:???0954nobodyさん
2009/08/28(金) 16:11:38ID:???ClassRegistry::init('ModelName')
だった
すんまへん
0956nobodyさん
2009/08/28(金) 18:27:06ID:???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について、できません。
これについて解決法をご存じの方、ご教授いただければ幸いです。
よろしくお願いいたします。
0958956
2009/08/28(金) 18:49:33ID:???ご回答ありがとうございます。
試してみましたが、やっぱりダメなようです。
debugモードを3にしてすべてダンプしてみると、どうも最終的に生成されたSQLに
ORDER BYが存在していないことが分かりました。
どこかでsortの情報が消されているような感じもします。
0959nobodyさん
2009/08/28(金) 21:15:41ID:???0960nobodyさん
2009/08/28(金) 21:42:06ID:???最近は素直に$controller->usesに書くようになった。
実際$controller->usesに複数個モデルを書くとどのくらいパフォーマンスに影響が出るんだろう
0961954
2009/08/28(金) 21:51:18ID:???だったら俺も基本 usesに追加する。
コントローラーで読み込むモデルが固定されてる場合はuses
動的に変化する場合や、モデルで別モデル使うがアソシしてない場合は
ClassRegistryで読み込んでるなー
0962nobodyさん
2009/08/28(金) 23:14:27ID:???頻繁にジレンマに陥る。
0963nobodyさん
2009/08/29(土) 01:43:33ID:???>実際$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']
みたいな感じで一気に返したいんだけど。
教えて下さい。
0964954
2009/08/29(土) 01:46:51ID:???Configure::write('my.sex', array('女性','男性'));
Configure::write('my.bload', array('A','B','O','AB'));
debug(Configure::read('my'));
0966960
2009/08/29(土) 04:01:59ID:???そうなのか…。ありがとう。
ウェブで公開されてるCakePHP製アプリのコードを見ると、大抵$usesに書かれてるんだよね。
大してパフォーマンスに影響しないからそうしてるのかと思ってたけど、単にあまり考えてないだけなのかな
そろそろ実行時のプログラムの流れを観察しないとなー
0967nobodyさん
2009/08/29(土) 10:30:52ID:???違うのかよ!
0969nobodyさん
2009/08/29(土) 11:36:24ID:???0970nobodyさん
2009/08/29(土) 12:35:54ID:???0971nobodyさん
2009/08/29(土) 13:40:55ID:???include_pathにおいてオートロードさせちゃう方が楽だったり
0972nobodyさん
2009/08/29(土) 18:49:53ID:9ciXgaFzこっから、configで定義した定数を参照出来ないんだけど?
どうすればいい?
関数呼び出し時に、値を渡すのはなしで。
0973972
2009/08/29(土) 19:00:07ID:???参照出来ました。
初歩的なミスをしておりました。
0975nobodyさん
2009/08/30(日) 02:28:33ID:???この辺修正できてる人いる?
なんかいろいろいじってみたけど、正規表現が複雑すぎて直せない。
0977名無しさん@そうだ選挙に行こう
2009/08/30(日) 14:22:50ID:???0979nobodyさん
2009/08/31(月) 14:39:00ID:???0981nobodyさん
2009/08/31(月) 17:46:51ID:???$usesだっけ、のほうが見やすいかなと。
0982nobodyさん
2009/08/31(月) 19:48:51ID:???$this->render($action);
で、ビュー呼び出すのにデフォルトのほうしか呼べないのは困ったもんだよね。
0983982
2009/08/31(月) 19:57:46ID:???ってやったらちゃんと探してきてくれた。嬉しい。
0984nobodyさん
2009/09/01(火) 12:24:01ID:???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:???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:???まぁ仕事でも使ってるけど。
0993nobodyさん
2009/09/01(火) 23:44:29ID:???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/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。