[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 03/21 03:13 / Filesize : 213 KB / Number-of Response : 845
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】フレームワーク CakePHP 3ホール目【本命】



1 名前:nobodyさん [2008/03/14(金) 15:16:00 ID:HF9x5ODX]
www.cakephp.org/

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

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

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

あとこのへんとか(初心者向けTIPS)
www.avatarfinancial.com/pages/cake/

CakePHP入門リンク集
ttp://pub.studio15.jp/2007/11/13/cakephp-links/

【PHP】フレームワーク CakePHP 2ホール目
pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
pc11.2ch.net/test/read.cgi/php/1163850802/


707 名前:697 mailto:sage [2008/04/18(金) 21:47:07 ID:???]
>>705
やはりそうですか;
せっかくフレームワークを使っているのでできればクエリは書きたくないですね・・・

UsersをPostsの多い順に並べ替える、など、結構よく登場すると思うのですが;

708 名前:nobodyさん mailto:sage [2008/04/19(土) 01:00:18 ID:???]
> UsersをPostsの多い順に並べ替える、

やってないけど、これは、findAllの条件にexistsなんたらって書いて
countだせばいいとだろうから、一応findAllは使えるな。
半分ぐらいしか意味ないけど。

709 名前:nobodyさん mailto:sage [2008/04/19(土) 01:16:45 ID:???]
>>707

それか、1回データを取り出した後で件数をキーにした連想配列に入れかえるのはどうでしょうか。
配列の添え字を、

$array[$count .' - ' .$id]

こんな感じにして配列をソートしたら出来そうですが。


710 名前:nobodyさん mailto:sage [2008/04/19(土) 10:26:43 ID:???]
>>707
> UsersをPostsの多い順に並べ替える、など、結構よく登場すると思うのですが;

ちょうど同じような事例を考えていた。

顧客とその顧客の取引データが一対多でつながっている場合に
取引が多い顧客を見たいと。

で、いろいろ考えたんだが、顧客数や取引が多くなると重くなりそうなので、
(だって内部的には顧客ごとにデータ数えて、その数でソートするんだろう!?)
非正規化することになるが、顧客データの中に取引数フィールドを作ることにした。

あとは取引データ保存時、つまりモデルのafterSave時に、
顧客テーブルの取引数フィールドをいじればいいと。

フレームワークを使っているとこういうトリガー的なことを
データベースに依存せずにやれるから良いね。

711 名前:697 mailto:sage [2008/04/19(土) 11:37:16 ID:???]
>>ちょうど同じような事例を考えていた。

奇遇です!

なるほど・・・あえて非正規化する、と。
手元にある参考書に
「処理効率を考えて、あえて非正規化することもある」
と書いてあった意味がわかりました。

たしかに、毎回自分でクエリ書くのに比べたら、
冗長なデータを持っておくくらい、なんてことないですね!
目からウロコでした!

712 名前:nobodyさん mailto:sage [2008/04/19(土) 11:39:14 ID:???]
DB使ってる意味ねぇw

713 名前:697 mailto:sage [2008/04/19(土) 11:50:08 ID:???]
>>712
では、他に何かいいアイデアがあるのですか?

714 名前:nobodyさん mailto:sage [2008/04/19(土) 12:22:29 ID:???]
俺は自分でクエリを書いたほうが断然面白い。


715 名前:nobodyさん mailto:sage [2008/04/19(土) 12:31:41 ID:???]
1.2を入れてみたのですが、

function index() {
$data = "テスト";
$this->set('data', $data);
}

とやっただけで

Allowed memory size of xxx bytes exhausted ...

が出てしまいます;

CakePHP叩きではなく、本当に困っています。
対処法を教えてください。



716 名前:nobodyさん mailto:sage [2008/04/19(土) 12:38:01 ID:???]
>>715
その程度のコードで、そのエラーが出るときは、
基本的にバグだと思ったほうが良い。

まあ環境のせいもあるからとりあえず聞くけど、
OSとPHPのバージョンと、php.iniの設定(もしくはini_get('memory_limit'))の値)

function index() {
echo 'aaa';exit;
}
とやるとどうなるか。

index()以外のコードはどうなっているか。

717 名前:nobodyさん mailto:sage [2008/04/19(土) 12:42:21 ID:???]
>>712
> DB使ってる意味ねぇw

DB使うことが目的じゃないからね。
DBは所詮データの保存先に過ぎないし。



718 名前:715 mailto:sage [2008/04/19(土) 12:47:34 ID:???]
>>716
レスありがとうございます。

どうやらbakeで生成したビューをそのまま使っていたことが原因だったようです;
スレを汚してしまってすみません;;

719 名前:nobodyさん mailto:sage [2008/04/19(土) 13:08:09 ID:???]
>>717
じゃファイルベースでやりゃいいじゃん。やらない理由は?

720 名前:nobodyさん mailto:sage [2008/04/19(土) 14:35:19 ID:???]
CakePHP でPEARを使うとき
依存PEARがうまく発見できないのですが、
どうすればよいのでしょうか?
php.iniのinclude_pathには
app/vendorsを追加してあります。

721 名前:nobodyさん mailto:sage [2008/04/19(土) 17:44:54 ID:???]
>>719
> じゃファイルベースでやりゃいいじゃん。やらない理由は?

フレームワークがファイルベースに対応していないから。
(読み書きできないということではなく、モデルが対応していないということ)

722 名前:720 mailto:sage [2008/04/19(土) 18:05:22 ID:???]
すんません;
事故解決しました。

723 名前:nobodyさん mailto:sage [2008/04/19(土) 19:37:01 ID:???]
>フレームワークがファイルベースに対応していないから。
ユーザが自由に選択することもできないってこと?
強制的にDB使用?
CakePHP糞FWすぎるwwwww

724 名前:nobodyさん mailto:sage [2008/04/19(土) 20:20:16 ID:???]
流れ読まずにすみません。

CakePHPで作られてるサイトで有名なところを見てみたいのですが、
教えていただけませんか?
たしかNiftyのなんかがCakeだと聞きましたが・・・

725 名前:nobodyさん mailto:sage [2008/04/19(土) 21:00:48 ID:???]
mozillaのサイトとか



726 名前:nobodyさん mailto:sage [2008/04/19(土) 23:46:04 ID:???]
>>723

君頭大丈夫かね?

CakePHPは別にデータベースを使用する必要は無い。
ただデータベースを使ったほうが効率がいいだけだ。
それがファイルベースでやらない理由。

どうやら君は素人なのだろう。


727 名前:nobodyさん mailto:sage [2008/04/20(日) 00:01:18 ID:???]
>>711
非正規化は、一般的な業務システムでもよくやるな。

ただ、明らかに正規化をさぼってて、テーブルのカラム数が100個超えているのを
「性能を考えて非正規化している」と言い張る人はカンベンしてほしい。
あぁごめん。cakePHPの話から逸脱した。

>>723
どこか忘れたけど、コントローラあたりの設定で、DBを使わないようにもできたはず。
だれか補足頼むw
特殊な使い方でもしない限り、あんましメリットはなさそうだね。

728 名前:nobodyさん mailto:sage [2008/04/20(日) 00:32:54 ID:???]
>>726
相手を見下さないと精神を保てない糞FWユーザ涙目www

729 名前:nobodyさん mailto:sage [2008/04/20(日) 00:33:33 ID:???]
図星だったのか? その反応は。

730 名前:nobodyさん mailto:sage [2008/04/20(日) 00:34:22 ID:???]
モデルが貧弱なCodeIgnitorよりは
CakePHPの方が実用的に見て優れているな。

731 名前:nobodyさん mailto:sage [2008/04/20(日) 00:46:44 ID:???]
>>728
フレームワークに問題が無い話をしているのに
糞FWとか言っているようじゃ
説得力皆無だゾ

732 名前:nobodyさん mailto:sage [2008/04/20(日) 01:31:23 ID:???]
>>723
だからDB使わない事もできるって。
デフォルト設定がDB使用になってるだけで、全然強制じゃない。

ttp://www.1x1.jp/blog/2007/08/cakephp_no_db.html

ファイルベースの設定方法は、わざわざ書かなくてもいいよね?


>730
CodeIgnitorを使いたい人は使えばいいし、CakePHPを使いたい人は
使えばいいし、それだけの事。
CodeIgnitorは機能が少ない分、実装がシンプルで軽いのが特徴なんだから、
機能的に足りていれば、そっちでもいいでしょ。

733 名前:nobodyさん mailto:sage [2008/04/20(日) 01:35:00 ID:???]
ちいたん最強

734 名前:nobodyさん [2008/04/21(月) 16:11:05 ID:Hc1e0Bqc]
追加の検証が必要な不確実な情報
俺のコードに問題がある可能性もあり。

1.2.0.6311-beta のデフォルトのセッション管理(ファイルベース?)

Configure::write('Session.save', 'cake');

のとき、同時に複数のアクセスがあるとロックされるかもしれない。
つまり、一つの目のアクセスで長い処理を行っていると
二つ目のアクセスがロックされ一つ目が終わるまで実行されない。

Session->read()で待たされる。

Configure::write('Session.save', 'database');にして
DBベースのセッションにするととりあえず回避できる。

関係ないとは思うがPostgreSQLの場合。


735 名前:nobodyさん mailto:sage [2008/04/21(月) 16:34:17 ID:???]
PhpNutいなくなっちゃったの?



736 名前:734 mailto:sage [2008/04/21(月) 19:37:53 ID:???]
よく考えたら、ロックされるほうが正しいのか。

アクセスしたユーザーはロックされるが
他の人(ようするにセッションファイルが違う人)は
ロックされないようだ

737 名前:nobodyさん mailto:sage [2008/04/22(火) 13:08:38 ID:???]
初歩的な質問で申し訳ありません。

bakeで作ったコントローラをみると

$this->Session->setFlash(__('hogehoge.', true));

のようなコードがありますが

この__() や後ろのtrueは何を意味しているのでしょうか?
もしかするとcakePHPに限ったことではないかもしれませんが、
よろしくお願いします。

738 名前:nobodyさん mailto:sage [2008/04/22(火) 15:52:58 ID:???]
>>737
多言語化機能。

/app/locale/jpn/LC_MESSAGE とその周辺あたりに言語ファイル
.po や .mo を置くと、hogehogeが翻訳される。

多くはビューで使われるため、<?php __('hogehoge') ?> と簡便に書くことが出来るようになっている。
この場合、言語ファイルがあると、hogehogeが翻訳されて”出力”される。
第二引数にtrueを指定すると出力せずに戻り値として返すという意味。

これと似たやり方は、CakePHPだけでなく、PHP以外でも良く使われ
多くは _('hogehoge')という書き方をする。

PHPではgettext関数の別名として_()関数が使用できる。
jp.php.net/manual/ja/function.gettext.php

CakePHPではこのやり方を独自に拡張しており、
関数名がアンダーバー二つになっている。


739 名前:nobodyさん mailto:sage [2008/04/22(火) 15:54:09 ID:???]
おまけ。翻訳手順。poeditを使った場合。

1.ソースコードやビューの中の翻訳したい文字列を__('hogehoge')という書き方にする。
2.cake i18n extractツールを使うと、ソースコードの中から__()の部分を抽出、.potファイルを生成してくれる。
3.poeditなどのツールを使い、.potファイルを取り込み、.poを作る。
4..poを編集して翻訳リストを作っていく。
5.最後に.poを.moにコンパイルする。.moが最終的な翻訳ファイル。poeditの場合.poを保存したら.moも出来る。

6.新たに単語が増えたときは、2の手順で再度.potファイルを生成する。
7.poeditで今使っている.poに.potファイルを追加取り込みをする。ちゃんと差分だけが取り込まれる。削除された単語も.poファイルに残っている。
8.再度翻訳して保存。.moを作る。


ファイルの意味をまとめると、
.pot・・・単語のリスト(今現在使用している単語を抽出するテキストファイル)
.po・・・作業ファイル(過去に使用して、今は削除している単語の翻訳情報なども残っているテキストファイル)
.mo・・・翻訳ファイル(作業ファイルに残っているいろいろな無駄が取り除かれたバイナリファイル)

※ 実はCakePHPは .mo が無くても .po を直接翻訳ファイルとして使える。

740 名前:nobodyさん mailto:sage [2008/04/22(火) 18:29:42 ID:???]
>>737

いい質問。俺も初めてしった。

>>738,739

素敵だわぁ

741 名前:737 mailto:sage [2008/04/22(火) 18:43:22 ID:???]
>>738-9

丁寧なレスをありがとうございます。

CakePHPにはまだまだ知らない機能があるんですね。
いろいろ楽しみです。

742 名前:737 mailto:sage [2008/04/22(火) 18:44:53 ID:???]
アンカーの付け方間違えました・・・
マウスオーバーしないようにお願いします;;

743 名前:739 mailto:sage [2008/04/22(火) 18:56:32 ID:???]
一つ言い忘れた。.pot .po .mo とかの .で始まるやつは
ドットで始まるファイルではなく、拡張子という意味で書いた。

デフォルトではdefault.poやdefault.mo になる。
それぞれのファイルのdefaultの部分を変更することも可能。

abc.mo の場合、その場合、__d('abc', 'hogehoge') という書き方で
出来ると思うがやったこと無いので/cake/basics.phpでもよんどくれ。

744 名前:新参者 mailto:sage [2008/04/23(水) 05:59:57 ID:???]
ブラクラするんだけど、俺だけ?
メニューを選んで、表示し終わる前にサイト内検索する。(Specialofferとか)
www.islandcruises.com/

OS: WinXP sp2
Browser: IE7
CPU: Core2 6300
Memory: 2G
Service: xampp

CakePHP 1.2で開発中なので、こういうの見るとビビっちまう・・・

745 名前:744 mailto:sage [2008/04/23(水) 06:23:11 ID:???]
追記:
キャッシュクリア後とかに、
zeroで検索するとハングしやすい。

firefoxだと大丈夫なので、IE7の仕業くさいな。
調べてくるか・・・



746 名前:702 mailto:sage [2008/04/24(木) 18:22:26 ID:???]
>>698-702
の流れから結局、model内でfindAllをオーバライドしてみたがなんかアソシエーション組んでるほかのモデルまで影響しているような気がする・・。

function findAll($conditions=null, $fields=null, $order=null, $limit=null, $page=1, $recursive=null){

if(isset($conditions) && is_array($conditions)){
array_unshift($conditions,"name like '%" . USER_NAME . "%'");
}else{
$conditions = array("name like '%" . USER_NAME . "%'");
}

return parent::findAll($conditions, $fields, $order, $limit, $page, $recursive);
}

747 名前:nobodyさん mailto:sage [2008/04/24(木) 22:39:06 ID:???]
>>746
1.1ってbeforeFindなかったっけ?

748 名前:702 mailto:sage [2008/04/25(金) 12:38:51 ID:???]
>>747
ありがとう、まじでありがとう

749 名前:nobodyさん mailto:sage [2008/04/26(土) 13:26:12 ID:???]
URLを読み込む以外に、CakePHP外部から
CakePHPの関数とか呼ぶ方法内ですかね?

具体的に言うと、もともとウェブサイトがCMSで構築されており、
新たにCakePHPを使ったウェブシステムを追加したわけですが、
そのCMSのページ上にCakePHPシステムの情報・・・会員ユーザー名などを
表示させたいのです。

750 名前:nobodyさん mailto:sage [2008/04/26(土) 13:30:26 ID:???]
好きなようにDB叩けばいいんじゃまいか?

751 名前:nobodyさん [2008/04/26(土) 14:52:38 ID:CCA4AGBq]
Shellsでしょう

752 名前:nobodyさん [2008/04/26(土) 21:38:26 ID:Uwx0xpWG]
セッションがクリアされてしまってハマった。
ネットで検索すると、存在していないcssや画像ファイルがあると消え、
htaccessでの設定で回避できるということだった。

css、画像ファイルのパスと存在が正しいことを確認、
htaccessファイルの設定も修正してみたが、セッションはクリアされたまま。

たすけて。

753 名前:nobodyさん mailto:sage [2008/04/26(土) 22:33:41 ID:???]
>>752
CakePHPのバージョンはいくつ?
こんなのがあった。

ttp://cakephp.jp/modules/newbb/viewtopic.php?topic_id=817&forum=9


ちなみに、初めてセッションを使おうといろいろ調べてるんだけど、参考になる
サイトあったら情報きぼう。
とりあえずこのあたりを参照中。

ttp://cakephp.jp/doc/session.html
ttp://d.hatena.ne.jp/hetima/20070116/1168883397
ttp://d.hatena.ne.jp/hetima/20070201/1170313526
ttp://develop.ddo.jp/new-tech/php/framework/cakephp/memo/%E3%82%BB%E3%83%83%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A7%E9%85%8D%E5%88%97%E3%81%AE%E5%88%A9%E7%94%A8%E6%96%B9%E6%B3%95
ttp://sand-man.blog.so-net.ne.jp/2007-06-26-1


754 名前:753 mailto:sage [2008/04/26(土) 22:35:08 ID:???]
ごめん。よくみると全然関係なさそうだね。

755 名前:nobodyさん mailto:sage [2008/04/26(土) 22:37:46 ID:???]
>>753は読まずに答えてみる。的外れかも。

えーと、core.phpだっけ? セキュリティレベルを設定するところ。
あそこが一番高いと、接続するたびに、セッションIDが変更される。

だから途中でエラー?とかあると、サーバー側ではセッションIDの情報が変わっているのに
クライアントでは新しいセッションIDをもらきれておらず、セッションIDが切断=クリアされてしまう。

だから俺はセキュリティレベルを中にした。



756 名前:755 mailto:sage [2008/04/26(土) 22:41:33 ID:???]
ttp://cakephp.jp/modules/newbb/viewtopic.php?topic_id=817&forum=9

> slywalker 投稿日時: 2007-11-5 12:58

この人と同じこと。

757 名前:nobodyさん [2008/04/26(土) 23:10:06 ID:Uwx0xpWG]
CAKE_SECURITYを、'medium'にしてやってみたけどダメでした。

セションをwriteした直後にreadしてみたら、ちゃんと設定されてるのは確認できたんですけどね。
次の画面でreadすると空になってる。ん〜困った。

758 名前:nobodyさん mailto:sage [2008/04/26(土) 23:38:17 ID:???]
まさかブラウザ側の問題ってことは・・・
セキュリティソフトとか。

759 名前:nobodyさん mailto:sage [2008/04/26(土) 23:42:15 ID:???]
writeした直後にreadしてちゃんと設定されていると
確認するのはあまり意味無いよ。

なぜなら、情報が実際にセットされるのは
ブラウザにクッキー情報が返ってからだから。

ieHTTPHeadersやLive Http headers
ブラウザのクッキー情報を見るツールを使って
調べてみよう。

760 名前:nobodyさん mailto:sage [2008/04/27(日) 00:07:57 ID:???]
あっそうだ。セッションの方式にはどれを使っている? cakephp、php、database?
自分の使い方の問題もあるだろうけど、databaseがなんかうまくいかなかった。


761 名前:nobodyさん [2008/04/27(日) 00:41:14 ID:DD3/O3h6]
セッション方式(CAKE_SESSION_SAVE)は、"php"です。

いま↓を見てるんだけど、aタグによるリンクで画面遷移させるので、
セッションIDを付加しないといけないことがわかった。
ttp://cakephp.jp/modules/newbb/viewtopic.php?topic_id=840&forum=3&post_id=1579

これからやってみます。

762 名前:nobodyさん mailto:sage [2008/04/27(日) 02:40:18 ID:???]
cake1.2.0.6311使ってますが、
sqlのCASEはquery対処なんかなあ。$optionsでいけたりする?

763 名前:761 mailto:sage [2008/04/28(月) 00:00:23 ID:???]
自己レスだけど、携帯サイトの場合、Cookieが使えない携帯端末があるから
URLにセッションIDを付加する方法でやるしかない。
PCサイトの場合は、セッションハイジャックの危険性があるからURLへのセッションID付加は使えない。

結局、セッションを使わずcookieで運用する方法で実装しました。
本来の意味でのセッションではなく、単なるデータの引き継ぎ用途なので、cookieでよいかと。

764 名前:nobodyさん mailto:sage [2008/04/28(月) 20:32:23 ID:???]
「セッションハイジャックが毎日行われています」

ttp://pc11.2ch.net/test/read.cgi/php/1207863515/236-249

765 名前:nobodyさん mailto:sage [2008/04/29(火) 00:30:20 ID:???]
一週間いじってみたがこんな致命的バグの潜んだFWは使う気になれん



766 名前:nobodyさん mailto:sage [2008/04/29(火) 00:50:53 ID:???]
>>765
何かバグにぶち当たったのかもしれんけど、こんな風にいい逃げする
荒らしもいるしなぁ。

本当に困ってるのなら、具体的なバグ例を挙げてみるといいよ。
そしたら対処方法も出るかもしれないし。


話は変わるけど、前のレスでも出てたし、みんな知ってるのかもしれないけど、
このサイトいいね。参考になる。
テンプレに載せてもいいんじゃない?

ttp://bakery.cakephp.org


767 名前:nobodyさん mailto:sage [2008/04/29(火) 02:39:08 ID:???]
お決まりですので・・・

宣伝乙^^

768 名前:nobodyさん [2008/05/01(木) 10:47:29 ID:oWWm9vMD]
hasMany定義しているModelで、子のデータが更新されたら、そのmodifiedで
親のmodifiedを更新したいのですが、どのようにすればいいでしょうか?

子のデータ更新をするcontrollerでいっしょに更新しようとしたのですが、
上手くいきませんでした。

32 function edit($id = null)
33 {
34 $this->Response->id = $id;
35 $thread_id = $this->Response->field('thread_id');
36
37 if ($this->Response->saveField('cooking_name',$this->data['Response']['cooking_name']))
38 {
39 $this->Thread->saveField('modified',$this->data['Response']['modified']);
40 $this->redirect( '/responses/view/'. $thread_id . '#' . $id);
41 }
42 }


modelはこの通りです。

7 var $belongsTo = array('Thread' =>
8 array('className' => 'Thread',
9 'conditions' => '',
10 'order' => '',
11 'foreignKey' => 'thread_id'));


769 名前:nobodyさん mailto:sage [2008/05/01(木) 13:48:12 ID:???]
>>768
39行目はupdateじゃなくて、insertされてない?

770 名前:nobodyさん mailto:sage [2008/05/01(木) 14:08:31 ID:???]
>>766
参考になる以前に公式じゃんw

771 名前:768 mailto:sage [2008/05/02(金) 02:37:54 ID:???]
すみません自己解決しました。

39行の手前で、親の方にidを設定したところ、きちんと更新されました。
$this->Thread->id = $thread_id;


772 名前:nobodyさん mailto:sage [2008/05/06(火) 17:41:37 ID:???]
>>771
報告乙です
参考にさせて頂きます。

773 名前:nobodyさん [2008/05/07(水) 00:15:31 ID:ehDEto56]
app/views/layouts/default.thtml にて、あるModelのデータを
展開したいのですが、どうすればいいでしょうか?

対応するコントローラもなさそうだし・・・。

774 名前:nobodyさん mailto:sage [2008/05/07(水) 00:21:12 ID:???]
>>773
モデルからコントローラに値を渡してsetしてviewで使えばいいだけですよ。

775 名前:773 mailto:sage [2008/05/07(水) 00:29:55 ID:???]
>>774
というと、複数のviewで使いたい場合は、各コントローラ、各アクションで
setするという事でしょうか?

あるいは、全てのコントローラの前に読み込まれる、共通コントローラみたいのが
あったりするのでしょうか。



776 名前:nobodyさん mailto:sage [2008/05/07(水) 00:37:17 ID:???]
>>775
そう

ある

777 名前:nobodyさん mailto:sage [2008/05/07(水) 14:32:05 ID:???]
そうあるよ

778 名前:nobodyさん mailto:sage [2008/05/07(水) 14:48:46 ID:???]
>>775
チートシート手に入れるべし

779 名前:773 mailto:sage [2008/05/08(木) 01:09:40 ID:???]
結局レスの内容はよく分かりませんでしたが、下記ページを参考に、
requestActionで取得する事にしました。

cakephp.jp/doc/ch07s02.html

/views/layouts/default.thtml
<?php echo $this->set('users', $this->requestAction('/users/getUserList'), array('return')); ?>
<p><?php $user_numbert = array_rand($this->viewVars['users']);
echo $this->viewVars['users'][$user_numbert]['User']['name']; ?></p>


780 名前:nobodyさん mailto:sage [2008/05/08(木) 01:42:10 ID:???]
>>779
ちょwwwww志村上上


781 名前:nobodyさん mailto:sage [2008/05/08(木) 09:23:20 ID:???]
app_controller.php
function beforeRender() {
 # ここに/users/getUserListの中身とかを
 $this->set('user_numbert' , $user_numbert);
}

default.thtml
<?php e(h($user_numbert['User']['name'])) ?>


782 名前:nobodyさん mailto:sage [2008/05/08(木) 09:34:15 ID:???]
ちょwwwww志村上上下下右左右左BA

783 名前:nobodyさん mailto:sage [2008/05/08(木) 19:24:13 ID:???]
以前にもこんな話題があったような気がするのですが、

フォームの画面遷移のときのデータの持ち回り方について・・・

1.普通にhiddenで埋め込む
2.serializeしてbase64_encodeしたものをhiddenで埋め込む
3.serializeしてbase64_encodeしたものをセッションに書き込む

などが考えられますが、
CakePHP的には、どの方法がベターでしょうか?

784 名前:773 mailto:sage [2008/05/09(金) 01:55:42 ID:???]
サンプルコードまでご提示下さり、ありがとうございます。おかげでフル装備
じゃないや、スマートな実装ができました。

どうもありがとうございました。

785 名前:nobodyさん mailto:sage [2008/05/09(金) 09:23:43 ID:???]
>>783
質問だけど。
3でbase64_encodeする意味合いって何があるの?



786 名前:nobodyさん mailto:sage [2008/05/09(金) 18:49:37 ID:???]
>>783

自分は 1。

セキュリティがどうこうっていうプログラマーさんがいるでしょうけど・・・。

787 名前:783 mailto:sage [2008/05/09(金) 18:55:31 ID:???]
>>785
すみません。よくわからないで書いてしまいました;;
シリアライズだけで十分ですか?

>>786
最終的にsaveするまえにしっかりバリデートすれば、それでも問題ないのかもしれませんね・・・
でもやっぱりソース見たときに、パスワードとかメールアドレスがもろに書いてあると、
このサイト大丈夫か??って気になりますが・・・

ちょっと気になったのですが、PEARのHTML_QuickForm_Controllerなんかは
どの方法なんでしょうか??

788 名前:nobodyさん mailto:sage [2008/05/09(金) 20:19:38 ID:???]
貧乏人は贅沢だ
不満を言う余裕はあるくせに
戦争する暇もある

789 名前:nobodyさん mailto:sage [2008/05/10(土) 00:11:55 ID:???]
>>787
ソース見られたらっていうのは確かにある。
しかもそれを無理矢理改ざんして入力不可の文字を入力される可能性もある。

しかし、よほどのサイトじゃないとそこまでハッカーも暇じゃないから攻撃しないのでは?
と思います。

現に、ここ 5年ほど、何も問題ありませんでした。

790 名前:nobodyさん mailto:sage [2008/05/10(土) 16:35:26 ID:???]
>>789
問題があってからじゃ遅いんだぞ!
と思いつつも、もりもりhiddenに入れ込んでしまう。。

791 名前:nobodyさん mailto:sage [2008/05/10(土) 17:55:53 ID:???]
>>787
セキュリティ目的ならbase64_encodeは用をなさないという認識。

>>789
データはhiddenで埋め込んでおいて、$this->dataをserialize後saltつけてハッシュ化したやつを別でhiddenに埋め込む
↑のふたつを比較して整合性チェックとか?

792 名前:nobodyさん mailto:sage [2008/05/10(土) 18:59:59 ID:???]
今、ここを覗いている筑波大学へ

ばれてるぞ!

793 名前:nobodyさん mailto:sage [2008/05/10(土) 19:29:59 ID:???]
別に半角文字列板とかじゃないんだからバレたっていいだろうに。

794 名前:nobodyさん [2008/05/11(日) 11:28:50 ID:qWqUPYxD]
日本語フォーラムと2ちゃん、どっちの方がコメントもらえるのかな?

と言いつつ、いつもこっちに書くのだけど・・・。


下の記事を参考に、携帯用ページを作っています。
ttp://www.1x1.jp/blog/2008/04/cakephp_12_routing_prefix.html

で、paginateでページングされているのですが、ひとつ問題が。

pagineateの結果、下のようにURLが生成されるのですが、
携帯エミュレータ(P1エミュレータを使用)で確認したところ、
どうやら「page:2」のセミコロンが、有効な値ではないとエラーになるっぽいです。

<a href="/~recipe/m/responses/view/page:2">2</a>


これって、どう対応すればいいのでしょう?


795 名前:nobodyさん mailto:sage [2008/05/11(日) 12:01:33 ID:???]
app/config/routes.phpにRoute::connectNamed(array(),array('argSeparator'=>'=')); を追加



796 名前:794 mailto:sage [2008/05/11(日) 13:42:34 ID:???]
>>795
Router::connectですね。

ふぉぉ、すぐに答えていただきありがとうございます!
PC側の方もちょっと調整が入りますが、おかげで解決しました!

797 名前:nobodyさん [2008/05/12(月) 02:29:40 ID:8yg2YXGe]
CakePHP1.2のバリデーションについてよく整理されたマニュアルとかってないかな

バリデーションルールが多様になったほかに、create時update時それぞれに有効無効に
できるなんてこと知ったのだけど、その他含めてちゃんとまとまった情報ってないかな

798 名前:nobodyさん mailto:sage [2008/05/12(月) 18:22:39 ID:???]
AuthComponentsで、ユーザー情報を取得し直したいとき、どのようにすればよいでしょうか?

たとえば、
ログイン後にユーザーメニューからユーザ名の変更などを行った場合、
セッションには変更前のユーザ名が格納されているため、
ヘッダーなどに表示されている
「ようこそxxさん」のような表示が変わらない、ということになってしまいます。

いちおうの解決策としては、
セッションにはIDのみを格納しておいて、
app_controllerで
毎回、$this->User->findByIdしてセッションに記憶させるという方法をとっていますが、
あまりスマートではありません;

ユーザ名の変更処理の直後のみユーザ情報を取得しなおしたいのですが、
なにかよいアイデアはないでしょうか?

799 名前:nobodyさん mailto:sage [2008/05/12(月) 20:51:58 ID:???]
>>798
なんとなくでレスしてるが変更と同時にセッション内容も書き換えればいいんじゃないの?

800 名前:nobodyさん mailto:sage [2008/05/12(月) 22:27:51 ID:???]
公開用Webサイトに1.2系使ってる人っている?
DBからデータをviewで表示するだけなら1.2でも大丈夫かな?

現在は1.1で運用中。
多言語対応が1.2でやりやすいのなら、1.2で作りかえるんだけど。

801 名前:nobodyさん mailto:sage [2008/05/12(月) 22:35:05 ID:???]
>>800
俺はやっちゃったw

半年ぐらいCakePHP使っていて、コアの中まで見てると
大丈夫なんじゃないかなぁと思う。

バグではないが、ベータ版だから仕様が変わるのが
ちょっとネック。


802 名前:794 mailto:sage [2008/05/13(火) 00:21:01 ID:???]
>>800
いま、2ちゃんねるのレシピ集のサイトをCakePHP1.2で作ってます。
paginatorなどが使いたかったのと、バグっても差し支えないので。


で、ひとつバグらしきのに当たりました。

先に書いた通りのページを参考に、URLルーティングのprefixを使って
携帯用とPC用のページを作り分けしたのですが、この状態でpaginatorを使うと、
PC側のページで、$paginator->prev、nextで何故か携帯用のURL
(/m/:controller・・・)へ飛ばされる事象が。

prefixを設定する前は発生していませんでした。


原因は不明ですが、これまた何故か$paginator->optionsの設定次第で
事象が発生したりしなかったりするので、発生したPC用ぺージでは、

$paginator->options(array('url'=>array("test" => 'test')))

と、ダミーのURLオプションを追加してごまかしています。

803 名前:nobodyさん mailto:sage [2008/05/13(火) 02:42:36 ID:???]
1.2の正式バージョンていつごろ出るのかな?
乗り換えるべきかどうか迷う・・・

804 名前:nobodyさん mailto:sage [2008/05/13(火) 13:48:12 ID:???]
>>800

cakephp 1.1 も 1.2 も両方開発してアップしてますけど両方問題ないですよ。

ただ、モバイルサイトも作ろうと思えば 1.1 の wevservices が便利です。

805 名前:nobodyさん mailto:sage [2008/05/13(火) 18:13:48 ID:???]
1.2じゃなきゃ使いたくないズラ



806 名前:nobodyさん mailto:sage [2008/05/13(火) 19:48:08 ID:???]
画像表示系のコンポーネントを作って使うとき、
最後にheaderでContent-typeなどを指定するわけですが、
controller.phpのheader(”location...とかぶってしまって、エラーが出てしまいます。

みなさんはどのように処理しているのでしょうか?

わかりずらくてすみません・・・;

807 名前:nobodyさん mailto:sage [2008/05/13(火) 19:56:04 ID:???]
>>806
わかるわかる。
<img src="hoge.php?=">

みたいなので読み出すやつでしょ?
僕はギブアップしましたね。

ttp://www.hideblog.net/thumbnails/

を使ってます。

808 名前:806 mailto:sage [2008/05/13(火) 20:02:52 ID:???]
>>807
それです!
わかってもらえて安心しました。

リンク先のものは、キャッシュに保存してそれを表示する、というものでしょうか?
これはこれで便利ですが、やはりできればストレートに表示したいですね・・・


809 名前:nobodyさん [2008/05/13(火) 22:25:09 ID:Akbr9Dkj]
>>806
ob_clean()はどうでしょう。

810 名前:nobodyさん mailto:sage [2008/05/13(火) 22:27:45 ID:???]
>>807
まったくもって意味がわかりませんが
たぶんこれで解決でしょう。

www.ideaxidea.com/archives/2008/01/cakephpcsv.html

811 名前:nobodyさん mailto:sage [2008/05/14(水) 09:31:44 ID:???]
CakePHPの話題ではないかもしれませんが・・・

たとえばタスクをステータス別に表示する場合


コントローラ側で、
$this->set('yet_tasks', $this->Task->findAllByStatus('yet'));
$this->set('done_tasks', $this->Task->findAllByStatus('done'));
のように二度取得するのと、

$this->set('tasks', $this->Task->findAll());
として、

ビューで

foreach ($tasks as $task) {
if ($task['Task']['status'] == 'yet') {
echo ....

とするのでは、
どちらのほうがパフォーマンスが優れているのでしょうか?

ご教授お願いします。

812 名前:nobodyさん mailto:sage [2008/05/14(水) 09:48:17 ID:???]
どっちもだめ

813 名前:nobodyさん [2008/05/14(水) 09:49:25 ID:XltYBCAy]
前者のほうが毎回DBアクセスが発生するため速度という点でのパフォーマンスは悪いでしょうね。

後者のほうは、、ビューにあまりそこまで複雑なロジックを記述することによるコードの効率の悪さ
という点でパフォーマンス難ありかも。

対象となるデータ量次第だけど、そこまでデータが多くなくてサーバのスペックが十分であれば前者の方が
コーディングは早いんじゃね?個人的な意見だけど。

814 名前:nobodyさん mailto:sage [2008/05/14(水) 13:49:50 ID:???]
806です。
>>809>>810

その方法は試してませんでした。
次回やってみようと思います。
ありがとうございます。


815 名前:nobodyさん mailto:sage [2008/05/14(水) 14:46:18 ID:???]
デザイナーの要望に応えてちょちょっと変更するときなんて、
viewいじった方が早かったりするんで、
ついついやっちゃうんだよなぁ。
んで、気づいたらviewがえらいことにw



816 名前:nobodyさん mailto:sage [2008/05/15(木) 00:40:28 ID:???]
CakePHPかRuby on Railsかで迷ってます。

サーバー関連の知識が全くないのですが、
アプリ完成後の公開寸前で困らないためには、
CakePHPを選んでおいたほうが、すんなり公開できるでしょうか?

817 名前:nobodyさん mailto:sage [2008/05/15(木) 00:57:18 ID:???]
>>816
どっちも自分で試したほうがいいと思う。
俺は慣れてるからCake好きだけど。

最低限のアプリ作って鯖置くまで試してみる事をオススメする。

818 名前:816 mailto:sage [2008/05/15(木) 01:04:37 ID:???]
>>817
レスありがとうございます。

Cakeならば格安のレンタルサーバで試してみることもできるのですが、
Rubyとなるとそこそこ値の張るところでないとダメみたいで、
それだけのお金を出して、設置できなかったとなると・・・

1.2の安定版ももうすぐみたいですし、
やっぱり初心者にはCakeなんですかねぇ・・・

819 名前:nobodyさん mailto:sage [2008/05/15(木) 01:14:45 ID:???]
>>818
つ仮想サーバ または 適当な空きマシンでlinux

820 名前:nobodyさん mailto:sage [2008/05/15(木) 17:54:14 ID:???]
レンタルサーバーで問題なのはお金よりも
むしろサーバーを管理できるかどうか。

www.fs-virtual.jp/spec/hikaku.html 945円/月〜
www.tsukaeru.net/plans/vps/ 2480円/月〜
www.ymc.ne.jp/service/managed/plan/index.html 4950円/月

821 名前:nobodyさん mailto:sage [2008/05/15(木) 21:43:23 ID:???]
  ☆ チン

        ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・)<  1.2まだー?
             \_/⊂ ⊂_)_ \_______
           / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
        |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
        |           .|/


822 名前:nobodyさん mailto:sage [2008/05/19(月) 16:23:52 ID:???]
MediaView(/cake/lib/view/media.php)ってどう使うんだろう?
dsi.vozibrale.com/articles/view/mediaview-is-a-bleeding-bastard
bin.cakephp.org/view/1026359650
を読む限り、特殊なファイルをダウンロードさせたいときとかに使うみたいだけど、
適当に読む限りファイルを出力するヘッダー情報の段階のことしか書かれていない。(あ、Viewの部分だから当然か)

おそらく、データーベースからグラフをGDとかでスクリプト側で作ったものを表示する場合なんかで
使うんだろうけど、このスクリプトで合成した画像のバイナリデーターはどのタイミングで、どこの関数に格納すればいいのやら?

823 名前:877 [2008/05/20(火) 09:40:48 ID:xs/omlLe]
IP/controller/
にアクセスするとIP/controller/index
デフォルトで実行されますけど、このアクションを変えるには
どうしたらいいですか?

824 名前:nobodyさん mailto:sage [2008/05/20(火) 11:01:51 ID:???]
>>823
cakephp.jp/doc/ch04s03.html
かな

825 名前:nobodyさん mailto:sage [2008/05/20(火) 11:16:01 ID:???]
CakePHP 1.2 stable coming soon と言ってるから、そろそろ 1.1 -> 1.2 移行手順をまとめたいな

絶対に手を入れるところ
推奨されているところ
とか
はまりポイント
とか



826 名前:nobodyさん mailto:sage [2008/05/20(火) 11:38:08 ID:???]
ttp://puyo2.upper.jp/cake/ のPDFを中心に

■絶対に手を入れるところ
・設定ファイルの変更(Warning出しながら動くけど)
# /app/config/core.php
define('DEBUG', 1);
→ Configure::Write('debug', 2);

→ Configure::write('Security.salt', 'your original string'); # add

・ヘルパー変更に伴い、view全般
非推奨または廃止されたもの
$html->input
$html->submit
$html->tagErrorMsg etc...
新たに強化・追加されたもの
FormHelper
PaginatorHelper
XMLHelper

■推奨されている
・validatesに引数を渡さない
$this->ModelName->validates($this->data);
→ $this->ModelName->data = $this->data['ModelName'];
→ $this->ModelName->validates();
・viewの拡張子
action_name.thtml
→ action_name.ctp

間違いあったら訂正よろしく

827 名前:nobodyさん mailto:sage [2008/05/20(火) 13:22:09 ID:???]
find系もなんか修正あったんじゃなったけ?

828 名前:nobodyさん mailto:sage [2008/05/20(火) 19:13:39 ID:???]
検索してもうまく見つけられなかったので、教えてください。
SELECT * from `Model` WHERE ( `Model`.`field_1` like '%xxx%' OR `Model`.`field_2` like '%xxx%' ) AND `field_3` = 'yyy';
みたいなSQLを発行したい場合の$conditionsの指定はどうしたら良いのでしょう?

また、
SELECT * from `Model` WHERE concat( `Model`.`field_1` , `Model`.`field_2` ) like '%xxx%';
というのも知りたいです。

829 名前:nobodyさん [2008/05/20(火) 19:19:52 ID:wZOYKZBI]
バージョン1.2のAuthComponentでの認証で二重ログインを防ぎたいんだけど、
良い方法か参考ページがあったら教えて下さい。

830 名前:nobodyさん [2008/05/21(水) 01:03:54 ID:+T6Kz2/1]
CakePHPってDBのカラム名まで縛るのね。
その時点で候補から外れたね。

831 名前:nobodyさん mailto:sage [2008/05/21(水) 01:16:01 ID:???]
>>830
さようなら。
その縛りなしで行こうと思えば行けるんだけどな。
じゃぁの。

832 名前:nobodyさん mailto:sage [2008/05/21(水) 01:57:45 ID:???]
>>830
そんなに大変?
たしか、RoRでもあったと思うけど。

idとcreatedとmodifiedくらいしか意識した事ないけど、
他にもあるのかな?

833 名前:nobodyさん mailto:sage [2008/05/21(水) 02:29:51 ID:???]
というかしばるから便利なわけですが

834 名前:nobodyさん mailto:sage [2008/05/21(水) 10:27:32 ID:???]
>>832
name or title フィールドでgenarateListが自動的にidと配列を返す
あとは、xxx_id とか xxx_yyy とかのアソシエーション系かな?

いずれにせよCoCの理念に同調できない人はRoRをはじめとしたフレームワークは無理だわな。
RoRではなく、Cakeスレに書き込む>>830に乾杯

835 名前:nobodyさん mailto:sage [2008/05/21(水) 12:50:06 ID:???]
> name or title フィールドでgenarateListが自動的にidと配列を返す
そういえばそんなものもあったね。1.2では
find('list')にかわるわけだけど。

ソース見たけど、1.2betaの段階では、フィールド名指定する方法
無かった気がする。なんでだろうね。

結局は、genarateListを1.2で動かしたときの警告の通り
find('all')の検索結果をSet::combine($results, $keyPath, $valuePath);
しているだけなんで、自分でやればいいんだけどね

> あとは、xxx_id とか xxx_yyy とかのアソシエーション系かな?
これはなぁ・・・みんな同じような名前のつけ方しない?
○○テーブルのIDなんだから○○_idって。



836 名前:nobodyさん mailto:sage [2008/05/21(水) 18:07:50 ID:???]
カラム名とか考えるの苦手なんで縛られてた方が楽だな俺は。
コントローラ名とかメソッドの名前とか考えるのホント嫌。かっこいい名前考えるセンス無くて。

837 名前:nobodyさん mailto:sage [2008/05/21(水) 18:10:51 ID:???]
スペル調べたりするのも面倒だから、ローマ字とかw

838 名前:nobodyさん mailto:sage [2008/05/21(水) 18:29:28 ID:???]
たしかに項目全部のスペル調べるのって時間かかるよなw
非英語圏の俺涙目

839 名前:nobodyさん mailto:sage [2008/05/21(水) 22:53:45 ID:???]
>>838
あれ、こんなところに俺がいるぞ?w


最近、アルクで調べるようになって、ちょっと楽になった。
ttp://www.alc.co.jp/


カラム名は適当な英語でいいが、テーブル名はきちんとした英単語になってないと、
単複の変化がねぇ。。。

840 名前:nobodyさん mailto:sage [2008/05/21(水) 22:58:34 ID:???]
ローカルに辞書ソフト入れておいたほうがいいぞ。
どうもウェブだと時間がかかる。

おれはMS Officeについていたbookshelfを使っている。

841 名前:839 mailto:sage [2008/05/21(水) 23:38:50 ID:???]
>>840
Bookshelfか。懐かしいなぁ。

Bookshelfもいいんだけど、アルクは例文がいろいろ出てくるので、
そこがおすすめ。
たしかにローカルの方が速いけどね。

842 名前:nobodyさん mailto:sage [2008/05/22(木) 00:42:45 ID:???]
>>839

俺発見!

843 名前:nobodyさん mailto:sage [2008/05/22(木) 09:57:07 ID:???]
□cake.phpがapp/webroot以下のsqliteファイルを見てない?

sqliteファイル(app/webroot/cake.sqlite)を用意してから
cake.phpを実行しているけどエラーメッセージが出て怒られる。

sqliteファイル(app/webroot/cake.sqlite)を
./cake.sqliteに移動してやると「Bake All complete」。

□エラーメッセージ
$ php cake/console/cake.php bake all Post
...
Error: Missing database table 'posts' for model 'Post'

□app/config/database.php
<?php
class DATABASE_CONFIG {

var $default = array(
'driver' => 'sqlite',
'persistent' => false,
'host' => 'localhost',
'port' => '',
'login' => '',
'password' => '',
'database' => 'cake.sqlite',
'schema' => '',
'prefix' => '',
'encoding' => ''
);
}
?>

844 名前:nobodyさん mailto:sage [2008/05/22(木) 13:44:12 ID:???]
英語の豆知識
Data : 複数形
Datum : Dataの単数形

CakePHPやるまで知らんかった。。。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<213KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef