トップページ⇒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/
0283nobodyさん2007/06/21(木) 13:01:06ID:???
こんなレベルで仕事できるんだな。
0284nobodyさん2007/06/22(金) 07:56:43ID:???
でもcakeみたいにDB構造かえやすいフレームワークなら必要に応じて増やしていくのもありかとおもう今日この頃
0285nobodyさん2007/06/22(金) 10:50:28ID:???
それは足場段階でやることであって、運用段階でやることではない
0286nobodyさん2007/06/23(土) 02:10:21ID:???
>>281みたいなあほな仕事してた奴が、こないだ失踪した。
0287nobodyさん2007/06/23(土) 02:46:18ID:???
おまいらそろそろ馬鹿はほっといてcake話しようぜ。まあ大体いい情報はフォーラムかGoogleグループにでてるがな。
cake本はやくでないもんか。
0288nobodyさん2007/06/23(土) 02:52:45ID:???
1.2が正式になってからでいいよ
0289nobodyさん2007/06/24(日) 20:00:51ID:???
開発環境(Windows)から、本番環境(Linux)に移行するとき、何か気をつけたほうがいいことってあります?
本番環境はPHP+mod_rewriteが使えるApache+MySQLは使えるんですが、すぐ移行ってできるもんなんでしょうか?
そういうのを説明してくれているサイトって無いですよね。。
0290nobodyさん2007/06/24(日) 21:19:34ID:???
>>289
ディレクトリセパレータにcakeが用意してる定数DSを使うとか・・
特に気にせずとも動いちゃってるので気にしたことがないっす
0291nobodyさん2007/06/24(日) 21:29:19ID:???
>>290
え、cakephpのフォルダをそのまま本番ディレクトリへコピーするだけなんでしょうか?
webrootだけをdocumentroot下に置いて、それ以外は上に置くとかなんかありませんでした?
0292nobodyさん2007/06/24(日) 21:30:54ID:???
そんなもん使い方や設定によるだろ
一概にどうすればいいとは言えない
0293nobodyさん2007/06/24(日) 21:47:03ID:???
>>292
使い方や設定っていうと?
もうスタンダードな使い方でいいんですけど、そのままコピっておkですかね?
0294nobodyさん2007/06/24(日) 21:52:03ID:???
テスト環境つくってやってみるのが吉とおもわれ
0295nobodyさん2007/06/24(日) 22:12:50ID:???
>>294
ありがとうございます。
もちろんテスト環境つくってやるつもりなんですが、
やっぱり試行錯誤する感じでいくしかないですかね。
0296nobodyさん2007/06/25(月) 00:55:35ID:???
webrootだけをrootにおいて(つまりはhttpでアクセスを許可させて)後はアクセスできないようにしとくくらいじゃないか?
テスト環境で動くなら。
0297nobodyさん2007/06/25(月) 18:13:58ID:???
HTMLヘルパーに<input type="button">がないよな。。
0298nobodyさん2007/06/25(月) 19:46:41ID:???
$html->input('Unkos/unko' , array('type'=>'button'))
0299nobodyさん2007/06/26(火) 14:03:38ID:???
>>298
あざっす!
0300nobodyさん2007/06/27(水) 12:00:32ID:5woCK0g1
Cakeのディレクトリ構成がうまく理解できないです。
コントローラで、
webroot/temp/test.txt
を削除したかったら、unlink()にどう指定してあげればいいんですか?
unlink('/temp/test.txt');
初めこうしたのですが、$this->webrootという変数があったので、
unlink($this->webroot . '/temp/test.txt');
こうしたのですが、
これでもだめでした。
No such file or directoryとエラーが出てしまいます。
0301nobodyさん2007/06/27(水) 12:28:55ID:???
>300
適当なビューでecho $this->webroot;して試してみたらどお?
0302nobodyさん2007/06/27(水) 12:45:14ID:5woCK0g1
>>301
どういうことですか?コントローラからunlinkしたいんですが、、、
ためしにやってみましたが、
http://localhost/ 以下(コントローラ名含まず)が出力されました。
0303nobodyさん2007/06/27(水) 12:58:04ID:xI/8M0tS
win鯖で作ったプログラムをリナクスにそのまま貼り付けて使えるでしょうか?
鯖のOS変わるとプログラムの書き方も変わるんでしょうか?
0304nobodyさん2007/06/27(水) 13:05:02ID:???
>>300
unlinkの引数はURLじゃなくてパス。
システム内での実体のある絶対パスか相対パスを与える。

>>303
場合による
0305nobodyさん2007/06/27(水) 13:42:59ID:5woCK0g1
>>304
うーん、何度やっても同じエラーがでます。
具体的にどう書けばいいんでしょうか。。
0306nobodyさん2007/06/27(水) 14:01:16ID:???
>>305
$this->webrootに入ってるのは「http://localhost/以下」なんでしょ?
unlinkの引数はURLじゃなくてパスなんだから、$this->webrootをunlinkに
突っ込んでも無駄。
×unlink('http://localhost/hoge/temp/test.txt');
○unlink('/home/hoge/cake/app/webroot/temp/test.txt');
0307nobodyさん2007/06/27(水) 15:13:03ID:5woCK0g1
>>306
ご丁寧にありがとうございます。
ローカルとサーバでOSが違うので、相対パス(../../webroot/.......みたいな)にしました。
0308nobodyさん2007/06/27(水) 16:06:07ID:???
webrootのフルパスなら定数 WWW_ROOT で定義されてない?
0309nobodyさん2007/06/27(水) 18:10:43ID:???
レベル低っ・・・・フレームワーク使う前に、ほかにやることありそう
0310nobodyさん2007/06/27(水) 20:12:38ID:???
本質的な質問が最近全くでてこない件
0311nobodyさん2007/06/27(水) 22:00:42ID:???
フレームワーク使うメリットがまったく享受できないレベルのやつがいるな。
すべてのレベルのプログラマという名目だが、さすがにPHPの基礎くらいは出来てないとな。
0312sage2007/06/28(木) 09:22:28ID:???
これってまだ trunk でも実装されてないですよね?
ttp://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&topic_id=550&forum=6
0313nobodyさん2007/06/28(木) 16:45:47ID:b86P8EwS
delにcondition付けろ
0314nobodyさん2007/06/29(金) 01:42:18ID:???
Cakeが焼けるようになっても作りたいお菓子がありません。
0315nobodyさん2007/06/29(金) 11:03:28ID:???
たとえば投稿記事に関連してコメントがつけられている場合、
投稿記事を削除するときに、コメントも削除したいんですが、どう書くんでしょうか。
アソシエーションは機能しているので、関連して呼び出すことはできています。
0316nobodyさん2007/06/29(金) 14:09:47ID:???
マニュアルのModelsのAssosiationsのdependentの辺りを100回読む
0317nobodyさん2007/06/29(金) 15:27:07ID:XE3VOI38
/app/tmp/の中にある画像をビューで表示させたいんだけど、どうもうまくいかないです。
相対指定じゃないといけないんでしょうか?よろしければコード例をお願いしたいです。。
0318nobodyさん2007/06/29(金) 16:01:14ID:???
webroot以下に置けよ
0319nobodyさん2007/06/29(金) 16:16:09ID:XE3VOI38
>>318
やっぱビューからじゃアクセスできないみたいですね・・・。
せっかくtmpがあるのに、webroot以下にまたtmpディレクトリ作るのはちょっとやな感じですが、そうします。
0320nobodyさん2007/06/29(金) 21:34:10ID:???
再掲

>レベル低っ・・・・フレームワーク使う前に、ほかにやることありそう
0321nobodyさん2007/06/30(土) 00:36:03ID:???
>>319
君におススメ!
http://www.amazon.co.jp/Ethna%C3%97PHP-LL%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AFBooks-%E8%97%A4%E6%9C%AC-%E7%9C%9F%E6%A8%B9-%E4%B8%80%E4%BA%95/dp/4774131393/ref=pd_bbs_sr_1/249-9902260-8715545?ie=UTF8&s=books&qid=1182839405&sr=8-1
0322nobodyさん2007/06/30(土) 01:20:18ID:???
>>317はウェブの仕組みを勉強した方がいいだろ
0323nobodyさん2007/06/30(土) 02:06:58ID:???
>>317の人気に嫉妬
0324nobodyさん2007/07/02(月) 15:09:11ID:???
>>320-322
ん?ビューからwebroot以外にはアクセスできないだろ
0325nobodyさん2007/07/02(月) 20:59:09ID:???
レベル低いの上塗り乙
0326nobodyさん2007/07/02(月) 21:51:21ID:???
cakeの使用感が知りたくて来ましたがこのスレは何の参考にもなりませんでした。
本当に有難うございました。
0327nobodyさん2007/07/03(火) 11:48:07ID:???
なんで技術系のスレってキモいやつが多いんだろうね。
レベルが低かろうがほっとけばいいのに。
0328nobodyさん2007/07/03(火) 12:21:28ID:???
と、一言書くやつのほうがきもいなw
0329nobodyさん2007/07/03(火) 13:41:23ID:8i5o6UCU
セッションの値によって管理者用のメニューの表示・非表示を切り替えるような処理って、>196みたいに手動でセッションをセットするもんですか?
0330nobodyさん2007/07/03(火) 14:06:51ID:???
場合によるだろ。それだけでは分からん。

レイアウトを切り替えれば事が済むなら
自分で用意したAppControllerでコンストラクタをオーバーライドして
セッションの値によってlayout変数を切り替えればいいだろうし。
0331nobodyさん2007/07/03(火) 15:31:24ID:???
むしろ
>手動でセッションをセットする
という意味がわからない。
0332nobodyさん2007/07/03(火) 18:18:52ID:F4VpoSCG
テーブルを継承したいです。
でもcakePHPでは無理です。
Ruby on Railsをつかいましょう。
0333nobodyさん2007/07/04(水) 02:48:45ID:gN4ff124
>329

<?php if(isset($session->User)){ ?>

って普通にビューからコンポーネントにアクセスできるんですね。
自己解決しました。

>330
有難うございます
0334nobodyさん2007/07/04(水) 05:14:32ID:gN4ff124
アクションの中で
var_dump($_COOKIE);
としても全部のクッキーが表示されないのはCakePHP1.1のせい?なんかやってる?
0335nobodyさん2007/07/04(水) 10:10:25ID:???
クッキーをセットする時のパスが間違ってるとかじゃないのか。
Cake通さなければ普通に表示される?
0336nobodyさん2007/07/04(水) 21:48:23ID:???
Rhino on Railsってどうよ
0337nobodyさん2007/07/04(水) 22:10:12ID:???
ttp://www.aoky.net/articles/steve_yegge/rhino-on-rails.htm
これか?読んでないんだが、一言で言うと何?
0338nobodyさん2007/07/05(木) 00:53:35ID:???
そもそもJavaScriptのクロージャに悩まされる俺にはムリ
0339nobodyさん2007/07/05(木) 01:17:46ID:K+ZRu43A
>>334は>>335でした
さんきゅー
0340nobodyさん2007/07/05(木) 04:42:53ID:???
CakeのRSSヘルパーってないの??
0341nobodyさん2007/07/05(木) 09:02:47ID:???
探してから言え
0342nobodyさん2007/07/05(木) 17:37:10ID:???
一応ヘルパーみていったんだがあるのか
0343nobodyさん2007/07/05(木) 19:23:19ID:???
だから公式で探してから言えよ
0344nobodyさん2007/07/05(木) 21:33:11ID:???
つか、layoutとviewだけでRSSなら吐けるんじゃ・・
layoutの方で頭にRSS用のヘッダ吐くようにして。
03453442007/07/05(木) 21:33:49ID:???
その辺は昔CheeseCake PhotoBlogを参考にしていろいろやってた
0346nobodyさん2007/07/06(金) 04:07:26ID:???
いやな、rssは出力したんよ。ただrssのurlをheadにかくじゃん?あれをhtmlヘルパーみたいなのでかきたかったのよ。ヘルパーのヘルプみてもみあたらなかったからさ
0347nobodyさん2007/07/06(金) 10:06:30ID:???
>>346
わかりにくっ。link要素のことか。
1.1観た限りでは無さげ
0348nobodyさん2007/07/06(金) 10:41:52ID:???
rss出力自体をさすがにヘルパーで出せないだろと思ってたからヘルパー使う=リンクみたいな前提があっちゃったのよ。一個前のレスで確かにわかりづらいなとオモタよ!
0349nobodyさん2007/07/06(金) 14:15:24ID:???
みなさんDATE型、というかTIMESTAMP型の扱いってどうしてますか?

例えばDB(他は試してないけどpostgreSQL7.x 8.x)に
birthday DATE
って列があって、

cakePHP側ではビューに
$html->dateTimeOptionTag('Profile/birthday', 'YMD' , 'NONE', $html->tagValue('Profile/birthday'), array())
こんな感じでコントローラーに受け渡してしまえば、
コントローラーでは
$this->Profile->save($this->data)

これでサックリ、
と普通だったらそうなんですが、
何も選択してないままだとSQLに
birthday=''
を吐き出してしまって、DBからいつも
「DATE型やっちゅうのに何おまえ(空)文字入れようとしとんねん!」
と怒られるんです。

かといって誕生日なんて(システム的にどーでもいい)情報、NOT_EMPTYにできないし
仕方がないのでコントローラーでわざわざSQL書いたり、
空白だったら1970-1-1にしといて、ビュー側で1970-1-1だったらNULLと同じ扱いにする、
などなど、日時情報にイチイチぶさいくな事してるんだけど、
どこにも話題が無いって事は自分がぶさいくなだけで絶対
何かcakePHP的に合理的な方法があるはず!と思ってますが
ヒントだけでも誰か教えてください。
0350nobodyさん2007/07/06(金) 14:24:20ID:???
MySQLなので空文字放り込んでも0000-00-00になるからあんまり気にしてなかったなあ
0351nobodyさん2007/07/06(金) 15:05:44ID:???
自己解決しました。
cake/controller/controller.phpにある
cleanUpFields
をコピペして
app_controller.phpに突っ込んで、
$this->params['data'][$modelName][$field['name'] . '_year']
$this->params['data'][$modelName][$field['name'] . '_month']
$this->params['data'][$modelName][$field['name'] . '_day']
などなど、
dateTimeOptionTagで生成されるパラメータのいずれかがemptyなら
$this->data[$modelName][$field['name']] = $newDate;
を発行しない、という処理を加えていくだけ。


独自でconfirm作ってる場合は、cleanUpFieldsかける前に
いずれかが空白(未選択)なら確認画面に戻す処理を書き加えても良いだけだし。


こんな小一時間考えればわかるような事に俺は…
お騒がせしました。
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エラーになる…はず
■ このスレッドは過去ログ倉庫に格納されています