トップページ⇒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/
0783nobodyさん2007/09/26(水) 10:32:59ID:???
>>776
それは、ドキュメント読む方が早いか、ソース読むのが早いかによるんじゃないかなぁ。
読む速度が同じであっても、ソースを読んだ方が理解や応用、拡張が素早く出来るので、結果的に作業は早くなると思う。

まぁべつにソースを全部読めっていうわけじゃないし、本末転倒ってほど悪くは無いと思う。
むしろ折角のスクリプト言語で読みやすくなってるのにそのメリットを生かさない方がもったいない。

もちろん、よいドキュメントはいつだって欲しいけどさ。
0784nobodyさん2007/09/26(水) 10:54:34ID:???
結局、ドキュメントが不足していると言うだけの話であって、
CakePHPの出来が悪いと言うことにはならない。

本当のプログラマにとってはドキュメントもソースも同じようなものだけどね。
ソースも読めないような人間は、ドキュメントを読めないのと同じ。
0785nobodyさん2007/09/26(水) 11:31:59ID:???
>>779
1.1使ってる?

そのうち使いそうだろうから、試してみたけど全然問題なかったよ。
1.2.0.5427alphaでテスト。

コントローラのbeforeFilterとindex、どちらの一行目で
setSourceしても問題なかった。


個人的には、ログのように1年単位でテーブルを分ける的な場合なら
モデル側で使用するテーブルを判断するべきじゃないのかと思うが。
07867792007/09/26(水) 15:17:54ID:???
newでコンストラクタの引数にテーブル名を指定する方法で、解決いたしました。
沢山のレスありがとうございました。

#Versionは1.1を利用しています
0787nobodyさん2007/09/26(水) 16:35:14ID:???
1.2.0.5427alpha試してるんだけどDEBUGの値2と3で変わらなくない?
07887872007/09/26(水) 17:04:51ID:???
ソース読みました。
view.phpで$this->controllerがnullになってるみたいね。
0789nobodyさん2007/09/26(水) 18:31:30ID:???
今ふと気づいたんだけどさ、app/models/datasources ってフォルダがある。
このフォルダ、なんに使うんだろうか?

このフォルダがあると言うことは、何かしらの
ユーザー定義のクラスか何かを置くのだと思う。

新しいデータベースサーバーへの対応?
だとしたら、それは app/models/datasources/dbo になるはず。
しかし、そんなフォルダはない。

まさかRDBMS以外、つまりODBMSやXML等に対応するためか?
0790nobodyさん2007/09/27(木) 17:13:09ID:???
ドキュメントに記述が無いんだったら、
Tracでそのディレクトリのコミットログを見たら
どういう意図で追加されたかわかるかもよ
0791nobodyさん2007/09/28(金) 11:52:16ID:???
みなさんhelperってどの程度使用してる?
かえって不便な気がしてきたんだけど。
0792nobodyさん2007/09/28(金) 14:13:03ID:8QRsdJbb
>>791
自作に関しては作ってみたけどヤメタ。
独自に名前空間もった変数名つけてincludeしちゃったほうが
お手軽だったりするしさほど問題なかったりする。

form系のヘルパーは使うよ。inputとかtextareaとかselectTagとか。
html系のlinkとかimageとかは使いでは無いね。
0793nobodyさん2007/09/28(金) 15:42:01ID:???
1.1系から1.2系に移行しようとするとhtmlヘルパーだったのがDeprecatedとかいって
formヘルパーにいっちゃってたりして結構めんどいね。
極力ヘルプレスなほうがわかり易いと思った。
0794nobodyさん2007/09/28(金) 19:12:35ID:???
ドキュン
0795nobodyさん2007/09/28(金) 21:24:25ID:???
>>792
> 自作に関しては作ってみたけどヤメタ。
> 独自に名前空間もった変数名つけてincludeしちゃったほうが
> お手軽だったりするしさほど問題なかったりする。

それって、単にHelperクラスを継承しないってことなだけじゃね?w
Helperクラスを継承しないでHelperを自作している。
だよね?
0796nobodyさん2007/09/28(金) 22:13:37ID:???
792です。

>>795
あー、Helperじゃなくてプレーンなファイルなんだけど、
何か俺の言ってることもHelperと関係ない気がすごいしてきた。すまん。

ちょっとリセットして。

そもそもHelperを自作するような場面自体が少なそう。

なんていうか、デザイン要素を含むビューだとHelperの内部に
HTMLを書くことになってデザイナーがいじれないから、
アプリケーション独自のパーツ表示系とかにHelper使えない。

htmlヘルパーやjavascriptヘルパーのような汎用的かつ
ほとんどデザイン要素を含まない(含むとしてもフルカスタマイズ可能な程度)ような機能の
ヘルパーしか自作できない感じ。

そもそもヘルパーとはそういうものな気もするけどね。

>>791 はどんなヘルパーを作ったのか気になる。
0797名無しさん@Vim%Chalice2007/09/28(金) 22:26:39ID:???
うそー逆にHelperが大量にできるんだけど

Controllerは入力のデータについて集中したいというか、
Viewの表示用にデータ整形とかする関数を全部Helperに丸投げするって感じ。
テンプレートにはなるだけコードを排除したいし。

#つーか本当はControllerでHelperの指定をするのも嫌なんだけど。
#いきなりViewでHelper使えるようにする方法はないかな?
0798nobodyさん2007/09/28(金) 22:32:36ID:???
AppControllerに一箇所helperを書くだけもいやなのか?

なら、AppControllerのコンストラクタでHelperファイル検索して
全部突っ込んじゃえw
07997922007/09/28(金) 23:06:22ID:???
>>797
HelperがViewから自由に呼べないのはもどかしいよね。
細かいの一杯作ると読み込むの手間だし、
かといって1つでっかいの作ると富豪すぎる気がして。
テンプレートのコード排除は同意。

ちなみにそのHelperでデータ整形するコードって、

echo '<td>hoge</td>';

とかいうふうにコードの中にHTML入っちゃってたりする?
この書き方は個人的には絶対に避けるんだけど。
理由はHTMLエディタで認識できないし、エンジニア以外がメンテできなくなるから。

なので、そういう整形用途でrenderElementで十分だったりする。
関数作れないけどまあViewだしコピペでいいか〜とか。
頻繁に使われるならさらにrenderElementで小分けする。

あとclassが書かれたファイルをデザイナーさんがメンテするのもちょっと。
ってここは社内事情だし、まあエンジニアがテキストエディタで全部メンテするならいいけど。
0800名無しさん@Vim%Chalice2007/09/29(土) 01:46:37ID:???
>>798
Controllerの中では使いもしないHelperの配列を
用意しなくちゃならないのがそもそも気持ち悪い。
なんていうのかな、その辺はView側で完結して欲しいって思う。

>>799
Helperの中にはタグは入れてないよ。
(Cake付属のHelperはモリモリ使っててムカつくよね!)
主にModelからブン投げてきたデータを食って
配列地獄を隠蔽したり、必要なデータだけ返すって感じ。
どうしてもテンプレートが必要ならHelperから
renderElementを呼んで引っ張ってくる。

あと、renderElementはテンプレートを細分化する他に、
PHPから動的にjavascriptを生成したい場合など
コードを隔離したい場合にも使える。
ほんまView側の要だと思う。
0801nobodyさん2007/09/29(土) 02:03:25ID:???
> なんていうのかな、その辺はView側で完結して欲しいって思う。
つまり、Viewの中にphpコードを書いてHelperをロードしたいということかな?
Viewの中にコードねぇ。まあいいけど。
0802nobodyさん2007/09/29(土) 02:08:55ID:???
Helperの中でタグを出力するのは悪くて、
renderElementの中でタグを出力するのは良いのか?w

Helper呼び出しのコードを書くのは悪くて、
renderElement命令実行というコードを使うのは問題ないのか?w
0803nobodyさん2007/09/29(土) 02:21:16ID:???
>>799
> 理由はHTMLエディタで認識できないし、エンジニア以外がメンテできなくなるから。

という理由なら、renderElementを使う方法も使えないよな。

そもそもHTMLだけでループや条件分岐を表現できないのだからどうしようもない。
またフォーム系のタグにつける名前はコードの都合によってつけるものだから
当然エンジニアの仕事になる。
08047922007/09/29(土) 10:14:12ID:???
>> 800
>主にModelからブン投げてきたデータを食って
>配列地獄を隠蔽したり、必要なデータだけ返すって感じ。
>どうしてもテンプレートが必要ならHelperから
>renderElementを呼んで引っ張ってくる。

んーなるほど...ほんとにデータ整形だけなのか...
そこまでHelperでやっちゃうとほとんどコントローラ出番ないんじゃない?

Helperはデータを返すんじゃなくて表示できる形の文字列を返すものという
俺ルールで縛ってるから、
個人的にはそういうのならコントローラでやっちゃうか
コンポーネントにしちゃうか、
もしくはModelのafterFind使ったりだ。
08057922007/09/29(土) 10:19:44ID:???
>>802
>Helperの中でタグを出力するのは悪くて、
>renderElementの中でタグを出力するのは良いのか?w>
そういうことじゃないよ。タグを出力するよしあしじゃなくて、
コードの中にタグが混入してるのがアウト。

○ <h1><?php echo h($hoge) ?></h1>
× <?php echo '<h1>' . h($home) . '</h1>'; ?>

renderElementした先で○のようにタグが.thtmlでコード外に書かれてるのならおk。
どりーむうぇーばーとかでいじれる。

Helperでもこのルールで書かれてばいいっちゃいいけど、
どりーむうぇーばーとかで開いたときにめちゃめちゃにならないように縛りいれると
renderElementでやるのと大差なくなる。
08067922007/09/29(土) 10:30:49ID:???
>>803
>という理由なら、renderElementを使う方法も使えないよな。
ちゃうちゃう。デザイナーさんはrenderElementした先の.thtmlを開くの。
それくらいは教える。

ループ書いたりとか条件分岐はエンジニアが書くけど、
見栄え自体はあとからデザイナーさんが調整してほしいから。
0807名無しさん@Vim%Chalice2007/09/29(土) 11:14:53ID:???
>>801
あー悪い、View側つーか、要はControllerとテンプレートの間にもう1クッション、
表示用の準備を「PHPで」書ける空間が欲しいなって事。

Modelはデータソースへの正しい入出力に全力を注ぐべきだし、
Controllerは見た目なんかに関知しないでビジネスロジックに集中したい。
テンプレートは出来るだけHTMLの純度を高めたい。
問題の範囲を切り分けたいって意味なんだけど、分かりにくいね、ごめんちゃい

#今回はもう後戻りできないからControllerに直接Helper指定してるけど:-p

>>804
業務用の社内システム作ってるから、
Controllerのやる事は割とあるんよね (社内事情
08087922007/09/29(土) 11:29:02ID:???
>>807
>Modelはデータソースへの正しい入出力に全力を注ぐべき
理想は俺もそうしたいが、使い勝手を考えると
Modelクラスにデータ整形のメソッドとか書くと使い易いんだなこれが...

何かデータ整形のための構造がもう1個あってもいい気もするね。
うまい名前が思いつかないけど。

>業務用の社内システム作ってるから、
>Controllerのやる事は割とあるんよね (社内事情
なるへそ。その状況想像したら分離したくなる気持ちはわかったよ。
0809nobodyさん2007/09/29(土) 11:44:45ID:???
>>805
> ○ <h1><?php echo h($hoge) ?></h1>
> × <?php echo '<h1>' . h($home) . '</h1>'; ?>
上が○ならこれもOKってことだよな?

<h1><?php echo $helper->h($hoge) ?></h1>

>>806
> ちゃうちゃう。デザイナーさんはrenderElementした先の.thtmlを開くの。
いや、だからその先の.thtmlにコードが入っていたら結局同じことでしょ?

0810nobodyさん2007/09/29(土) 11:48:09ID:???
>>807
> 表示用の準備を「PHPで」書ける空間が欲しいなって事。
つbeforeRender
08117922007/09/29(土) 12:51:34ID:???
>>809
>上が○ならこれもOKってことだよな?
><h1><?php echo $helper->h($hoge) ?></h1>
おk

>> ちゃうちゃう。デザイナーさんはrenderElementした先の.thtmlを開くの。
>いや、だからその先の.thtmlにコードが入っていたら結局同じことでしょ?
そのコードが○な感じで書かれてばおk

>>810
beforeRenderをコントローラー内じゃなくて
何か別のクラスに分離したいよね。
まあ自作してもいいけどね。
0812nobodyさん2007/10/03(水) 20:59:09ID:???
CakePHP(1.2のAlphaの話)・・・便利だし悪口言いたくないけど、
ビュー周りが気持ち悪くて、使いにくいな。
bakeで作られるソースの話だが、viewとeditのctpで統一感がない。

viewの場合、<?php echo $author['Author']['id']?> という形で表示。
つまり、$authorに全データがはいってくるわけだが、

editの方は、なぜか、echo $form->input('id');
モデル名は<?php echo $form->create('Author');?>で指定しているわけだが、
肝心のデータはどこから???

ふーん。$form自体がデータをもっちゃってるのね。
タグ出力だけの機能じゃないんだ。

で、$formにデータをセットしているところは?
へぇ、コントローラにヘルパーとしてFormを入れたら
勝手にデータ読んじゃうんだ。なんだこの仕様w
0813nobodyさん2007/10/03(水) 21:39:13ID:???
憶測だけどFormヘルパーが$this->controller->dataを参照してるんじゃまいか
0814nobodyさん2007/10/03(水) 21:57:16ID:???
>>813
たぶん、そうなんだろうけど、直接読むところじゃないよな。
controller->dataはPOSTしたときのデータ専用に使っとくれ。

ということで、そこらあたりがっちり書き換えてしまった。
表形式でのデータ編集もしたかったし、
Formヘルパーは使わずに独自のヘルパー(?)作ったよ。
0815nobodyさん2007/10/04(木) 09:53:08ID:???
>>814
まあオプションでいちいち
指定するとタグ直書きとあんまり代わらないからな。
ただ、独りよがりな仕様は否めない。
勝手にオプションを追加しておいて
それを削除するにはソースいじらにゃならん、とか
0816nobodyさん2007/10/09(火) 16:06:42ID:???
>>384
ちんこの美しさは半端ない
あれはまさに神の授けた人類の至宝だね
りっぱなやつを見ているだけで俺なんか
イきそうになるよ
だからお前も一緒にホラ や ら な い か?
ありくい
0817nobodyさん2007/10/13(土) 00:42:51ID:???
特定のmodelで使うバリデーションはmodel自体の中に書けばいいのはわかったんだけど、
複数のmodelで使うバリデーションってどこに書けばいいの?

本も買ってみたんだけど、>>648でもふれられているように、自前の
バリデーションの説明は載ってなかった…
0818nobodyさん2007/10/13(土) 03:00:25ID:???
そりゃ、AppModelだろう。
中間に別のModelをはさんでそこで書いてもいいが。
0819nobodyさん2007/10/13(土) 06:46:38ID:???
>>818
AppModelでいいのか。
なんかcake/ディレクトリに手を加えるのに抵抗あったからapp/の中のどこかかと思った。
さんきゅー。
0820nobodyさん2007/10/13(土) 09:05:42ID:???
いや、appのAppModelだよw
0821nobodyさん2007/10/13(土) 18:51:56ID:???
>>820
ありがとうございます。
cake/app_model.phpを見たら
>Create the same file in app/app_model.php
って書いてありますね…
見落としてました。
0822nobodyさん2007/10/15(月) 01:21:45ID:???
全体を通してみて、Cakeユーザのレベルが低い気がする。
いや俺を含めてね。
0823nobodyさん2007/10/15(月) 16:42:00ID:???
いや、お前だけだ
0824nobodyさん2007/10/15(月) 16:56:02ID:???
そうだそうだ
0825nobodyさん2007/10/15(月) 18:58:29ID:???
いや俺も
0826nobodyさん2007/10/15(月) 21:37:52ID:???
俺だって
0827nobodyさん2007/10/15(月) 21:50:58ID:???
どうぞ、どうぞ。

[フライング]
0828nobodyさん2007/10/16(火) 10:46:59ID:???
ケーキとかしばらく食ってねーな。スイーツ食いたいよスイーツ。
0829nobodyさん2007/10/16(火) 17:34:23ID:wp+6b1Uc
Use of undefined constant VALID_NOT_EMPTY - assumed 'VALID_NOT_EMPTY' in /var/www/html/pic/cake/dispatcher.php on line 157
チュートリアル通り進めてると
思うんだけど原因がわかりませぬ。

だれか教えてください。
0830nobodyさん2007/10/16(火) 19:47:20ID:???
まだフレームワーク使うに早いので勉強してください
0831nobodyさん2007/10/16(火) 22:09:04ID:???
>>830
お前は日本語をちゃんと勉強したら?
0832nobodyさん2007/10/16(火) 22:24:04ID:???
お前が言い回しを勉強しろ。
「使うに」の”に”がおかしいっていいたいんだろ?教養ない奴。

理解できなかったら、副助詞の「は」を補って
まだフレームワーク使うには、早いので、勉強してください と読め。
0833nobodyさん2007/10/16(火) 23:07:35ID:???
つうか横レスだが
どこにVALID_NOT_EMPTY定数入れておこられたん?
エスパーきぼんぬと言われてもしょうがない
0834nobodyさん2007/10/16(火) 23:08:02ID:???
ksks
0835nobodyさん2007/10/16(火) 23:31:16ID:???
「使うに早い」って正しい日本語だろ
0836nobodyさん2007/10/17(水) 00:55:10ID:???
どこが?
0837nobodyさん2007/10/17(水) 00:57:48ID:???
「使うに早い」 Google 検索結果・・・1件
「使うには早い」 Google 検索結果・・・17,900件

1件のブログの人?
0838nobodyさん2007/10/17(水) 01:15:36ID:???
そうだが?
0839nobodyさん2007/10/17(水) 01:32:54ID:???
今後、ここは正しい日本語について論じ合うスレッドになりました
0840nobodyさん2007/10/17(水) 16:55:45ID:???
Cake本でますな。
どっかの誰かさんが書いた糞本と違って内容が濃いことを願います。
本の質も少しでもRailsを模倣してほしいよ。
0841nobodyさん2007/10/17(水) 17:31:04ID:???
modifiedを更新しないでUpdateする方法って用意されてたりする?
やり方がわからなくて今はmodifiedを1回持ってきて再設定してるんだけど。

>>840
Railsは書籍がいっぱいあるからうらやましいよね。
0842nobodyさん2007/10/17(水) 17:37:52ID:???
>>841
意味がよくわからないけど。
modifiedは勝手に更新されるでしょ?
08438412007/10/17(水) 19:10:12ID:???
>>841
勝手に更新されて困るときに、更新しない方法ってない?という意味です…
0844nobodyさん2007/10/17(水) 19:20:08ID:???
modifiedは更新したときに勝手に更新されるためにあるもんだと思うが
08458412007/10/17(水) 19:56:57ID:???
>>844
いや、例外的に更新して欲しくないという時もあるよ。
その例外のためにmodifiedとは別の項目つくるのもスマートじゃないし。

So-net blog:sandmanの旅行の写真”とか”:CakePHP その7 - createdとmod..
http://blog.so-net.ne.jp/sand_man/2007-07-24
>ついでに、コントローラーごとに、この機能をオン/オフする変数が欲しい。
0846nobodyさん2007/10/17(水) 20:24:38ID:???
DBを使わない場合に、他のモデルのデータ使いたいときってどうすればいいの…?
0847nobodyさん2007/10/17(水) 21:54:28ID:q7TPqrYz
すごい初歩的な質問なんですが、
初期設定とかはどこですればいいんでしょう?

例えばファイルから設定を読み込むとか、
読み込んだ設定をセッションに登録するとか…
0848nobodyさん2007/10/17(水) 23:02:39ID:???
>>846
コントローラの話?なら
var $uses = array('Model', 'Model2');
で定義してアクセスするには
$this->Model->ググれ();

>>847
/app/config/bootstrap.phpとか
0849nobodyさん2007/10/17(水) 23:57:11ID:???
>>848

おお、DB使わなくてもそれでいけるんですね(?)
すごいなあ

ついでになんですが…
独自の関数(例えばhoge)ってどこに定義すればいいんでしょう…
AppControllerに定義すると継承されるので、そのURLでアクセスされるとアクションとして処理されちゃいますよね

class AppController extends Controller {
function hoge {
}
}

class FooController extends AppController {
}

とかだと、http://nantoka.com/hoge/

でhoge()がアクションとして処理されそうな気が…
むずいなあ・・・
早く本でないかなあ
0850nobodyさん2007/10/17(水) 23:58:11ID:???
>とかだと、http://nantoka.com/hoge/
>でhoge()がアクションとして処理されそうな気が…

訂正…

とかだと、http://nantoka.com/foo/hoge/
でhoge()がアクションとして処理されそうな気が…
0851nobodyさん2007/10/18(木) 01:17:44ID:???
_ とか __ とかつけれ
0852nobodyさん2007/10/18(木) 02:15:22ID:???
modifiedは自動更新されるためにあるんだしそういう仕様なんだから、違うカラムつくればいい。別にスマートじゃなくない。
0853nobodyさん2007/10/18(木) 08:53:55ID:???
>>851
>>852

どうもです m__m

_とかつけるとアクションとしては呼ばれないんですかね?

がんばって調べてみます
0854nobodyさん2007/10/18(木) 14:39:39ID:???
アップロードされたファイルも$this->dataの中に入りますよね?
$html->file('Sample/pic');
でアップロードしたんですけど、$this->data['Sample']の中には
ファイル名しかない・・・
$this->dataの中をprint_rで見ても、tmp_nameとか入って無いんですが。

これって何か設定しないと駄目なこことかありますか?
0855nobodyさん2007/10/18(木) 15:13:11ID:???
Cakeはそこまで面倒見てくれないから
move_uploaded_file()とか普通に使え
0856nobodyさん2007/10/18(木) 15:17:15ID:???
解決しました。
formにenctype入れるの忘れてました。
テヘ
0857nobodyさん2007/10/18(木) 15:33:11ID:Tkva8LEl
1.2.0.5427alphaでEmailComponentを使い始めたんだが、
改行を改行コードつまり"\r\n"ではなく、'\n' で
記述するのは仕様なのか?

コード読むと、__stripで改行コードさくっと消していたり、
$message = str_replace(array('\r','\n'), '\n', $message);
というコードがあったりするんだが・・・


あとメールの仕様って改行コードは文字コードとしての\r\nでいいの?
0858nobodyさん2007/10/18(木) 15:43:49ID:Tkva8LEl
これかぁ・・・
https://trac.cakephp.org/ticket/3381

バグでいいんだよな?
コアを修正するとあとで面倒なんだよな。
0859nobodyさん2007/10/18(木) 16:06:31ID:???
あと>>858のリンク先に修正コードがのっているけど、
改行削除しているのは、__strip関数なんだよなぁ・・・
$message = $this->__strip($message, true);

__strip関数の第二引数をfalse(省略すると)
改行コードは削除されないんだが、
そうすると第二引数をtrueにしているところがなくなるぞ?

何か意味があってそういうことしたのだろうが、
よくわからん。履歴も見たけどよくわからん。

だれか、EmailComponent使っているのだろうか・・・
0860nobodyさん2007/10/18(木) 16:12:14ID:7IUQWVSk
例えば、モデルの中でファイルを読み込む場合ってあるよね?
そういう場合って、セッションにでも保存しない限り、毎回ファイル読み込まんといけんの?

class Data extends AppModel {
  var $name = 'Data';
  var $filename;

  function load() {
    ファイル読み込み処理 
    $this->filename = ファイル名;
  }
}

class UserController extends AppController {
  var $name = 'User';
  var $uses = array('User', 'Data');

  function view() {
    if (!$this->Session->check('initialized')) {
      $this->Template->load(WWW_ROOT . 'template/');
      $this->Session->write('initialized', true);
    }

    $this->set('file', $this->Data->filename);
  }
}

とかやってるんだけど、2回目以降のアクセスでビューの$filenameが空になる…
0861nobodyさん2007/10/18(木) 16:14:06ID:???
すまん、間違えた。

class Data extends AppModel {
  var $name = 'Data';
  var $filename;

  function load() {
    ファイル読み込み処理 
    $this->filename = ファイル名;
  }
}

class UserController extends AppController {
  var $name = 'User';
  var $uses = array('User', 'Data');

  function view() {
    if (!$this->Session->check('initialized')) {
      $this->Data->load(WWW_ROOT . 'template/');
      $this->Session->write('initialized', true);
    }

    $this->set('file', $this->Data->filename);
  }
}

$filenameが空になる。
毎回ファイル読むかセッションに保存しないといけないんかな?
0862nobodyさん2007/10/18(木) 16:21:41ID:???
>>860-861
いまいち何がやりたいのかよくわからないけど、
>2回目以降のアクセスでビューの$filenameが空になる…
それは当たり前なんじゃないかな。
0863nobodyさん2007/10/18(木) 16:29:38ID:???
あ、ごめん・・・またまちがってた
DBなしでやってるんだけど、どうもうまくいかない…。

セッション initialized = false のとき(最初)
 1. DataModel: $this->Data->load(); で $this->Data->filename にファイル名が入る
 2. UserController: $this->set('file', $this->Data->filename でビューにファイル名を渡す
 3. ビューで <?php echo h($file) ?> でファイル名が表示される

セッション initialized = true のとき(2回目以降)
 1. $this->Data->filename にはすでにファイル名が入ってる(はずだと思うんだけど…)
 2. UserController: $this->set('file', $this->Data->filename でビューにファイル名を渡す
 3. ビューで <?php echo h($file) ?> でファイル名が表示される(はずなのにされない)


なんか間違ってる?(^^;
0864nobodyさん2007/10/18(木) 16:46:11ID:???
デバッガでみても空になってるね…
セッションに保存するしかないのかな?
なんかしっくりこない(・・;
0865nobodyさん2007/10/18(木) 16:53:18ID:???
>DBなしでやってるんだけど、どうもうまくいかない…。
DB使いましょう。

> セッション initialized = false のとき(最初)
>  1. $filename = 'hoge'; で $filename にファイル名が入る
>
> セッション initialized = true のとき(2回目以降)
>  1. $filename にはすでにファイル名が入ってる(はずだと思うんだけど…)
って言ってるのと同じだと思うんだけど。

DBなりクッキーなりセッションなりに記憶しないと、変数のデータは
ページ出力と同時に全て消えるよ。
0866nobodyさん2007/10/18(木) 16:58:29ID:???
>DBなりクッキーなりセッションなりに記憶しないと、変数のデータは
>ページ出力と同時に全て消えるよ。

そうなのかあ
普通の感覚でやってたので混乱した…
ありがとう!

DBを使わないものなので、セッションにでも保存することにします >_<
0867nobodyさん2007/10/18(木) 17:02:24ID:???
書き込み・読み込み可能な設定ファイルとかのヘルパってないですか?
こういうのもDBでやるもんですかね。

0868nobodyさん2007/10/18(木) 17:05:05ID:???
ちょうど >>863 の件で調べてたときに見つけたので

ttp://cakephp.jp/modules/newbb/viewtopic.php?topic_id=754&forum=3

こういうのでは?
0869nobodyさん2007/10/18(木) 17:17:12ID:???
>>867
俺はDBでやってるよ。

・・・でも読み込み重いかもなんておもちゃって
ファイルにキャッシュする機能つけちゃったけどなw
save時に全データをファイルにキャッシュ。通常はファイルから読み込み。

DBにした理由は、設定画面を作るのが面倒だったから。
0870nobodyさん2007/10/18(木) 17:42:09ID:XZqNQY+Z
test
0871nobodyさん2007/10/18(木) 18:00:34ID:???
>>869
どうも。DBにしといたほうが無難っぽいすな。

所でテーブルが無いとモデルとかコントローラとか作れないでしょうか?
0872nobodyさん2007/10/18(木) 18:02:46ID:???
http://gihyo.jp/dev/serial/01/cakephp

これ嫁。
0873nobodyさん2007/10/18(木) 18:04:36ID:???
>>871
作れるよ。

やりかたは、コントローラの$u・・・ぐぐれwwwww
0874nobodyさん2007/10/18(木) 22:21:39ID:???
コントローラAから $this->redirect で他のコントーラBにリダイレクトすると
セッションがうまく読み込めないんだけどバグ?仕様?

もちろんリダイレクト前に、コントーラAでセッションに保存してるし
コントローラBではセッションの読み込みをしている

読み込めないというより、コントローラAで保存ができないのか?
謎すぎる…

$this->redirectはroutes.phpの設定無視されるのか?
0875nobodyさん2007/10/18(木) 22:23:34ID:???
>>874

すまそ 自己レス

beforeRenderでセッション保存してたのがいけなかったみたい
保存前にリダイレクトしてたってことか orz
0876nobodyさん2007/10/18(木) 23:26:42ID:???
慣れるまで大変だけど
少し慣れてくると使うのが楽しくなってくるね ヽ(゚∀゚)ノ
0877nobodyさん2007/10/19(金) 03:59:00ID:???
>>876
そうなんだ?どのフレームワークが良さそうか探して回ってるんだけど、
CakePHPにしてみようかなあ
08788712007/10/19(金) 07:26:08ID:???
cacheっていうグローバル関数を見つけたんですが、
これ書き込みは出来ても読み込みはどうすればいいんでしょうか?
0879nobodyさん2007/10/19(金) 17:21:16ID:???
第二引数がnullならきっと読み込んでくれるさ
0880nobodyさん2007/10/21(日) 09:03:30ID:???
http://www.amazon.co.jp/exec/obidos/ASIN/4839924317/projectmultib-22/ref=nosim/
もうちょういでCake本が出るなぁ
みんな買うの?
0881nobodyさん2007/10/21(日) 11:00:36ID:???
>>880
アフィうぜえ。
通報しておいた。

http://www.amazon.co.jp/exec/obidos/ASIN/4839924317/
0882nobodyさん2007/10/21(日) 15:54:32ID:???
>>880
俺もアマゾンに通報しますた
■ このスレッドは過去ログ倉庫に格納されています