トップページ⇒php
987コメント299KB

【PHP】フレームワーク CakePHP

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/11/18(土) 20:53:22ID:???
おら、とうとうガマンできなくて立てちまっただ

本家
http://www.cakephp.org/

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

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

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

あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
0352nobodyさん2007/07/07(土) 01:33:20ID:r27wk2rh
みなさん確認画面とかって一個ずつhiddenとかエラーメッセージ用のヘルパーかいてます?すごく面倒くさいんですが・・・
0353nobodyさん2007/07/07(土) 10:59:23ID:???
確認画面以前に、投稿画面も含めて遷移が必要なものについては
yamlで共通configファイルを作ってるけど。そこで変数やformの属性を全部定義してる。
0354nobodyさん2007/07/07(土) 11:25:14ID:???
>>352
hiddenに関してはループ処理でまとめられそうな気がするよ。
俺はserializeしてbase64してハッシュつけて1個のhiddenにつっこんだりしてる。改変も防げて便利便利〜。

まあそもそも入力項目が多いということはアプリケーションがそれだけ複雑ってことだ
0355nobodyさん2007/07/07(土) 11:32:48ID:???
どっかに確認画面のサンプルあったぞ。
そんな面倒なことしてなかったキガス
そんなことしてたらCake(FW)の意味ない品
03563532007/07/07(土) 11:36:33ID:???
>>354
あ、自分もそうしてる。で、そのループ処理でhiddenする項目をconfigで設定してる。
0357nobodyさん2007/07/07(土) 15:46:25ID:???
confirm挟む時は入力値は全部セッションに入れてるな。confirmのformで送るのはtokenだけ。
0358nobodyさん2007/07/07(土) 16:53:17ID:r27wk2rh
>>353
yamlで共通configファイルを

>>354
俺はserializeしてbase64してハッシュつけて1個のhiddenに

おもしろいですね、ぜひ詳しく聞かせて欲しい
0359nobodyさん2007/07/07(土) 18:39:04ID:???
> 俺はserializeしてbase64してハッシュつけて1個のhiddenに
詳しくって、このまんまだと思うぞ。

0360nobodyさん2007/07/07(土) 18:54:40ID:???
modelのyaml定義とかと連携させるというのを捨象してviewだけで書けば、
name:←変数名
 inputview:←入力form用view
  form:input
  size:30
....以下略
 confirm:←確認form用view
  form:hidden
  table:
   width:なんたら
とかやっておくだけ。

yamlで配列に取り込んでinput用viewの時には$array['name']['inputview']の定義を使って、formを描く。
confirmの場合は$array['name']['confirm']のを使う。

confirmの時のserialize云々は、>>359氏が言ってるようにそのまんまだとおもうけど
foreach($array as $key => $attrs) {
  if( $attrs['confirm']['form'] =='hidden'){
   $hiddenarray[$key] = post値;
  }
}
とかしておいて、$hidden = base_64encode(serialize($hiddenarray));
あとは一つの hidden formに一括入れちゃえばいい。
ハッシュ付けたい時は $hidden .=ハッシュ値(お好みで設定)、とすればいいでしょ。
あとはwriteの時にハッシュをreplaceして、decode->unserialize。このときにも上のyamlの配列キーが使える。

 
0361nobodyさん2007/07/08(日) 21:18:20ID:???
ttp://cakephp.xrea.jp/?p=21
ここ参考にして、ブログにコメント機能を実装してみたのですが。
一覧表示で、記事ごとにコメント数を表示させていて、
この方は記事についているコメントをcount関数を使っているみたいなんですが、
この方も言われているようにスマートではないと思うんです。
おそらくfindCountを使うんだと思いますが、どう書いたらいいか考えても思いつきません。
どなたかアドバイスいただけませんか。
0362nobodyさん2007/07/09(月) 03:25:38ID:+2G34Por
コントローラーでの$this->flash('message','action',0)って使ってる?
数秒メッセージを表示してリダイレクトって気持ち悪いので普通に$this->redirectでリダイレクトしてます。
なんか便利な使い方があるんでしょうか?
0363nobodyさん2007/07/09(月) 04:31:27ID:???
ニーズによる
0364nobodyさん2007/07/09(月) 08:16:45ID:???
>>362
リロード対策だっけ
あと開発中は実行SQLをそのページでさっと確認できるし
0365nobodyさん2007/07/09(月) 08:44:28ID:ldZF+CQo
質問っす!
http://localhost/cake/tests/indexにアクセスするとページが見つからないって怒られます

<?
class TestsController extends AppController {
  function index() {
  }
}
?>
と書いたcake/app/controllers/tests_controller.php
とcake/app/views/tests/index.thtmlを配置しています
何が不足しているのでしょうか?
0366nobodyさん2007/07/09(月) 09:03:09ID:???
var $name = 'Tests';
が必要かも。
03673652007/07/09(月) 10:39:41ID:???
それを加えても変わらずです
0368nobodyさん2007/07/09(月) 12:59:15ID:???
もちろんモデル作ってるんだろうな
0369nobodyさん2007/07/09(月) 14:11:10ID:???
>>366
$name がいるのはモデルだろう。
0370nobodyさん2007/07/09(月) 14:22:07ID:???
質問する奴も回答する奴も酷いな
0371nobodyさん2007/07/09(月) 14:35:38ID:???
このスレには批判しかできないやつが住み込んでるみたいだなw
0372nobodyさん2007/07/09(月) 14:39:41ID:???
>このスレには批判しかできないやつが住み込んでるみたいだなw

プログラマは悲しいことにそういうやつ多いよ。
0373nobodyさん2007/07/09(月) 14:40:42ID:???
>>370-372
お前ら全員そうじゃん
0374nobodyさん2007/07/09(月) 14:43:08ID:???
>>373
俺らが何?批判しかしないやつ?プログラマ?

俺は最低限プログラマじゃないわ。批判もしてないけどな。
0375nobodyさん2007/07/09(月) 14:44:22ID:???
まぁまぁケーキでも食って落ち着けって
0376nobodyさん2007/07/09(月) 15:10:44ID:???
それ以上太るつもりかデブ共
0377nobodyさん2007/07/09(月) 16:49:24ID:???
ほかのFW系スレより(本質的な議論とは別のところで)元気があってよろしい
03783652007/07/09(月) 17:09:44ID:???
他所で質問をし直します
0379nobodyさん2007/07/09(月) 17:37:23ID:???
うんうんそれがいいよ
0380nobodyさん2007/07/09(月) 17:39:36ID:???
ページが見つからない、ってまさか404 NotFoundじゃあないだろうな
エラーメッセージを回答者に想像させといて適格な答えが得られる訳がない
(俺はエラーメッセージ書かれても答えられないけどな)
0381nobodyさん2007/07/09(月) 18:01:13ID:???
なんでさっきからプログラマ職とは関係なさそうなやつがいるんだ
03823652007/07/09(月) 19:51:34ID:???
>ページが見つからない、ってまさか404 NotFoundじゃあないだろうな
>エラーメッセージを回答者に想像させといて適格な答えが得られる訳がない

(ファイルとして存在しない)URIからコントローラのアクションを要求しているんだから
CakePHPが処理しない限りはHTTP404 NotFoundエラーになる…はず
0383nobodyさん2007/07/09(月) 20:16:13ID:???
インストールからつまづいてるね。
http://www.cakephp.jp/doc/installing.html
ここを全ページ5万回読み直してインストールから試してごらん。
正しく出来てるなら
http://localhost/cake/tests/index
だろうと
http://localhost/cake/hogehoge/unko
だろうと次に何すればいいか表示されるから
0384nobodyさん2007/07/09(月) 20:44:27ID:???
365貴様!!マルチポストだ!!
http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&topic_id=614&forum=8
どこに書いても答えは同じだ!!
0385nobodyさん2007/07/09(月) 20:48:16ID:???
まぁいいんじゃない
0386nobodyさん2007/07/09(月) 20:50:24ID:???
そもそもDocumentRootの設定をしてない、に3000点
0387nobodyさん2007/07/09(月) 21:23:33ID:???
よくねーよ
0388nobodyさん2007/07/09(月) 21:56:46ID:???
俺はrewriteEngine on とかrewriteまわりを設定してない、に全部
0389nobodyさん2007/07/10(火) 05:24:47ID:???
Apacheを立ち上げていない、に5000点
0390nobodyさん2007/07/10(火) 09:04:44ID:???
存在しないコントローラやアクションを指定してアクセスした場合
画面上にエラーが多数表示されるんですが
そういった場合に特定の処理を実行させるにはどのようにすればいいですか?
0391nobodyさん2007/07/10(火) 12:54:59ID:???
>>390
app/error.php というファイルを作って、ErrorHandler を extends した
AppError クラスを定義する。
ErrorHandler は cake/libs/error.php にある。

適当に missingController($params) やらをオーバーライドするなり
__construct からごっそりすげ替えるなりご自由に。
0392nobodyさん2007/07/10(火) 14:45:32ID:???
>>391
なんだ、まともな人もいるじゃん。
0393nobodyさん2007/07/10(火) 18:11:20ID:???
ばか、まともな人だらけだっつの
0394nobodyさん2007/07/10(火) 21:36:20ID:???
その中で俺がトップ。
03953902007/07/10(火) 22:22:01ID:???
>>391
アリガトウ(T_T)
0396nobodyさん2007/07/10(火) 22:50:28ID:???
CakePHPでWikiのページ履歴みたいなのを作るには
どういう設計にすればいいかなぁ?
0397nobodyさん2007/07/10(火) 22:55:24ID:???
wikiのラッパだけ作る
0398nobodyさん2007/07/10(火) 22:56:15ID:???
ネタはよそでお願い。
0399nobodyさん2007/07/11(水) 00:45:38ID:???
質問からネタっぽいのだが
テーブルの構造だったらスレ違い&板違いだよね

diffをとったものをガンガンレコードに追加すれば?
0400nobodyさん2007/07/11(水) 01:10:33ID:???
>>399
つまり、MediaWikiとは違った設計ということですね?
0401nobodyさん2007/07/12(木) 11:23:56ID:???
カラムのデータを svn にぶちこむDBクラスをでっちあげるとか?
衝突が起きたときのマージのインターフェイスをちゃんとつくれば
分散wikiとか夢はひろがりますな.
0402nobodyさん2007/07/12(木) 14:42:58ID:iLx7lYjZ
何か質問ある?
0403nobodyさん2007/07/12(木) 14:48:39ID:???
ない
0404nobodyさん2007/07/12(木) 14:51:49ID:???
ある。

MediaWikiのように、現在のページ(pageテーブル。ページ内容含まず)を
更新するたびにそのページのリビジョンテーブル(revisionテーブル)に
新しいリビジョンを追加し、そのリビジョンテーブルに関連した
テキストテーブルにデータを追加。
(そして表示するときは、その最新リビジョンを表示)

というのはscaffoldやbakeでさくっとできないの?

データベースレイアウト
http://www.mediawiki.org/wiki/Database
0405nobodyさん2007/07/12(木) 15:03:54ID:???
できるんちゃいますやろか
0406nobodyさん2007/07/12(木) 15:10:09ID:???
どうやって?

なんかCakePHPってモデル(テーブル)に直接書き込むのは
簡単だけど、モデルへの書き込み(Update)を追加(Insert)に
変更するのは面倒そうなんだよな。

具体的にいうと、Wikiのページを更新すると、
pageテーブルに上書き、
revisionテーブルに追加、
そのrevisionテーブルに追加した行に関連したtextテーブルに追加、
と三つのアクションになる。

そしてページを表示するときは、revisionの一番新しいのだけ表示。

これってスマートに実装できるんだろうか?
まあ、レールを脱線してがんばれば
どんなことだってできるだろうけど。
0407nobodyさん2007/07/12(木) 15:46:25ID:???
Cakeの$model->save()はUpdateとInsertの明確な区分がなさげなので、
レコード追加時はidを空、レコード変更時は、あらかじめ変更するレコードの
idカラムを取得してセットしておく必要があるが、それ以上難しいことってある?
ごめ、俺、理解してないかも。
0408nobodyさん2007/07/12(木) 15:49:03ID:???
?revisionテーブルは新しく作るんだろ?別に既存モデルの変更じゃないやん。
あとページ表示は単にpageテーブルからのデータで問題ないでしょ?revisionテーブル必要ない。
0409nobodyさん2007/07/12(木) 16:00:45ID:???
参照先見てないが、履歴を残すためにrevisionテーブル使ってるんじゃない?
revisionとtextが1:1だったらtextテーブルの意味のほうが良く分からん
まあぶっちゃけpageテーブルだけでもいけるとは思うが
0410nobodyさん2007/07/12(木) 21:15:19ID:???
そう。revisionは履歴を残すため。たぶん。
(MedhiaWikiは履歴の実装を見るために参考にしただけだから詳しくない)

revisionとtextがなんて分かれているかは知らないが、
MediaWikiでは分かれている。
0411nobodyさん2007/07/12(木) 21:21:59ID:???
ちょっと個人的に整理してみると、

まず、pageテーブルを編集する。
そこに履歴の仕組みを作りたい。

その方法として、pageテーブルから
バージョンごとで違う情報をrevisionテーブルに移動し、
そちらに格納する方法。(MediaWiki)

もう一つの方法として、pageテーブルはそのままで、
pageテーブルが更新されたら、履歴情報をhistoryテーブル
(フィールドはpageテーブルのフィールド+リビジョンID)に
追加しておく方法。

個人的には後者の方がCakePHPで素直に実装できそうな気がするが、
MediaWiki方式のほうに大きなメリットがあるだろうか?
0412nobodyさん2007/07/12(木) 21:31:24ID:???
前者のメリットとして、テーブルの構造に変更があったとき
revisionテーブルだけの修正ですむ。
(後者だと、pageテーブルとhistoryテーブルの二箇所を変更しないといけない)

後者のメリットとして、pageテーブルにはよく見るであろう最新データのみが
入っているため、履歴も含めてすべて同じテーブルに入っている前者よりも負荷が少なそう。
0413nobodyさん2007/07/12(木) 23:37:35ID:???
おれなら後者
0414nobodyさん2007/07/13(金) 10:06:11ID:???
これが正解ではないが、IBMにチュートリアルがある。
"Create an interactive production wiki using PHP"
http://www-128.ibm.com/developerworks/views/opensource/libraryview.jsp?search_by=production+Wiki+PHP

Wiki作成しながらCakePHP語るのもいいかもね。
0415nobodyさん2007/07/13(金) 17:50:45ID:j8+9kyhU
1.1.16.5421リリース今更発見あげ
0416nobodyさん2007/07/17(火) 11:51:36ID:c9LkXXMo
まったくの初心者で、そもそもデバックをどうしたらよいかわからないのです。モデルとコントローラーとビューを作ったけれど何が悪くて画面が真っ白なのか?エラーも表示されていない、どこが悪いかどうやって調べたらよいか教えてくれる方おりませんか?すみません。
0417nobodyさん2007/07/17(火) 12:09:35ID:???
>>416
そのレベルの人は身近に教えてくれる人を見つけることが先決。

それが無理なら「cakePHP 真っ白」とかでひたすらググろう。
0418nobodyさん2007/07/17(火) 12:10:12ID:HxVHyr/E
お前らの開発環境教えれ
0419nobodyさん2007/07/17(火) 12:33:26ID:???
開発環境の何を教えて欲しいのか分からん
0420nobodyさん2007/07/17(火) 14:55:40ID:???
秘書の数とか、そういうの
0421nobodyさん2007/07/17(火) 15:58:57ID:???
>10分で作るCakePHPアプリ アプリケーション編
この中で使ってるPHPエディタのフォントを教えてください
0422nobodyさん2007/07/17(火) 16:27:03ID:???
>>421
ダサ字
0423nobodyさん2007/07/17(火) 16:35:22ID:HxVHyr/E
>>419
OSとエディタだよ
0424nobodyさん2007/07/17(火) 17:04:38ID:???
まず自分の環境を晒してから聞け
0425nobodyさん2007/07/17(火) 17:34:38ID:???
俺んとこは24インチデュアルだな。
0426nobodyさん2007/07/17(火) 17:53:03ID:???
うちはとりあえずRAID5で組んである。あと個人ごとにUPS付き
0427nobodyさん2007/07/17(火) 18:58:20ID:???
資料請求、管理プログラムをcakephpに移植しようと考えてるんだけど、
あるディレクトリ以下をcakephpに処理を任せることは可能?
0428nobodyさん2007/07/17(火) 19:26:57ID:???
>>427
可能。
04294272007/07/17(火) 19:39:07ID:???
>>428
サンクス
0430nobodyさん2007/07/17(火) 20:34:39ID:???
俺んとこは新築マンションだな。
最寄り駅まで徒歩2分
0431nobodyさん2007/07/17(火) 22:16:46ID:???
うちは、とりあえず土日出勤の場合は代休時間が1.2倍で加算される。
あと昼飯については、レシートだけで領収書代わりにしてくれる。
0432nobodyさん2007/07/17(火) 23:44:04ID:???
IBMのwikiチュートリアルためしたんだが、セッション関連のバグが出る。
誰かうまくいったやついる?
0433nobodyさん2007/07/18(水) 00:07:30ID:???
>>432
環境を書け
04344322007/07/18(水) 10:34:40ID:XEakOCt8
>>433
マウスとキーボードはhpのやつです。
0435nobodyさん2007/07/18(水) 10:54:14ID:???
俺はキーボードはオウルテックでマウスはMS。
0436nobodyさん2007/07/18(水) 12:18:59ID:???
メモリは1GBで我慢してるよ
0437nobodyさん2007/07/18(水) 12:19:13ID:???
この流れの全ての原因は>>425にある。謝れ
0438nobodyさん2007/07/18(水) 12:30:40ID:???
ちんぽ舐めたらな
0439nobodyさん2007/07/18(水) 15:44:55ID:???
ここは環境を書くスレです
0440nobodyさん2007/07/18(水) 16:24:22ID:???
>>396からちょこちょこwikiの話振ってきた人まだいるかな?

http://techno.hippy.jp/rorwiki/?Wiki%A4%F2%BA%EE%A4%C3%A4%C6%A4%DF%A4%EB
ここに履歴保存とか、それをつかった衝突検知とか差分検出とかについてかいてあって参考になる。
railsだけど
0441nobodyさん2007/07/18(水) 17:50:44ID:???
たまにこの板にもまともな人いるのな。
0442nobodyさん2007/07/18(水) 23:22:49ID:???
>>416


画面が真っ白になるのは、基本的にインクルードファイルの文法ミスが原因
ローカル環境にPHPをインストールして、文法チェックに対応したエディタを使うといいよ。
0443nobodyさん2007/07/19(木) 22:47:07ID:???
>>440
いますよー。定期的に見てます。
リンク先よく読んで見ます。

でも、実は衝突検知とか差分検出とかは
あまり重要じゃなかったり。
というのも、作ろうとしているのは一人WIKIだから。
(しかもWIKI記法じゃないのでWIKIですらない?)
0444nobodyさん2007/07/19(木) 23:00:14ID:???
一人wikiなんてのはwikiじゃないんだが
0445nobodyさん2007/07/19(木) 23:16:00ID:???
>>444
ローカルウィキでぐぐってね
0446nobodyさん2007/07/20(金) 01:47:56ID:???
俺は一人trac、一人Microsoft Projectを嗜む男ですが
それが何か
まあ共有知じゃねーじゃんって意味では>>444のいいたいことも
わかるけどね
0447nobodyさん2007/07/20(金) 09:40:35ID:???
ローカルウィキなんてwiki風cmsです程度のはなしだろ。
0448nobodyさん2007/07/20(金) 10:05:33ID:???
差分処理とか関係ないなら、なにも悩むところないじゃん。
あとは個人用なら、独自タグにどんなのやつを採用するかぐらいだろうな。
ttp://www.michelf.com/projects/php-markdown/こういうのを乗っけるのはどうか。
0449nobodyさん2007/07/20(金) 13:49:37ID:???
ローカルで閉じた中でやるなら、「htmlエンティティをエスケープしない」でもよくね
04504442007/07/20(金) 22:25:08ID:???
>>445
ぐぐったけど、こんなもんwikiじゃねーだろ
>>446
だったら、共有知実装なしのwikiなんかwikiって言うのがおかしいのはわかるよね。
0451nobodyさん2007/07/20(金) 22:52:24ID:???
wikiは目的を指す用語ではない。
■ このスレッドは過去ログ倉庫に格納されています