【PHP】フレームワーク CakePHP 6ホール目【v1.2】
■ このスレッドは過去ログ倉庫に格納されています
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
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:???■ このスレッドは過去ログ倉庫に格納されています