どーすんだよこのスレ
smartyで挫折した俺様でも楽しく作れますか?
甘い物が好きならケーキは食えるさ
6 :
nobodyさん:2006/11/19(日) 13:27:36 ID:EFwoFeZu
>>3 下手するとsmartyより覚えることが少ない
慣れることは重要だが
7 :
3:2006/11/19(日) 14:21:47 ID:???
とりあえずなにかおしえてくれ
まずは何をしたいんだ?blogでも作るのか?
フレームワークチャレンジャーはCakePHPから入ろう!
Ruby on Railsに似てるんですよね?
エキスパートプログラマーの皆さん、ご質問への回答をよろしくお願い致します。<(_~_)>
lt;?php symfonyとフランチョスのスレ ?gt;
↑シンホニーのスレタイ・・・なんだかな〜。orz
最近のFWは大概railsから色々パクってるよ
cakeはPHP4で且つどうしてもっていう理由がない限り世話になりたくないな
>>11さんのオススメ教えていただければ幸いに存じます
13 :
3:2006/11/20(月) 11:04:26 ID:???
簡単に作れるアプリを教えてください。
何度も言うがsmartyで挫折した俺様でも大丈夫でしょうか?
15 :
3:2006/11/22(水) 02:22:02 ID:???
10分なんて長すぎ。1分で作れるものたのむ。
そう、Hello Worldを表示するだけでいいんだよ。それを教えてくれ
>>15 サーバとCakeがしっかりインストールされているものとする。
1.app/config/database.php.default のファイル名をdatabase.phpに変える(10秒)
2.こうしてできたdatabase.phpをエディタで編集、とりあえずmysqlにつながるように設定(15秒)
3.app/views/pagesの下にhome.thtmlを作って、
中身はとりあえず<strong>3は極度に忍耐力の無いゆとり教育の犠牲者で精神疾患</strong>とする(20秒)
4.ブラウザで確認(5秒)
5.ちょっと抜けてるとこを修正(5秒)
6.もう一度ブラウザで確認(5秒)
はいできた。ちゃんと答えたんでやってくれ
17 :
3:2006/11/22(水) 23:10:36 ID:???
2.こうしてできたdatabase.phpをエディタで編集、とりあえずmysqlにつながるように設定
ここにつまずいて1分オーバーした。
>>16 1分じゃできないけど試してみる
あっ、ダウンロードとアップロードのやり方も教えて
17は偽者
本物は俺様だけどもう名無しで潜伏するからバカにしないでくれ
こうやって持ちつ持たれつで世の中成り立っているんだなあ。
>>21 おつかれちゃんです。
来月はクリスマスケーキ食べるから12月にはいったらもりあげてやるかそうがねえな。
DBをMysql以外で利用したく、PEARでの利用方法をどなたか教えてください。
database.phpにてdriverは、pear-drivernameとあったので
pear-ibaseとしてみたのですが、ファイルが見つからないとなります。
pearとすると、venderにDB.phpがないと怒られます。
PEARへのパスはinclude_pathにあり、他のスクリプトではPEARを利用できます。
(これがクリアできても、connectの書き方が不明なのですが・・・)
どなたかよろしくお願いします。
25 :
21:2006/11/30(木) 14:42:13 ID:???
/vender/Pear/ にPEARを入れて、driver に pear-ibase でいけそうな気もする。connectは・・書かなくてよかったりするのかな?
/trunk/cake/libs/dbo_factory.php
76 // special case for PEAR:DB -- driver name in the form of 'pear-drivername'
77 elseif (preg_match('#^pear[\-_](.*)$#i', $config['driver'], $res))
78 {
79 uses('dbo/dbo_pear');
80 $config['driver'] = $res[1];
81
82 $instance = array(new DBO_Pear($config));
83 }
/trunk/cake/libs/model/dbo_pear.php
62 function connect ($config)
63 {
64 $this->config = $config;
65
66 $dsn = $config['driver'].'://'.$config['login'].':'.$config['password'].'@'.$config['host'].'/'.$config['database'];
67 $options = array(
68 'debug' => DEBUG-1,
69 'portability' => DB_PORTABILITY_ALL,
70 );
71
72 $this->_pear =& DB::connect($dsn, $options);
73
74 return !(PEAR::isError($this->_pear));
75 }
うん、最近始めたばっかりでよく分かってないんだ。(趣味PGのFW初挑戦で手探り状態だし)
>>25 乙
左の行番号は手動で書き加えたんですか?
なんかツールとか使って、行番号を表示できるんですか?
便利なツールがあれば教えてください。
よろしく!
27 :
21:2006/11/30(木) 16:16:08 ID:???
cakephp って php4 では動かないんでしょうか。
最初 Windows XP + php-5.1.4 で
http://p4life.jp/cake/ のアプリケーションを試したところ問題なく動きました。
次に環境を変えて Windows XP + php-4.4.4 としたところ
Notice: Undefined index: Item in C:\cake\cake\libs\view\templates\scaffolds\list.thtml on line 106
というエラーが発生して動かなくなりました。
http://manual.cakephp.org/chapter/intro には Compatibility with PHP4 and PHP5 とかいてあるのですが。。。
>>29 CakePHPはphp4でもphp5でも動きますよ。
原因はよく分からないけど、存在しない添え字で配列を読もうとしてエラー吐いてるみたいだから・・
Controllersでのsetを書き間違えてたりとかありそうだけど、そのまま打ってるのなら問題なく動作するような・・んー?
33 :
24:2006/12/01(金) 18:04:24 ID:???
>>25 アドバイスありがとうございます。結論からいうと接続できていません。
PEARディレクトリを、vendersにコピーしました。
■driverにpearを指定すると
Your database configuration file is present.
Fatal error: Cannot instantiate non-existent class: dbopear in 'path to'\cake\libs\model\connection_manager.php on line 106
■driverにpear-ibaseを指定すると
Your database configuration file is present.
Fatal error: Unable to load DataSource file dbo\dbo_pear-ibase.php in 'path to'\cake\libs\model\connection_manager.php on line 153
です。該当行をみてみましたが、パッと見でわかるようなものじゃないので・・・。
connectについては、それ以前のようです。
どうしたものか・・・。
"ibase"でいけないか?
35 :
24=33:2006/12/01(金) 23:38:28 ID:???
>>34 ibaseでいけません。
dbo以下にあるファイルを探しに行くので、使えそうなのは
adodb,mssql,mysql,mysqli,odbc,postgres,sqliteとpearっぽいです。
dbo_ibase.phpも書けそうに思えますが、
後々のことを考えpearで使いたいのです。
ケーキって何ができるの?そこ教えてくれ。あとは自分で勉強するから。
>>36 今のお前に理解できる範囲のことができる(マジレス)
40 :
24=33:2006/12/02(土) 21:44:41 ID:???
>>39 3.A supported database engine (currently MySQL, PostgreSQL or using a wrapper around ADODB).
pearは実装できていないんですね。他のフレームワークをあたります。
41 :
nobodyさん:2006/12/02(土) 22:28:03 ID:1bAtVRRj
DB接続は cakePHP と pear と何が違うの?
>>40 一応DataSourcesの中にはDBO_Pearってあるけど
まあちゃんと動くかわからんが
>>42 はい、あることは分かったのですが、使い方が不明なんです。
ADODBの使い方調べればええんとちゃうの?
44ではないが、24はinterbase使いたいならADODBでいいのでは
ということでは
47 :
24:2006/12/05(火) 15:58:17 ID:???
残念なご報告です。
■pearでの接続は実装されていないことを再確認しました。(cake_1.1.10.3825.zip)
cake/libs/model/dbo/dbo_pear.phpは、クラス名すら違っています。
(DBO_Pear、正しくは、DboPear)つまり、一度もテストすらされていないようです。
なぜそんなものをリリースに入れているのか不明です。文化の違いでしょうか。
クラス名を変更してもdsnが生成されません。disconnect()も「先にこっちを・・・」
といったメッセージの出力のみです。
■ADODB試してみました。Interbase,Firebirdではおそらくテーブル名、フィールド名
の規約で使えません。Interbase,Firebirdは、テーブル名とフィールド名は
大文字となります。
create table posts ...とするとPOSTSというテーブルが作成されます。
create table "posts" ...でpostsが作成されますが、
select * from posts だとテーブルPOSTSが対象となり、postsを対象に
するにはselect * from "posts"と"でくくらないといけません。
フィールド名も同じです。
そのため、チュートリアルは動作しないようです。
回避する方法もなさそうなので断念します。
>>47 cake_1.1.11.4064では、少なくともclass名はDboPearに直っている。
49 :
29:2006/12/07(木) 15:33:20 ID:???
ちょっと教えてもらいたいんですが、
modelのJoinで同一テーブルに対してhasAndBelongsToManyの関連を
複数設定した時に、scaffoldで生成した更新画面の関連表示が一つしか
出てくれない状態になってしまいます。
配列のキーはそれぞれのJoinTable名をつけてるので、キーを上書きしてる事は
ないと思うんですが、同様の現象を経験した方いらっしゃるでしょうか?
classNameが一緒だと駄目なのかなぁ・・・
>>44 1.1.9の段階ではDBO_Adodbはバグだらけだったよ。
使うならデータベースはMySQLかPostgreSQLにしておいたほうが無難。
>>50 自己レスです。
classNameを分けることで無事うまくいきました。
具体的な対応としては、対象テーブルを基底クラスとしてJoin毎に継承クラスを
ベタに作成してバインディングしたところ、期待した挙動になってくれました。
ん〜、いいフレームワークだ。
http://localhost/admin/ でアクセスしたときに静的なHTMLを表示させたいんですが、view などはどこに置けばいいのでしょう?
/app/config/core.php の
define('CAKE_ADMIN', 'admin');
はコメントをはずしてあります。
/app/views/pages/admin_home.thtml なるものを作成しましたが、以下のエラーが表示されました。
Missing controller
You are seeing this error because controller Controller could not be found.
Notice: If you want to customize this error message, create app\views/errors/missing_controller.thtml.
Fatal: Create the class below in file : app\controllers\controller.php
<?php
class Controller extends AppController {
var $name = '';
}
?>
>>53 /app/webroot/admin/index.html
53じゃないが
>>54 なるほど!Cake admin使うときの静的ページはそっちに書くのか
56 :
53:2006/12/19(火) 23:57:58 ID:???
すいません!質問です。
レコードの追加・削除・編集を繰り返していると、
なぜか時々、追加したレコードの前に、「空のレコード」が
いくつか挿入されてることがあります。
これまで何度かあったのですが、うまく再現できないので、
MySQLの問題なのかCakeの方なのかの切り分けもできません・・・。
MySQLではフィールド 'id' をauto incrimentに設定してます。
(フィールド追加するときはauto incrimentにまかせてます)
どこからあたりをつけていけば良いのかのヒントでも
頂ければ助かります。
環境は
XAMPP
cake1.1.12.4205
です。
どうか、ご教示よろしくお願いします。
58 :
57:2007/01/11(木) 10:43:37 ID:???
○auto increment
×auto incriment
でしたすんません・・・
59 :
57:2007/01/15(月) 15:43:05 ID:???
漏れみたいな症状の人間はいないのか・・・
デリートをPHPMyAdminでやってるから?関係ないか
CakePHP1.2でバリバリ開発してるって人いらっしゃいますか?
もし、いたら伺いたいのですが結構バギーでしょうか?
CakePHP1.1で開発始めたのですが、メール機能等で欲しい機能が
充実しているので1.2をやっておいたほうがいいのか、と考えております。
よろしければ、現状での感想と1.2使ううえのアドバイスをお願い致します。
m( __ __ )m
>>60 自分も同様の理由で1.2に手を出しかけましたが
メールの日本語対応とか考えると厄介なので
ひっこめました。
>61
貴重なアドバイス感謝です。
ドキュメントとか考えるとやはり1.1のいい感じですね。
ありがとうございましたw
他にも何かありましたら、ご教授お願い致します。
疑問点:
・cakePHPのキャッシングってどこからどこまでの動作を飛ばすのか
・view/elementsがviewとキャッシュの生存時間が違う場合キャッシュできない?
自前でしろってことかしらん
・view/layoutsでヘッダ部を動的に変えたい場合どうするんだろう。
css変えたいとかjsのライブラリをロードしたりしなかったりしたい
誰か知ってたら教えてプリーズ
>>63 >・cakePHPのキャッシングってどこからどこまでの動作を飛ばすのか
コントローラから吹っ飛ぶので、キャッシュファイルにはコントローラ生成のPHPが書いてある。
他はどっかにコードが落ちてそうな気がする。
>・view/layoutsでヘッダ部を動的に変えたい場合どうするんだろう。
適当に変数setしてそれ見ればいいんじゃないの?
>>64-65 サンクスです。
$title_for_layout、$content_for_layout
しか使えないのかと思ってた。
とりあえずこれは「ケーキPHP」と読むので合ってる?
最初「ケークPHP」と読んでしまった。
>>67 え?俺も ケイクピーエイチピー だけど?
>>68 だよね。俺まえも「エイジャックス」のこと「アジャックス」って読んでた前科モチだから・・・
「ペア」も「ピアー」って読んでたし・・・
perlをぺるると呼んでいた俺よりマシだ
まじかるぺるるーとくん
くだ質なんだけど、cakePHPに限定して起こるんでこっちでいいかな?
いちおう下げて質問書いときます。
問題は、cakePHPでファイルアップロードが出来ない・・・
<input type="file" name="image" />
こんな感じでフツーにファイルを送信して、
$_FILESで参照してるんだけど、
cakePHPで実装すると$_FILESの値が空になります。
pr($this->rapams['form']);
では、
['image'] => hogehoge.jpg
とファイル名のみ参照できる模様で、ますます混乱するばかり。
なんか解決のヒントないですか
formタグに enctype="multipart/form-data"がないとか
なわけないか
自分にも関係あることだからやってみたけど普通にできた。
>>74 の言うとおり enctype="multipart/form-data" がないに一票。
遅レスだが
>>73 1.テンプレートの方でファイル送信フォームのとこ
<?php echo $html->file('data[Hoge][image]', array('id' => 'hoge_image', 'size' => '40', 'value' => $hoges['Hoge']['image'], )) ?>
とする
2. $this->params['data']['Hoge']['image']['name']に名前が入ってるのと
$this->params['data']['Hoge']['image']['size']にサイズが入ってるのを確認する
3.
move_uploaded_file($this->params['data']['Hoge']['image']['tmp_name'], WWW_ROOT . "images/uploaded/". $this->params['data']['Hoge']['image']['name'])
ってな感じでどうよ
hoge_controllerを作って、index()追加しただけじゃ、hogeのviewは見れないんでしょうか?
modelにhogeを追加しろってエラー出るんですが、、、Railsじゃできるんだけどなぁ
>>77 controller内に
var $uses=array();
とかやってみたらいけるんでないかい。ためしてないけど。
だめなら$useTable=array();なHogeモデルを作ったらいけるんでないかい。
ためしてないけど。
var $uses=array();
でうまくいきました!
ありがとうございます。
でも、なぜかうまくいったのかわからないので、具体的に教えてくれたらすごく嬉しいです。
>>79 78ではないが、
Hoge_ControllerはデフォルトでHogeというモデルを読み込もうとするから。
いわゆるひとつのconvention over configuration
$usesという変数に設定されるから、
ダミーとして、配列を無理矢理渡してあげるって幹事?
hoges_controllerは、
$users = array('Hoge');
がデフォで設定されるんで、モデルを使わないことを明示してあげるって漢字
>>82 なるほどね!
hogeコントローラで、hoge2モデルを使いたかったら、
$uses = array('hoge2');
ですね。
hoge2もhoge3も使いたい場合はどうしたらいいんでしょう?
ってかここ人少ないですね。cakeって人気ないのかな?
>>83 $uses=array('hoge','hoge2','hoge3');
何のための配列なのかと小一時間
たしかにもりあがってねえなーCake。
ドキュメント充実してるしな
>77みたいなのが例外
みんなデザイナーとの摺り合わせはどうしてるの?
Smarty間に挟んでるのかな。
このフレームワークってRailsやったことある人はすごいさくさく理解できるけど、
逆にやったことない人は挫折しやすい気がする。
Railsみたいに本出てないからなぁ。
全てのコントローラ、ビューで使えるような、
グローバル変数はどこで定義する?
自己解決しました
core.phpに設定しときました。
>>89 いや・・・そういうのはbootstrapに書くんだと思うよ・・・
グローバル変数使うことの是非はともかく
>>90 /app/config/bootstrap.php
これですか?それともcakeフォルダの中の?
そういうノウハウはどこで学ぶんでしょうか?
うーんそこまで来るとマニュアル読んでくれとしか答えようが無いな
94 :
nobodyさん:2007/03/05(月) 18:53:07 ID:5xyR9GqB
∩___∩
| ノ _, ,_ ヽ
/ ● ● |
| ( _●_) ミ _ (⌒)
彡、 |∪| ノ
⊂⌒ヽ / ヽノ ヽ /⌒つ
\ ヽ / ヽ /
\_,,ノ |、_ノ
かけぺっぷ
96 :
nobodyさん:2007/03/07(水) 16:24:28 ID:VDwNq8qV
もりあがってますね^^
生ものだけに痛むのも早かったか
不二家PHP
もうすぐsymfonyにTOBされます
100 :
nobodyさん:2007/03/09(金) 12:47:31 ID:GFS6POXv
なんでPHPのフレームワークって乱立してんの?
102 :
nobodyさん:2007/03/09(金) 13:31:48 ID:GFS6POXv
>>101 Javaのこと言ってんの?
PHP対抗はRubyか.netでしょ
RubyにRailsと同等のシェアを持つフレームワークあるの?
ruby以外の言語は乱立してるだろ。今はJavaも含めてもね
>>102 >RubyにRailsと同等のシェアを持つフレームワークあるの?
rubyは他に何もないマイナー言語だから一極集中してるだけ。
それくらい普通に考えればわかるだろうに、
>>100はかわいそうな子だなぁ
105 :
nobodyさん:2007/03/09(金) 14:37:43 ID:GFS6POXv
>>104 PHPでは訴求力のあるフレームワークが無いんだねっていう話
Javaは乱立してても有用なフレームワーク多いよ
皮肉とかわからないゆとり世代はかわいそうだね^^
Ruby on Rails単体の盛り上がり>>>越えられない壁>>>PHPフレームワーク全部の話題
乱立している理由なんてPHPが普及してるからじゃねーの としか言いようがない
Rails真似るなら完璧に真似ろよ。
所々それと違うところが多くてうざい。
っていうかRails使える無料サーバがあればいいや。
おいおいRailsヨイショしたいならこんな過疎スレじゃなくて本スレでやれよ(w
110 :
nobodyさん:2007/03/10(土) 09:42:26 ID:oMuhw0IR
>>108 Railsを超えることが目標なら
完璧に真似るのはデメリット。
Ruby on Railsの作者が、PHP on Railsを作ってくれるのが一番良い。
PHP on Rails > Symfony > Zend Framework
という構図になると思う
railsの作者って最初PHPで開発してて、こりゃダメだって思って、Rubyに切り替えたんじゃん。
>>112 それは知ってる。
だけど、PHP on Rails作ったら、使う人いるから創って欲しいということ。
PHP6くらいになって、PHPもまぁ使ってやってもいいかな?とDHHが思ってくれたらラッキー☆
しかしRubyという選択はすごいよな。
あんなジャップが作った過疎言語で挑戦するのは。
2chの人って、自分でジャップとかいうのが、かっこいいとか思ってんのかな。
かっこいいとは思ってねーだろw
少年ジャップでも読んで落ち着け
ダウンロードしようと思ったら404だった、、、
119 :
nobodyさん:2007/03/12(月) 09:35:31 ID:o+qmRSfV
チョッパリならかっこいいか?
120 :
nobodyさん:2007/03/12(月) 15:51:45 ID:P8Amefsi
selectTagではまっています。
usersテーブルにprefecture_idフィールドを設けてprefecturesテーブルのidとひもづけたいです。
<?php echo $html->selectTag('User/prefecture', $prefectures, null, null, null, false); ?>
user.phpでは
var $belongsTo = array('Prefecture' =>
array('className' => 'Prefecture',
'conditions' => '',
'order' => 'Prefecture.id ASC',
'foreignKey' => 'prefecture_id'
)
);
prefecture.phpでは
var $hasOne = array('User' =>
array('className' => 'User',
'conditions' => '',
'order' => '',
'dependent' => true,
'foreignKey' => 'prefecture_id'
)
);
とすると
Call to a member function on a non-object in users_controller.php on line 23
となります。
該当行は
$this->Prefectures->generateList(null, 'id ASC', null, '{n}.Prefecture.id', '{n}.Prefecture.name');
です。
どこが原因かどなたかおわかりになりますでしょうか?
よろしくお願いします。
$this->Prefectures
rails記法ならPrefectureでないかい?
モデルもPrefecture.phpの様だし
122 :
nobodyさん:2007/03/12(月) 17:41:39 ID:P8Amefsi
>>121 レスどうもありがとうございます。
おっしゃるとおり、
$this->Prefecture->generateList();
とすることで、該当行のエラーはでなくなりましたが、
Undefined variable: prefectures in add.thtml on line 44
と別のエラーがでてしまいました。
44行目は
>>120にあるように
<?php echo $html->selectTag('Participation/prefecture', $prefectures, null, null, null, false); ?>
です。
$prefecturesを$prefectureとすると
Undefined variable: prefecture in add.thtml on line 44
となります。
なお、users_controlle.phpに
var $uses = array('Prefecture');
を定義しました。
これを入れないと
Call to a member function on a non-object in users_controller.php on line 23
となります。
そもそも$usesを使わないとエラーなのはおかしいのでしょうか?
controllerからviewにどんな変数をセットしてるか分からんと答えられん
124 :
120:2007/03/14(水) 22:40:27 ID:QrdB0vAL
以下のコードで解決しました。
$this->set('prefectures', $this->User->Prefecture->generateList());
User を間にはさんで set すればよいようですね。
でもこのやり方でよいかどうか疑問です。。。
http://groups.google.ch/group/cake-php/ で探しました。
どうもありがとうございました。
これってrender without layoutみたいな機能は無い?
View中でrequestActionではなくrenderWithoutLayoutしたいんだが…
views/elementsに入れるかapp_controller弄って
elements検索パス拡張→renderElementするしかないのかな。
あと関係ないけど一つのアクションで複数insertするとき
$this->Model->save(array(...))の前に$this->Model->id=null;入れなくちゃならないんだね。
数分嵌ったわ。createとかあればいいのにな。
っと思って調べたらid=false, data=array()するcreate()てのがあるのか。
Railsとの微妙な違いにとまどう。
>>127 あーそれ俺もハマった。
まぁ理屈としてはわからなくもないんだけどなぁ
ドキュメントには書いてあったけど、同じケースの情報無かったよね?
頻出しそうな処理だと思うんだけどねえ。
それともみんな他のやり方で複数insertしてんのかなあ
mysqlのauto incrementみたいな感覚でpostgresも考えてましたが、
postgresでのシーケンスがなぜかうまく動作しないようなので
$this['data']['Hoge']['id'] = $this=>Hoge->getMaxId +1
してますがそれが何か
ちょっと質問。model中からアソシエーションの無い別のモデルを使いたいとき、どうしてる?
$hasAndBelongsToMany = array('そのクラス');
すれば出来なくはないが、(実際にはhabtmテーブルがないため)軽くSQLエラーが出てる。
model中で$usesは使えないみたいだし…
あっちのスレではCodeIgniterで盛り上がってるのにおまいらときたら
>>131 日本語情報が増えてきたからっていきなり出てくんな
フレームワークを勉強しようと思ってcakeのチュートリアルをやってるんだが
なかなか理解できん。。。
逆引きの解説とかないのだろうか?
\(^o^)/ \(^o^)/ Cakeオワタ
) ) ノ ノ
(((( > ̄ > )))) \(^o^)/ ((( < ̄< ))))
) )
((( > ̄ > )))) code igniterハジマタ
\(^o^)/ \(^o^)/ code igniterハジマタ
) ) ノ ノ
(((( > ̄ > )))) \(^o^)/ ((( < ̄< ))))
) )
((( > ̄ > )))) code igniterオワタ
いやいや
あっちのスレでは確かにCI盛り上がってるけど、
CakeはCakeで用途に応じて使い分ける事になると思うぜ
5人前後のチームで開発するとかなら
Cake選択した方がいいよ、情報多いし。
CIの日本語情報待ってても埒が明かん。やってくれてるありがたい人はいるけど。
>>138 始まって、そしてすぐ終わったという分かりやすい日本語情報以上に必要なものなんてあるか?
とりあえずAPIドキュメントをアルファベット順にしろと言いたい
141 :
nobodyさん:2007/04/26(木) 18:41:50 ID:tC5hNJVI
cakephpってscaffoldでpagerつくってくれんの?
それくらいやってくれんとほんと使いもんにならんのだが…
scaffold自体使いもんにならんだろ。
あれはあくまで初期実装テスト用。
decorateやMasterbakeでも入れなさい
つうかcakeの肝はbakeやろ
>>144 TurboGearsやDjango、symfonyには素晴らしいscaffoldがあるよ。
凄い細かいところまで機能拡張できる。
少量の手間で実用十分なバックエンドツールが作れる。
>>145 bakeって1度吐き出したら終わりなんじゃないの?
テーブル変更したら反映してくれる?
いろいろ調べてみたら、どうやらdevバージョンではページャやソートを
付けてくれるみたいだな。
とりあえず今はpaginationコンポーネントを_beforeScaffoldに無理やり突っ込んで
Pagination実現したけど、やっぱイマイチだなぁ…
こりゃ4しか選択肢がないプロジェクトでしかメリットねーな
>>146 いや、
>>144は「CakePHPのscaffoldが使い物にならん」って話だろ
常識的に考えて
>>147 だからdecorateやMasterbakeは吐き出して終わりで、
テーブル変更に対応できないんじゃないのかって聞いてるんだけど、
それくらいわかるだろ?常識的に考えて。
そんなこと誰も聞いてないだろ
>>149 >bakeって1度吐き出したら終わりなんじゃないの?
>テーブル変更したら反映してくれる?
まぁいいや、んで反映してくれんの?
2ちゃんねるで討論に勝つ方法。
1.都合が悪いときは黙秘。
2.都合が悪いときは「ぐぐれ」。
テーブルの何を変更したときに
何をどこに反映して欲しいのか分からん
この人は何故誰も聞いてないのにテーブル変更の反映にしがみついているの?
bakeもdecorateもMasterbakeも出来ない(と思う)けど、
だったら変更を反映する物を作ってくれるとでもいうわけ?
是非お願いします。それがないからCakeは使いたくない。
>>150 できんよ。masterbakeはただのジェネレータ。
現状rails派生の中ではCIに続いて2番目に貧弱なんじゃね?
>>152 は?普通に
>>146であげられてるFWのラインナップ見ればそれくらいわかるだろ?
カラム付け足したらその分のカラムが出てくるとか、結合キー足したらそのリンク先の
テーブルの内容が出てくるとか。
ソースの上書き無しに他のFWならそれが可能なわけですが。
あと素晴らしいbakeを作ってくれるなら、
是非カラムのコメントをhumane field nameにする機能を。
ぶっちゃけCakeなんか使ってられない。
よほど短納期で品質が低くてもOKならいいかもしれんが、
それにしたってCakeより優れたフレームワークが他にあるし。
158 :
nobodyさん:2007/05/06(日) 03:28:26 ID:h5MYHYt1
トランザクション機能さえ正式実装されてないんだからお話にならないよな
paginationが標準じゃないってのが全てを物語っている
ここで出てきた、欲しいという機能はすべてあるし。
使った事無い奴が、無いとかいってんじゃねーよ。
標準で用意されてないって話なのが分からん奴がいるとは・・
cakeなだけにつくりも甘いぜ
>>160 >ここで出てきた、欲しいという機能はすべてあるし。
ほんとにあるならこんなに盛り上がってないしw
使った事無い奴が、あるとかいってんじゃねーよ。
頑張って出来なきゃクソ以前。
頑張らないと出来ないからクソ。
165 :
nobodyさん:2007/05/07(月) 06:26:31 ID:??? BE:350280083-2BP(0)
CakePHPで、だれかxreaでHP,会員認証、会員向けコンテンツ、ブログやってる人いませんか?
公開してないけど稼働しているよ。なんか不具合でも?
167 :
nobodyさん:2007/05/07(月) 12:22:45 ID:??? BE:919485779-2BP(0)
見せていただけますか。
嫌です。
169 :
nobodyさん:2007/05/07(月) 12:45:42 ID:??? BE:612990476-2BP(0)
括弧悪いのかな?
意味分からん。
なんで無料で見せてやらないといけないんだ?
金払うなら金額によっては見せてやる。
価値のあるコンテンツに金払うのは常識。
嫌なら自分で探せ。
171 :
nobodyさん:2007/05/07(月) 13:01:18 ID:??? BE:408660274-2BP(0)
別にいいよ。君には見せてもらおうとは思わん。朝鮮人みたいな奴だな。
172 :
166:2007/05/07(月) 16:35:56 ID:???
見たいだけか。設置の質問くらいなら答えられると思ったんだが。
残念ながら開発中なので見せられない。
173 :
nobodyさん:2007/05/07(月) 22:45:53 ID:??? BE:58380522-2BP(0)
いまさら二郎
ここは匿名掲示板
しかも、悪い噂も多い2ちゃんねる。
自分が作っているのを教えると、
このサイトの開発者は
2ちゃんねらだとばれる。
常識的に考えて教えるわけが無い。
まーそうだね
タダで見せてもらおうなんて朝鮮人みたいな奴だな
>>176 おまえそういう偏見の強いとことか朝鮮人みたいだな
>>177 おまえのそういう朝鮮人みたいなところが好きだぜ
朝鮮人のチンポしゃぶりたい
キムチの味がするがいいニダ?
ああ、最高だ
書籍買ってね♥
Web2.0 ビギナーズバイブル
http://www.cbook24.com/bm_detail.asp?sku=9784839923228 Chapter 9 CakePHPとPHPによるWeb 2.0高速開発
9-1 WebアプリケーションフレームワークCakePHP
9-1-1 CakePHPとは
9-2 習うより慣れる
9-2-1 ウェブログを作ろう!
9-2-2 開発環境について
9-2-3 CakePHPのダウンロード
9-2-4 新規プロジェクトの作成
9-2-5 データベースの準備
9-3 アプリケーションを作る
9-3-1 新規アプリケーションの作成
9-3-2 モデルの作成
9-3-3 コントローラの作成
9-3-4 ビューの作成
9-3-5 アプリケーションを動かしてみる
9-3-6 なぜ動くのか?
9-4 ブログ機能を追加する
9-4-1 カテゴリとコメント機能を付ける
9-4-2 カテゴリとコメント機能の仕組みを理解する
9-4-3 認証機能を付ける
9-4-4 RSS配信機能を付ける
9-5 もっとブログ
9-5-1 indexページを変えてみる
9-5-2 カテゴリ別indexページを作ってみる
9-5-3 カテゴリ一覧を作ってみる
9-5-4 詳細表示画面でコメントを入力できるようにする
9-6 スタイルの変更
9-6-1 スタイルシートを使う
それかったよかったよ
> それ かったよ かったよ
なんで二回も言うんだよ?!
2冊買ったらもう一冊ついてくるんだもん
書籍買ってね?
PHPによるJavaScriptを書かないAjax
http://www.9-ten.co.jp/bookdata/1753.php Part 4 AjaxをサポートするPHPフレームワーク
4-1 CakePHP
4-1-1 CakePHPのインストール
4-1-2 アプリケーションの作成
4-1-3 CakePHPのヘルパー
4-1-4 データベースへのアクセス
4-1-5 CakePHPのAjaxサポート
4-1-6 高度なAjax機能
オマイラcake話はないのか。
という俺もないが。
サニタイズ、ヴァリデートの例を探しているんだけど、どこを見れば良い?
191 :
nobodyさん:2007/05/24(木) 14:12:50 ID:GefDq5o4
レイアウトビューでセッションの値を使いたいんですが、一番スマートな方法はどんな方法がありますか?
レイアウトなのでコントローラからも直接渡せないのです。
よろしくお願いいたします。
コントローラでsetして使えばいいんじゃないの。
一番スマートかどうかは知らんが
193 :
nobodyさん:2007/05/24(木) 15:09:46 ID:GefDq5o4
レイアウトはすべてのビューで使われてるので、どのコントローラで渡せばいいのかわからないんです。
195 :
nobodyさん:2007/05/24(木) 15:15:41 ID:GefDq5o4
たとえば、レイアウトにログインリンクとログアウトリンクのどちらかを表示させたくて、
それをセッションで判断してるんですけど、
すべてのコントローラとすべてのアクションからセッションの値(ログインしているか)をsetするのは非現実的なので、
何かいい方法はないかなぁという質問です。
ああそういうことか。勘違いしてたな、こりゃすまんかった
で、現実的にはAppControllerの__construct()をオーバーライドして
そこでsetするのがいいんじゃないかな。
cakeのライブラリを直接いじるのが気になるなら、
AppControllerを継承したMyAppControllerクラスを作って
__construct()のオーバーライドはそこですることにして、
他の自作のたくさんのコントローラはMyApppControllerを継承する。
197 :
nobodyさん:2007/05/24(木) 15:35:35 ID:IzNiejk0
198 :
nobodyさん:2007/05/24(木) 16:28:48 ID:GefDq5o4
>>196 ちょっとめんどくさそうなんで、別の方法模索します。どうもです。
ただでアドバイスしてもらってその言い草。
どうせ、業務でつかうんだろうに。
しかも意味分かってないねこいつ。
コンストラクタのオーバーライドが面倒って・・・w
>>196 MyAppController.phpを作らなくても、
appディレクトリ直下にapp_controller.phpをおけば、アプリからは自動的にこれが使われるようになるよ。
AppModelも同様。
すごい速さで開発が進んでいる・・・
203 :
nobodyさん:2007/05/25(金) 14:34:37 ID:heBQtPKb
findAllByName(false)
って感じでfalse渡すと全部拾ってくるのはどういう理屈?
falseを渡したときの動作なんて保証されてないだろう。
string か array を渡せと書いてあるはず。
そろそろcake使ってみようかな。
超クールなヘルパーつくったんだけど、どこで発表すればいいの?
そんなことも自分で調べられないなら、
恥ずかしいので発表しないでください。
1ch.tvとかじゃね?
デフォルトのセッションが一定時間たったら切れちゃうんですが、
ブラウザを閉じるまで持続させる、とかはどうやって設定するんでしょうか。
212 :
nobodyさん:2007/05/31(木) 15:17:02 ID:9EiCBHk0
ビューの中でHTMLの<head></head>の中にタグ追加することってできないかな?
たとえば、あるページにだけ使いたいjsを読み込んだり。
レイアウトに指定すると、全てのページで読み込まれるからあまりよろしくないですよね。
よろしくおねがいします。
別のレイアウトを追加して使えばいい
単にレイアウトを切替えれば良い話じゃないの。
自動的に制御したければそういうヘルパーを書いてもいい。
215 :
nobodyさん:2007/05/31(木) 15:50:36 ID:9EiCBHk0
>>213,214
なるほど。盲点でした。
ありがとうございます。
でも、1行のためにファイル1つ増やすのもなんかスマートじゃない気がするんですが、
みなさんが同じ場合でもそうしますでしょうか??アドバイスおねがいいたします。
目的と状況による。
どれぐらいの量のタグを追加するのか、
将来的にも他のページで使う可能性はないのか、など。
エレメント使えばー?
218 :
nobodyさん:2007/05/31(木) 18:08:22 ID:9EiCBHk0
>>218 いやー、具体的にと言われても…
つーか、レイアウトにエレメント埋めて、そこで条件判別すればー?って話なんだけどさー。
エレメント内にロジックを埋め込むということ?
こうしてる。
layout側の記述
<head>
<?php
if(isset($javascripts) && is_array($javascripts)){
foreach($javascripts as $js){
echo JavascriptHelper::link($js) . "\n";
}
}
?>
</head>
で、controller側から
$this->set('javascripts', array('prototype', 'tekitou');
って記述するとprototype.jsとtekitou.jsが読み込まれる。
なんか突然QuestHistory Felstoneが動かなくなってねぇか・・・
誤爆スマソ
225 :
かけphp:2007/06/06(水) 11:42:57 ID:i598mYRR
ども。
Cake使ってる人たちにお聞きしたいのですが、実際に使っている方にとってCakePHPって
どこまで満足して使えていると思いますか? CakePHPがあれば大抵のアプリは
簡単に構築できるようになるのかな。
HABTM以上の少し複雑な関係を扱うととたんに汚くせざるを得ない。
Paginationや認証もわざわざ自分で書く(持ってくる)必要があるから簡単とはいえない気がする。
bakeに類するものを使っても、対話式は非効率だし。
227 :
nobodyさん:2007/06/12(火) 11:52:23 ID:9MpyswiS
アソシエーションの使い方がわからん・・・
228 :
227:2007/06/12(火) 14:20:15 ID:9MpyswiS
事故解決。
ところで、改行コードを改行タグに変換してくれるヘルパーってないですかね?
標準で実装しててもいい機能だと思うけどなあ
・・・nl2br知らないとかいうオチじゃないよなまさか
cakeのviewを使った場合の話だろう。
たしかHTMLヘルパー使って出力すれば勝手に変換されたと思うが
232 :
nobodyさん:2007/06/14(木) 15:56:59 ID:ZlJLpzAT
自分のつくったコントローラーを継承したいんですけど、どうやるんですか?
class ChildController extends ParentController
としても、Cannot inherit from undefined class parentcontrollerと、エラーが出てしまいます。
インクルードしてないだけでしょ
>>232 うわ、すげぇ、こんなド素人がフレームワークを使おうとしている。
cakePHPはそういうポジションなのか・・・。
最近CakePHPをいじりはじめたのですが
データベースのフィールド増やすたびに
/app/tmp/cache/models
の下のキャッシュを削除しないといかんのでしょうか?
そうしないとcakePHPは新しいフィールドを一切認識してくれません
237 :
nobodyさん:2007/06/15(金) 16:15:48 ID:WBx+PEHj
>>235 開発中ならDEBUGを1以上にしてればいいんじゃない?
ありがとう
これのせいで2時間悩んだ
239 :
nobodyさん:2007/06/18(月) 13:41:31 ID:As+yaC2S
MySQLのDATETIME型って結局ただの文字列なの?
"2007-06-18 12:00:00"って文字列渡しても認識してくれるけど
スレ違い(下手したら板違い)じゃないか?
MySQL内で型の変換してるんだとおもうけどな。
時間順にソートできるんだから。
>>239 MySQL側でどう保存してるかと
PHP側でどう扱っているかは別の話。
CakePHPって複数行削除できないのか_| ̄|○
$this->model->del(array(1,2,3,4));
複数削除するのはSQL直接叩かないとだめなのか?
243 :
242:2007/06/18(月) 17:46:37 ID:???
foreach (array(1,2,3,4) as $i)
$this->model->del($i);
アホっぽいか('A`)
>>242 DboSource::delete(&$model, $conditions) を呼び出せば一応出来る。
$db =& ConnectionManager::getDataSource($model->useDbConfig);
$db->delete($model, 'id = 1 or id = 2');
ただこの方法だとbeforeDelete()とかはされないので
必要なら明示的にやらないといけないが。
edit.thtmlにパラメータでid渡して、渡されたidの値をフォームのvalueにセットして、
送信ボタン押したら、確認画面にいくようにしてるんですけど、
この間でバリデーションを行って、エラーが出れば、
edit.thtmlに戻るようにしてるんですが、パラメータのidの値をvalueに入れちゃってるんで、
フォームで編集(変更)した値が消えて、初期値に戻ってしまうんですが、
何かスマートな方法ありますでしょうか?
私の考えでは、
editアクションで、データが送信されなかった場合のみ、valueに設定する初期値を、
コントローラからビューにsetさせ、ビュー側でsetされたかifで調べて、valueに入れる。
データが送信されたら、何も渡さない(inputのfieldNameに基づき送信データがvalueに入る)ようにしているんですが、
inputの数だけifで調べて、コントローラ側でもinputの数だけsetしなければいけないので、かなり面倒なことになってます。
もっとスマートな方法があれば助言お願いいたします。
>>245 何もしてないのに勝手に初期値に戻るわけないだろ。
findとかでDBから値を読み込んでるところがあるはず。
そこを確認画面以降は行わないようにすればいいだけなんじゃないのか?
これで分かんなかったらコントローラのソース晒せ。
247 :
242:2007/06/18(月) 19:01:11 ID:???
>>244 thx
結構、奥の方まで食い込まないとなのね
>>245 的を射てるか分からないけど
コントローラ側で$this->dataに代入するしないを分岐するだけでいいんじゃないかな
おまいら日本語のバリデーションってどうしてる?
デフォのvalidatorってpreg系なので、UTFなら日本語自体は通るが、
「ひらがなのみOK」とかってできなくね?
ということで結局mb_ereg系のバリデータ書いちゃったよ。これでええのんか・・・?
>>248 UTF-8なら、u修飾子つかえばOK
var_dump(preg_match('/^[ぁ-ん]+$/u', 'あいうえお'));
var_dump(preg_match('/^[ぁ-ん]+$/u', '漢字かな交じり'));
251 :
245:2007/06/19(火) 11:37:07 ID:OkFSOfnZ
//タグ属性設定
$hoge1_attribute['size'] = 20;
$hoge1_attribute['value'] = null;
if(!empty($Hoge['Hoge']['hoge1'])){
$hoge1_attribute['value'] = $hoge['Hoge']['hoge1'];
}
echo $html->input('Hoge/hoge1', $hoge1_attribute);
こんな感じでinputの数だけ直前に記述しているんですが、こんな感じでやるしかないんでしょうかね?
かなりビューがみにくくなっちゃいますが・・・
みなさんならどうしますでしょうか、助言おねがいします。
長々書いてるけど、単に連想配列をループで書き換えるってだけだろ。
Set::merge使えばおわりじゃん。
釣り堀
こういうのどう思いますか?
まず、ショッピングカートがあります。
そのショッピングカートはいろんなタイプの商品があります。
その商品タイプごとに入力できるデータ項目が違います。
(飲料商品タイプは内容量ミリリットル入力フィールドがあるけど、
雑誌商品タイプではISBNフィールドがあるなど。)
この場合に商品タイプごとに専用のテーブルをつくるのは
変な設計ではないと思いますが、この商品タイプを
CakePHPで作ったアプリの管理画面から増やそうと思ったら
create table文を発行することになると思います。
またこの商品タイプの管理画面を担当するphpファイルを
コピーして増やすことになると思います。
一般的にはbake等でプログラマが手動で追加していくコード・DB構造が
エンドユーザーが管理画面から操作することにより、
自動的にプログラムコードが拡張されていくようなイメージになります。
こういうのって気持ち悪いシステムなんでしょうか?
他にこのような自動的にプログラムが拡張されるような
仕組みを持ったものありますか?
このまま進めると大きな問題になりそうで不安です。
そもそも「商品タイプ」というものに必要な属性の抽出が出来てない感じをうけるな。
「飲料食品タイプ」の内容量ミリリットルって
「雑誌商品タイプ」でいうところの書籍重量ってのと、どう違うの?
逆にISBNコードってのは業界の商品流通コードなんですよ。各業界にも
あれこれあるでしょ?使うかどうかは別にして。
>>257 > そもそも「商品タイプ」というものに必要な属性の抽出が出来てない感じをうけるな。
世の中のすべての商品タイプをあらかじめ抽出なんて不可能でしょう?
> 「飲料食品タイプ」の内容量ミリリットルって
> 「雑誌商品タイプ」でいうところの書籍重量ってのと、どう違うの?
> 逆にISBNコードってのは業界の商品流通コードなんですよ。各業界にも
> あれこれあるでしょ?使うかどうかは別にして。
だからなんなんでしょうか?
例なんだから、細かいところにこだわりすぎ。
共通で汎用の商品タイプ作れとかそういう話ですか?
価格ドットコムで検索したことありますか?
不可能でしょ。そんなこと。
なんで顔真っ赤にして怒ってるんだ?w
>>259 荒らす気か? 話に参加する気がないのなら死ねよ。
横レスだがcake外の問題つうか、tableの設計と正規化についての問題と思われ
>>257 の「使うかどうかは別にして」というのはそういうことだと思うよ。
ただ「書籍重量」という例はちょっと悪いな
もしそういうものを作るんなら、たとえば
・商品カテゴリテーブル(id,商品名)
・商品詳細項目名テーブル(id,商品カテゴリid,項目名,項目タイプ)
・int項目タイプ詳細テーブル(id,商品カテゴリid,商品詳細項目id,値)
・varchar項目タイプ詳細テーブル(id,商品カテゴリid,商品詳細項目id,値)
・text項目タイプ詳細テーブル(id,商品カテゴリid,商品詳細項目id,値)
この4つですむじゃん。たとえばだけど
とにかく
>>256は正規化でしらべやがれ、
DB板(ドラゴンボール板)に行け、そして戻ってくるな
つうか、初心者増えたのか?cake界は
>>261 それってデータベースレベルでのチェックができなくね?
つか、そういう使い方ってアリなのか…
そこらじゅうでcakeの話題が出てるからそんなかには素人もいるわな。
>232
>239
>242
>245
>256
厨発生中だな。
245と256は同一?
265 :
nobodyさん:2007/06/20(水) 10:48:12 ID:zjQXSfAj
ここより、PHP自体の話題と思ったので、【PHP】下らねぇ質問はここに書き込みやがれ 47 の
>>626に書き込んだんですけど、
やっぱり、CakePHPが絡んでくるので、どうしてもCakePHPの説明が入ってしまいます。
ここの方がよかったかもしれません。
どなたかご回答お願いします。。
読みに行ったが、627で速攻答えが出てて禿げワロタ
なにがしたいのかわからん。タイプ数減らしたいだけか?
267 :
nobodyさん:2007/06/20(水) 13:57:48 ID:zjQXSfAj
<?php
class Bbs1Controller extends AppController
{
var $m = ここに$this->Itemと同等のが入れたい
function index()
{
$this->m->findAll()
}
}
こんな感じのを想像していて、
$m(コントローラで使いたいモデル)をあとで変更できるようにしたいのです。
$this->Item->findAll()みたいな、モデルを使うところがたくさんあるので、
継承したあとに、var $mだけ書き換えれば、違うテーブルを使えるようになったらいいかなぁと思ったんですが。。。
get_object_varsではできませんでした。
>>267 PHPやめてRubyにしなよ。
みんなもっと親切だぜ?
269 :
nobodyさん:2007/06/20(水) 16:59:59 ID:zjQXSfAj
開発してるときはRailsのほうがいいんだけどな。
本番環境に移行するとなると、いろいろとめんどくさいんだよな。
>>267 class anyclass extends base
{
$model = 'default';
function index()
{
$this->{$this->model}->findAll();
}
function setter($model)
{
$this->model = $model;
}
}
$class = new anyclass();
$class->findAll();
$class->setter('other');
$class->findAll();
>>261 >DB板(ドラゴンボール板)に行け、そして戻ってくるな
>つうか、初心者増えたのか?cake界は
君のテーブル見る限り、君自身が完全に初心者なんだが…
>>269 ID:zjQXSfAj 君、急に口調変わるねぇ。
飲料のミリリットルは商品の大切な要素だけど
書籍重量って書籍が決まればそれに付随して一意に決まるだろ…
喩え出す奴が馬鹿すぎるとダメだなw
しかもそれに面白レスしてる261が別人ってのはにわかに信じがたい
さすがcakeかっけーぜ
意味不明
そもそもDB設計の質問する奴がスレ違い以前に板違い
>>273 自分を批判する奴がひとりだと思いたい中2病乙
>>261みたいな面倒なことしなくても
商品テーブル
・商品ID
・カテゴリID
・品名
・価格
・詳細説明
・更新日
・登録日
・特徴1
・特徴2
・特徴3
・特徴4
商品カテゴリテーブル
・カテゴリID
・カテゴリ名
・特徴1の項目名
・特徴2の項目名
・特徴3の項目名
・特徴4の項目名
でいいんじゃね?
特徴1〜4はカテゴリによって使用しなくてもOK。
書籍は「重量」を入れなくてもいいが、「作者名」・「ISBN」が必要。
飲料は「商品コード」は入れなくてもいいが、「容量」が必要。
そんな第一正規形にもなってないテーブル作らないで下さい。
全然cakeの話じゃないやん
>>278 クライアントに「特徴が5つ以上必要なカテゴリが出てきたら
別途見積もりになりますのでご連絡下さい」と言えばOK
>>279 クライアントが満足して使えりゃそれでいいんだよ
それで満足するクライアントという特殊な条件下でなら提案しなくてOK
こんなレベルで仕事できるんだな。
でもcakeみたいにDB構造かえやすいフレームワークなら必要に応じて増やしていくのもありかとおもう今日この頃
それは足場段階でやることであって、運用段階でやることではない
>>281みたいなあほな仕事してた奴が、こないだ失踪した。
おまいらそろそろ馬鹿はほっといてcake話しようぜ。まあ大体いい情報はフォーラムかGoogleグループにでてるがな。
cake本はやくでないもんか。
1.2が正式になってからでいいよ
開発環境(Windows)から、本番環境(Linux)に移行するとき、何か気をつけたほうがいいことってあります?
本番環境はPHP+mod_rewriteが使えるApache+MySQLは使えるんですが、すぐ移行ってできるもんなんでしょうか?
そういうのを説明してくれているサイトって無いですよね。。
>>289 ディレクトリセパレータにcakeが用意してる定数DSを使うとか・・
特に気にせずとも動いちゃってるので気にしたことがないっす
>>290 え、cakephpのフォルダをそのまま本番ディレクトリへコピーするだけなんでしょうか?
webrootだけをdocumentroot下に置いて、それ以外は上に置くとかなんかありませんでした?
そんなもん使い方や設定によるだろ
一概にどうすればいいとは言えない
>>292 使い方や設定っていうと?
もうスタンダードな使い方でいいんですけど、そのままコピっておkですかね?
テスト環境つくってやってみるのが吉とおもわれ
>>294 ありがとうございます。
もちろんテスト環境つくってやるつもりなんですが、
やっぱり試行錯誤する感じでいくしかないですかね。
webrootだけをrootにおいて(つまりはhttpでアクセスを許可させて)後はアクセスできないようにしとくくらいじゃないか?
テスト環境で動くなら。
HTMLヘルパーに<input type="button">がないよな。。
$html->input('Unkos/unko' , array('type'=>'button'))
300 :
nobodyさん:2007/06/27(水) 12:00:32 ID:5woCK0g1
Cakeのディレクトリ構成がうまく理解できないです。
コントローラで、
webroot/temp/test.txt
を削除したかったら、unlink()にどう指定してあげればいいんですか?
unlink('/temp/test.txt');
初めこうしたのですが、$this->webrootという変数があったので、
unlink($this->webroot . '/temp/test.txt');
こうしたのですが、
これでもだめでした。
No such file or directoryとエラーが出てしまいます。
>300
適当なビューでecho $this->webroot;して試してみたらどお?
302 :
nobodyさん:2007/06/27(水) 12:45:14 ID:5woCK0g1
303 :
nobodyさん:2007/06/27(水) 12:58:04 ID:xI/8M0tS
win鯖で作ったプログラムをリナクスにそのまま貼り付けて使えるでしょうか?
鯖のOS変わるとプログラムの書き方も変わるんでしょうか?
>>300 unlinkの引数はURLじゃなくてパス。
システム内での実体のある絶対パスか相対パスを与える。
>>303 場合による
305 :
nobodyさん:2007/06/27(水) 13:42:59 ID:5woCK0g1
>>304 うーん、何度やっても同じエラーがでます。
具体的にどう書けばいいんでしょうか。。
307 :
nobodyさん:2007/06/27(水) 15:13:03 ID:5woCK0g1
>>306 ご丁寧にありがとうございます。
ローカルとサーバでOSが違うので、相対パス(../../webroot/.......みたいな)にしました。
webrootのフルパスなら定数 WWW_ROOT で定義されてない?
レベル低っ・・・・フレームワーク使う前に、ほかにやることありそう
本質的な質問が最近全くでてこない件
フレームワーク使うメリットがまったく享受できないレベルのやつがいるな。
すべてのレベルのプログラマという名目だが、さすがにPHPの基礎くらいは出来てないとな。
312 :
sage:2007/06/28(木) 09:22:28 ID:???
313 :
nobodyさん:2007/06/28(木) 16:45:47 ID:b86P8EwS
delにcondition付けろ
Cakeが焼けるようになっても作りたいお菓子がありません。
たとえば投稿記事に関連してコメントがつけられている場合、
投稿記事を削除するときに、コメントも削除したいんですが、どう書くんでしょうか。
アソシエーションは機能しているので、関連して呼び出すことはできています。
マニュアルのModelsのAssosiationsのdependentの辺りを100回読む
317 :
nobodyさん:2007/06/29(金) 15:27:07 ID:XE3VOI38
/app/tmp/の中にある画像をビューで表示させたいんだけど、どうもうまくいかないです。
相対指定じゃないといけないんでしょうか?よろしければコード例をお願いしたいです。。
webroot以下に置けよ
319 :
nobodyさん:2007/06/29(金) 16:16:09 ID:XE3VOI38
>>318 やっぱビューからじゃアクセスできないみたいですね・・・。
せっかくtmpがあるのに、webroot以下にまたtmpディレクトリ作るのはちょっとやな感じですが、そうします。
再掲
>レベル低っ・・・・フレームワーク使う前に、ほかにやることありそう
レベル低いの上塗り乙
cakeの使用感が知りたくて来ましたがこのスレは何の参考にもなりませんでした。
本当に有難うございました。
なんで技術系のスレってキモいやつが多いんだろうね。
レベルが低かろうがほっとけばいいのに。
と、一言書くやつのほうがきもいなw
329 :
nobodyさん:2007/07/03(火) 13:41:23 ID:8i5o6UCU
セッションの値によって管理者用のメニューの表示・非表示を切り替えるような処理って、>196みたいに手動でセッションをセットするもんですか?
場合によるだろ。それだけでは分からん。
レイアウトを切り替えれば事が済むなら
自分で用意したAppControllerでコンストラクタをオーバーライドして
セッションの値によってlayout変数を切り替えればいいだろうし。
むしろ
>手動でセッションをセットする
という意味がわからない。
332 :
nobodyさん:2007/07/03(火) 18:18:52 ID:F4VpoSCG
テーブルを継承したいです。
でもcakePHPでは無理です。
Ruby on Railsをつかいましょう。
333 :
nobodyさん:2007/07/04(水) 02:48:45 ID:gN4ff124
>329
<?php if(isset($session->User)){ ?>
って普通にビューからコンポーネントにアクセスできるんですね。
自己解決しました。
>330
有難うございます
334 :
nobodyさん:2007/07/04(水) 05:14:32 ID:gN4ff124
アクションの中で
var_dump($_COOKIE);
としても全部のクッキーが表示されないのはCakePHP1.1のせい?なんかやってる?
クッキーをセットする時のパスが間違ってるとかじゃないのか。
Cake通さなければ普通に表示される?
Rhino on Railsってどうよ
そもそもJavaScriptのクロージャに悩まされる俺にはムリ
339 :
nobodyさん:2007/07/05(木) 01:17:46 ID:K+ZRu43A
CakeのRSSヘルパーってないの??
探してから言え
一応ヘルパーみていったんだがあるのか
だから公式で探してから言えよ
つか、layoutとviewだけでRSSなら吐けるんじゃ・・
layoutの方で頭にRSS用のヘッダ吐くようにして。
345 :
344:2007/07/05(木) 21:33:49 ID:???
その辺は昔CheeseCake PhotoBlogを参考にしていろいろやってた
いやな、rssは出力したんよ。ただrssのurlをheadにかくじゃん?あれをhtmlヘルパーみたいなのでかきたかったのよ。ヘルパーのヘルプみてもみあたらなかったからさ
>>346 わかりにくっ。link要素のことか。
1.1観た限りでは無さげ
rss出力自体をさすがにヘルパーで出せないだろと思ってたからヘルパー使う=リンクみたいな前提があっちゃったのよ。一個前のレスで確かにわかりづらいなとオモタよ!
みなさん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的に合理的な方法があるはず!と思ってますが
ヒントだけでも誰か教えてください。
MySQLなので空文字放り込んでも0000-00-00になるからあんまり気にしてなかったなあ
自己解決しました。
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かける前に
いずれかが空白(未選択)なら確認画面に戻す処理を書き加えても良いだけだし。
こんな小一時間考えればわかるような事に俺は…
お騒がせしました。
352 :
nobodyさん:2007/07/07(土) 01:33:20 ID:r27wk2rh
みなさん確認画面とかって一個ずつhiddenとかエラーメッセージ用のヘルパーかいてます?すごく面倒くさいんですが・・・
確認画面以前に、投稿画面も含めて遷移が必要なものについては
yamlで共通configファイルを作ってるけど。そこで変数やformの属性を全部定義してる。
>>352 hiddenに関してはループ処理でまとめられそうな気がするよ。
俺はserializeしてbase64してハッシュつけて1個のhiddenにつっこんだりしてる。改変も防げて便利便利〜。
まあそもそも入力項目が多いということはアプリケーションがそれだけ複雑ってことだ
どっかに確認画面のサンプルあったぞ。
そんな面倒なことしてなかったキガス
そんなことしてたらCake(FW)の意味ない品
356 :
353:2007/07/07(土) 11:36:33 ID:???
>>354 あ、自分もそうしてる。で、そのループ処理でhiddenする項目をconfigで設定してる。
confirm挟む時は入力値は全部セッションに入れてるな。confirmのformで送るのはtokenだけ。
358 :
nobodyさん:2007/07/07(土) 16:53:17 ID:r27wk2rh
>>353 yamlで共通configファイルを
>>354 俺はserializeしてbase64してハッシュつけて1個のhiddenに
おもしろいですね、ぜひ詳しく聞かせて欲しい
> 俺はserializeしてbase64してハッシュつけて1個のhiddenに
詳しくって、このまんまだと思うぞ。
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の配列キーが使える。
ttp://cakephp.xrea.jp/?p=21 ここ参考にして、ブログにコメント機能を実装してみたのですが。
一覧表示で、記事ごとにコメント数を表示させていて、
この方は記事についているコメントをcount関数を使っているみたいなんですが、
この方も言われているようにスマートではないと思うんです。
おそらくfindCountを使うんだと思いますが、どう書いたらいいか考えても思いつきません。
どなたかアドバイスいただけませんか。
362 :
nobodyさん:2007/07/09(月) 03:25:38 ID:+2G34Por
コントローラーでの$this->flash('message','action',0)って使ってる?
数秒メッセージを表示してリダイレクトって気持ち悪いので普通に$this->redirectでリダイレクトしてます。
なんか便利な使い方があるんでしょうか?
ニーズによる
>>362 リロード対策だっけ
あと開発中は実行SQLをそのページでさっと確認できるし
365 :
nobodyさん:2007/07/09(月) 08:44:28 ID:ldZF+CQo
var $name = 'Tests';
が必要かも。
367 :
365:2007/07/09(月) 10:39:41 ID:???
それを加えても変わらずです
もちろんモデル作ってるんだろうな
質問する奴も回答する奴も酷いな
このスレには批判しかできないやつが住み込んでるみたいだなw
>このスレには批判しかできないやつが住み込んでるみたいだなw
プログラマは悲しいことにそういうやつ多いよ。
>>373 俺らが何?批判しかしないやつ?プログラマ?
俺は最低限プログラマじゃないわ。批判もしてないけどな。
まぁまぁケーキでも食って落ち着けって
それ以上太るつもりかデブ共
ほかのFW系スレより(本質的な議論とは別のところで)元気があってよろしい
378 :
365:2007/07/09(月) 17:09:44 ID:???
他所で質問をし直します
うんうんそれがいいよ
ページが見つからない、ってまさか404 NotFoundじゃあないだろうな
エラーメッセージを回答者に想像させといて適格な答えが得られる訳がない
(俺はエラーメッセージ書かれても答えられないけどな)
なんでさっきからプログラマ職とは関係なさそうなやつがいるんだ
382 :
365:2007/07/09(月) 19:51:34 ID:???
>ページが見つからない、ってまさか404 NotFoundじゃあないだろうな
>エラーメッセージを回答者に想像させといて適格な答えが得られる訳がない
(ファイルとして存在しない)URIからコントローラのアクションを要求しているんだから
CakePHPが処理しない限りはHTTP404 NotFoundエラーになる…はず
まぁいいんじゃない
そもそもDocumentRootの設定をしてない、に3000点
よくねーよ
俺はrewriteEngine on とかrewriteまわりを設定してない、に全部
Apacheを立ち上げていない、に5000点
存在しないコントローラやアクションを指定してアクセスした場合
画面上にエラーが多数表示されるんですが
そういった場合に特定の処理を実行させるにはどのようにすればいいですか?
>>390 app/error.php というファイルを作って、ErrorHandler を extends した
AppError クラスを定義する。
ErrorHandler は cake/libs/error.php にある。
適当に missingController($params) やらをオーバーライドするなり
__construct からごっそりすげ替えるなりご自由に。
ばか、まともな人だらけだっつの
その中で俺がトップ。
395 :
390:2007/07/10(火) 22:22:01 ID:???
CakePHPでWikiのページ履歴みたいなのを作るには
どういう設計にすればいいかなぁ?
wikiのラッパだけ作る
ネタはよそでお願い。
質問からネタっぽいのだが
テーブルの構造だったらスレ違い&板違いだよね
diffをとったものをガンガンレコードに追加すれば?
>>399 つまり、MediaWikiとは違った設計ということですね?
カラムのデータを svn にぶちこむDBクラスをでっちあげるとか?
衝突が起きたときのマージのインターフェイスをちゃんとつくれば
分散wikiとか夢はひろがりますな.
402 :
nobodyさん:2007/07/12(木) 14:42:58 ID:iLx7lYjZ
何か質問ある?
ない
ある。
MediaWikiのように、現在のページ(pageテーブル。ページ内容含まず)を
更新するたびにそのページのリビジョンテーブル(revisionテーブル)に
新しいリビジョンを追加し、そのリビジョンテーブルに関連した
テキストテーブルにデータを追加。
(そして表示するときは、その最新リビジョンを表示)
というのはscaffoldやbakeでさくっとできないの?
データベースレイアウト
http://www.mediawiki.org/wiki/Database
できるんちゃいますやろか
どうやって?
なんかCakePHPってモデル(テーブル)に直接書き込むのは
簡単だけど、モデルへの書き込み(Update)を追加(Insert)に
変更するのは面倒そうなんだよな。
具体的にいうと、Wikiのページを更新すると、
pageテーブルに上書き、
revisionテーブルに追加、
そのrevisionテーブルに追加した行に関連したtextテーブルに追加、
と三つのアクションになる。
そしてページを表示するときは、revisionの一番新しいのだけ表示。
これってスマートに実装できるんだろうか?
まあ、レールを脱線してがんばれば
どんなことだってできるだろうけど。
Cakeの$model->save()はUpdateとInsertの明確な区分がなさげなので、
レコード追加時はidを空、レコード変更時は、あらかじめ変更するレコードの
idカラムを取得してセットしておく必要があるが、それ以上難しいことってある?
ごめ、俺、理解してないかも。
?revisionテーブルは新しく作るんだろ?別に既存モデルの変更じゃないやん。
あとページ表示は単にpageテーブルからのデータで問題ないでしょ?revisionテーブル必要ない。
参照先見てないが、履歴を残すためにrevisionテーブル使ってるんじゃない?
revisionとtextが1:1だったらtextテーブルの意味のほうが良く分からん
まあぶっちゃけpageテーブルだけでもいけるとは思うが
そう。revisionは履歴を残すため。たぶん。
(MedhiaWikiは履歴の実装を見るために参考にしただけだから詳しくない)
revisionとtextがなんて分かれているかは知らないが、
MediaWikiでは分かれている。
ちょっと個人的に整理してみると、
まず、pageテーブルを編集する。
そこに履歴の仕組みを作りたい。
その方法として、pageテーブルから
バージョンごとで違う情報をrevisionテーブルに移動し、
そちらに格納する方法。(MediaWiki)
もう一つの方法として、pageテーブルはそのままで、
pageテーブルが更新されたら、履歴情報をhistoryテーブル
(フィールドはpageテーブルのフィールド+リビジョンID)に
追加しておく方法。
個人的には後者の方がCakePHPで素直に実装できそうな気がするが、
MediaWiki方式のほうに大きなメリットがあるだろうか?
前者のメリットとして、テーブルの構造に変更があったとき
revisionテーブルだけの修正ですむ。
(後者だと、pageテーブルとhistoryテーブルの二箇所を変更しないといけない)
後者のメリットとして、pageテーブルにはよく見るであろう最新データのみが
入っているため、履歴も含めてすべて同じテーブルに入っている前者よりも負荷が少なそう。
おれなら後者
415 :
nobodyさん:2007/07/13(金) 17:50:45 ID:j8+9kyhU
1.1.16.5421リリース今更発見あげ
416 :
nobodyさん:2007/07/17(火) 11:51:36 ID:c9LkXXMo
まったくの初心者で、そもそもデバックをどうしたらよいかわからないのです。モデルとコントローラーとビューを作ったけれど何が悪くて画面が真っ白なのか?エラーも表示されていない、どこが悪いかどうやって調べたらよいか教えてくれる方おりませんか?すみません。
>>416 そのレベルの人は身近に教えてくれる人を見つけることが先決。
それが無理なら「cakePHP 真っ白」とかでひたすらググろう。
418 :
nobodyさん:2007/07/17(火) 12:10:12 ID:HxVHyr/E
お前らの開発環境教えれ
開発環境の何を教えて欲しいのか分からん
秘書の数とか、そういうの
>10分で作るCakePHPアプリ アプリケーション編
この中で使ってるPHPエディタのフォントを教えてください
423 :
nobodyさん:2007/07/17(火) 16:35:22 ID:HxVHyr/E
まず自分の環境を晒してから聞け
俺んとこは24インチデュアルだな。
うちはとりあえずRAID5で組んである。あと個人ごとにUPS付き
資料請求、管理プログラムをcakephpに移植しようと考えてるんだけど、
あるディレクトリ以下をcakephpに処理を任せることは可能?
429 :
427:2007/07/17(火) 19:39:07 ID:???
俺んとこは新築マンションだな。
最寄り駅まで徒歩2分
うちは、とりあえず土日出勤の場合は代休時間が1.2倍で加算される。
あと昼飯については、レシートだけで領収書代わりにしてくれる。
IBMのwikiチュートリアルためしたんだが、セッション関連のバグが出る。
誰かうまくいったやついる?
434 :
432:2007/07/18(水) 10:34:40 ID:XEakOCt8
俺はキーボードはオウルテックでマウスはMS。
メモリは1GBで我慢してるよ
ちんぽ舐めたらな
ここは環境を書くスレです
たまにこの板にもまともな人いるのな。
>>416 画面が真っ白になるのは、基本的にインクルードファイルの文法ミスが原因
ローカル環境にPHPをインストールして、文法チェックに対応したエディタを使うといいよ。
>>440 いますよー。定期的に見てます。
リンク先よく読んで見ます。
でも、実は衝突検知とか差分検出とかは
あまり重要じゃなかったり。
というのも、作ろうとしているのは一人WIKIだから。
(しかもWIKI記法じゃないのでWIKIですらない?)
一人wikiなんてのはwikiじゃないんだが
俺は一人trac、一人Microsoft Projectを嗜む男ですが
それが何か
まあ共有知じゃねーじゃんって意味では
>>444のいいたいことも
わかるけどね
ローカルウィキなんてwiki風cmsです程度のはなしだろ。
ローカルで閉じた中でやるなら、「htmlエンティティをエスケープしない」でもよくね
450 :
444:2007/07/20(金) 22:25:08 ID:???
>>445 ぐぐったけど、こんなもんwikiじゃねーだろ
>>446 だったら、共有知実装なしのwikiなんかwikiって言うのがおかしいのはわかるよね。
wikiは目的を指す用語ではない。
日本語でおk
俺もワカランな。どういう意味か教えてくれよ超能力者の453
目的によってwikiと呼ぶor呼ばないが決まるんじゃなくて、
一定の仕組みを指す言葉ってことでしょ
で、ウィキの定義がCakePHPに何か関係あるのか?
cakeをFWにしてwiki作りたいって言う奴がいたからじゃね.
実はそれはwikiではなかったという顛末
wikiを作りたいじゃなくて
wikiみたいなのを作りたいだったような
どっちでもいいか
>>457 「wikiみたいなのを作りたい」でしょ。
勘違いしている人がいるね。
wikiかどうかの話は
>>444に対するレスでしょ。
勘違いしてる人がいるね。
個人的には結構どうでも良い話題ではあるが、
wikiシステムが想定している利用ケースである、
「多人数による共有知の生成」
を満たすための仕様がwikiシステムの仕様であり、
そういう意味では衝突検知も差分検出もログイン認証も必要
なのではあるが、
じゃあMediaWikiをダウンロードしてきてローカルの開発用鯖に
インスコして一人で使ってたら、それはwikiとは言わないのか?
という話だからなあ。
しかも「wikiっぽいもの」って質問者が書いてるわけだし。
突っかかってる人は、どうしても「wiki」という語句の用法が気に入らないらしいけど。
つかこのスレは脱線しっぱなしだね・・おれもだねスマソ
ちがうよ。俺じゃないよ。どうでもいいけど
464 :
nobodyさん:2007/07/22(日) 01:04:30 ID:ktiR8O29
すいません。pukiwikiを一人で使うと、
名前が変わっちゃうんですか?w
一人で使っていても、使っているシステムはwikiだと思っていましたwww
wikiはウィキペディアってサイトやMediaWikiってスクリプトより
昔からある概念だから
本当はBlogやBBSと同じ言葉の仲間なんだよな。
一人でローカルマシンで掲示板やってますって言ったら変だけど
wikiはなんかMediawikiやPukiwiki=wikiって風潮になってるから
あまり違和感は感じない。
みんなで書けて文をまとめられるなら、
今の大多数のwikiみたいに、wikipediaお手本にしたような
使いにくい糞仕様にしなくてもwikiはwikiなんだけどね。
でさ、そういった物も上手くユーザーインターフェース考えるだけで
Cakeならきっと簡単に作れるさ…って話を元に戻してみる。
他所でやれ雑魚ども
467 :
nobodyさん:2007/07/23(月) 10:09:24 ID:FD1gjjFA
cakephpを既存のサイトに導入したいのですが、複数のエントリポイントをつくるような事例ってないでしょうか?
例えば今までのニュース表示用のnews.php、商品一覧を表示するitems.phpをそれぞれcakeに置き換えるような・・・
URLのrewriteが邪魔してうまくできない・・・
もしくは、infopathも使わないでcakeを使えると嬉しいんですが・・・
(index.php?url=controllerとかでいい)
>>467 rewrite 切れば良いだけだろ。ただ、そんな事、する必要も無いと思うが…。
逆にそういうときこそmod_rewriteを駆使する状況なんじゃないの
471 :
nobodyさん:2007/07/24(火) 14:56:56 ID:PrhqUAyS
mod_rewriteを理解できるデザイナなんていないから大変
デザイナに理解させる必要など無い
まともなプロジェクトならファイル一覧ぐらい作るんだから
それを提出すればいいだけ
news.phpは、今後
/news/
ってことになりました、って言えば終わりじゃん
旧URLから新URLにリダイレクトさせればなおよし
リダイレクトなんて高度な技ができたら苦労はしない
476 :
nobodyさん:2007/07/25(水) 00:05:16 ID:Jxxvgntg
readが未だに何をしたいのかよくわかりません
マニュアル見ると引数が二つあるのにチュートリアルでは何も渡してない・・・だめp
>>476 modelの話なのかsessionの話なのかはっきりさせようぜ
modelにすでにID渡してたりしたら、readでそれだけ読んでくれる。
479 :
nobodyさん:2007/07/25(水) 15:08:09 ID:Jxxvgntg
で、なぜあなたはこのスレに書き込むのでしょうか?
ファイルベースのシンプルなwikiを再発明したいのですか?
だとすればなぜ「フレームワーク CakePHP」のスレッドに書き込むのでしょうか?
ファイルベースのシンプルなwikiを作るなら、cake使うのも使わないのも
手間も保守性もたいしてかわりませんよ
wikiは文法が特殊だから嫌い。
TinyMCEとかでWYSIWYG編集させろ
483 :
nobodyさん:2007/07/27(金) 17:25:54 ID:sllST2Yd
485 :
nobodyさん:2007/07/27(金) 17:37:03 ID:sllST2Yd
>>484 僕ですよね?
基本なのか……。
誘導ありがとうございます。
そちらで聞いてみます。
基礎もわからずフレームワーク使うのは危ないな。
はじめまして。
当方、今まで単機能な自作フレームワーク+Smartyを
使ってきましたが、CakePHPに興味を持ちましてCakePHP
のリファレンスガイドを一読しました。
そこで質問があります。
Q1.Smartyに対するCakePHPのアドバンテージはなんで
しょうか?
(リファレンスガイドを読んだだけなのでよくわかりません
でした)
Q2.リファレンスガイドには、DBの条件として、テーブル名
は英単語の複数形(customers, users)であること、主キー
のフィールド名は「id」という名であることなどなどの規約が
書いてあります。
CakePHPは、これに準拠したDBでないとNGなのでしょうか?
以上、教えてください。
よろしくお願い致します。
> Q1.Smartyに対するCakePHPのアドバンテージはなんで
> しょうか?
> (リファレンスガイドを読んだだけなのでよくわかりません
> でした)
Smartyを使わないですむ
> Q2.リファレンスガイドには、DBの条件として、テーブル名
> は英単語の複数形(customers, users)であること、主キー
> のフィールド名は「id」という名であることなどなどの規約が
> 書いてあります。
> CakePHPは、これに準拠したDBでないとNGなのでしょうか?
NGというわけではないが、別途modelでtable名やらprimary keyやら設定しないと
いけない。でもってその状態でbakeしようとするとえらい面倒なことになってかえって苦労
すると思われ。
>>488 さっそくのレスありがとう。
Q1のレスについては・・・?・・・ですが、
Q2については、ちょっとガックリです。
既存のDBをWebで公開する開発なので、スキーマの定義を
変更するわけにはいかないのです。
参考になりました。ありがとう。
>>489 まだいるかどうかわかりませんが、
そういうニーズであればSymfonyの方に分があると思われ
以前、他人が設計したテーブル定義書に従って組もうとして
エラい目にあいました
bakeがモデル内のuseTableやPrimaryも適宜読み込みながら
CとVのスケルトンを作ってくれるとスゲー嬉しいんだけど・・・
Q1については、すでにSmartyを習得してるなら、特段のアドバンテージはないよ、ということです
生PHPを用いながらView Templeteの分離が出来る、という位の話
あとは、アソシエーションだな。
ちなみに、cakeのDB規約に従わなくても、指定すればいいだけだわ。
cakeが何か分からないレベルならsmarty使っておけって話。
>>490,491
レスありがとう。
Smartyと比較して大きなメリットはないということで、
了解しました。
>>492 >>cakeが何か分からないレベルならsmarty使っておけって話。
貴方はCakePHPの開発者ですか?
>>cakeが何か分からないレベルならsmarty使っておけって話。
貴方はCakePHP自体の開発者ですか?
それとも私と同じCakePHPの利用者ですか?
FWと単なるビュー用のパーサ・レンダラーを比べてどうするのかと
うーん俺はSmartyと比べて(プレゼンテーション層の)アドバンテージはあるか?という
質問と受け取ったが。まいいや
497 :
nobodyさん:2007/07/30(月) 16:57:41 ID:6iA0AE5f
こんにちわ。csvファイル管理について教えていただきたいのですが、
webroot/files/ フォルダ内に hoge.csv ファイルを置きます。
そして、どのコントローラーからもこのhoge.csvを参照したいのですが、階層が変わると、パス
も変わってきてしまうので、どのようにすればよいのかわかりません。
絶対パス以外で何か良い方法はございませんでしょうか。
498 :
nobodyさん:2007/07/30(月) 17:35:24 ID:6iA0AE5f
>497
echo file_get_contents(WWW_ROOT.'files/default.csv');
すいません、自己解決しました。
ありがとうございました。
499 :
nobodyさん:2007/07/30(月) 18:28:42 ID:CIKT+2nj
>cakeが何か分からないレベルならsmarty使っておけって話。
一票
なんかきもいウジムシが沸いてるな。
自虐しなくていいのに・・・・
502 :
nobodyさん:2007/07/30(月) 21:01:07 ID:PrtzY/tU
>貴方はCakePHPの開発者ですか?
なんでそうなるのかな?
Cakeの一番の特徴そして何を考えて目指して作れたかも
わかってないやつに何をいっても無駄だけど
>それとも私と同じCakePHPの利用者ですか?
他人と自分のレベルは同じぐらいとか思ってんのかな?
Cakeの一番の特徴っていわれてもな
ActiveRecordもどきってことか?
504 :
nobodyさん:2007/07/31(火) 01:49:57 ID:/l30lqBP
>>ActiveRecordもどきってことか?
オブジェクトじゃなくて配列(ハッシュ)で扱うことにしちゃったあたりが良くも悪くもいかにもPHPって感じで最高
Cakeの一番の特徴はRailsに似てるってところだお
railsやったことあったらcake習得しやすいの?
rails 使える環境ならcake 使う理由はないんじゃないの
509 :
nobodyさん:2007/08/01(水) 11:55:09 ID:k9tgerD3
>>506 すごくしやすい
>>507 そうだね。rake最高
でもレンサバしかつかえない貧乏クライアントも少なくない
cakeが便利過ぎて普通のPHPアプリの書き方忘れた…
511 :
nobodyさん:2007/08/03(金) 18:06:49 ID:RjyFibPY
>>510 あるあr・・・ねー・・・・・あるあるwww
あるあるあるあるある・・・・・・・・・・ぶー
俺PGやめるわ。
Cakeのvalidateってフォームで送られてくるデータ前提になってるように思うけど(違ってたらスマソ)
フォームでないGETパラメータの検証を行うにはどうやるのがいいかな?
例えばアドレスの後に必ず ?query=abc がついておかなければならず、
ついていない場合はエラーページへ飛ばすといった時はどうするのがベストかな?
?query=abc だったら普通にgetパラメータ検証
/abc みたいな感じでコントローラメソッド以下のパラメータとして渡すのならcake的な処理で
517 :
ディアルガvsパルキアvsダークライ!:2007/08/08(水) 10:48:22 ID:uOpKgT+t
>516
僕、get の場合は強引にpostデータに置き換えてやってます。
-- コントローラーでの指定 --
$this->data['モデル名']['query'] = $_GET['query'];
$this->モデル名->set($this->data);
if($this->モデル名->validates()){
echo 'OK';
} else {
echo 'まいっちんぐー';
}
以上です。編集長。
>>517 特定ページにのみバリデーションする場合はそれでいけますた。 アリガト!!
で、もう一段階ランクアップなんやけどサイト全体にGETパラメータをつけた状態でアクセスさせ、
GETパラメータがついていなかったり値がおかしかった場合はエラーページ表示、といった具合にしたい。
とりあえずapp_model.php内に
var $validate = array(
'query' => '/^[\w]{1,20}$/',
);
function __construct()
{
parent::__construct(); ← Modelクラス内のコンストラクタを見ると
3つの引数があったけどここへはどのように入れればいいかな?
第一引数は$this->id,第二引数は$this->tableでいい気もするけど(違うかもw)
第三引数がワカンネ!
$this->data["query"] = $_GET["query"];
if($this->validates($this->data)){
echo "OK";
}else{
echo "まいっちんぐ〜";
}
}
一応、こんなふうに書けば動く事は動いたんですが
たぶん間違っていると思うのでサイト全体(そのプロジェクト全体)に対してバリデーションしたい場合は
どう書くのがベストなんかな?
ググってみたらCakePHPのおいしい食べ方とかCakePHP1.1系で1.2系のバリデーションを使う、とかに
引っ掛かったけどそれらしき事は掲載されてなかったなぁ。
「すべて」だったらapp_controller の beforeFilter か beforeRender あたりをあたると嬉しいことがあるかもと横レス
だめだ記憶が曖昧だ
520 :
ディアルガvsパルキアvsダークライ!:2007/08/09(木) 11:19:54 ID:Us13hVpD
>>518 519さんの意見に賛成。
$this->data["query"] = $_GET["query"];
if($this->validates($this->data)){
echo "OK";
}else{
echo "まいっちんぐ〜";
}
の部分を cake/app_controller.php のbeforeFilter に書き込めばいいと思いますよ。
cakephp1.2のバリデーションはちょっと難しい正規表現ができるだけと解釈してます。
1.1に組み込んでますけど。
>>520 app_controller.phpで$this->validates($this->data)って出来るもんなんかな?
http://api.cakephp.org/class_controller.htmlを見てもvalidatesは掲載されていませんし 自分でapp_controller.phpのbeforeFilterにget_class_methods($this)って書いてもvalidatesは出てきません。
当然、$this->validates($this->data)って書けばvalidatesメソッドなんてねーヨ
っていうエラーが返ってきますがどうでしょう?
代わりにvalidateを書いてみましたがqueryに変な値を入れても0のままですた。
何か他にいい方法、もしくは打開策があればよろしくです。
Getqueryモデル作って
$this->Getquery->validates(ry
Cakeでモデルからビューへ直接、データを送るとかってのは無理かな?
例えばモデルで取得した結果をコントローラを経由せずにビューへ送るとか
>>523 そういうことやるならMVCなフレームワークは使わない方がいい。
ちなみにModel内にcontrollerの参照があったような気がするから
それを経由して->setすればいいんじゃないか。
無かったらスマン。
525 :
nobodyさん:2007/08/10(金) 15:19:43 ID:aNBvC55h
Cake使いすぎたら普通にWebアプリを0から作るのがめんどうになるな。
>>525 むしろCakeを使って作り始める事を0から作り始める事のように思ってますが何か?w
質問です。
app_controller.phpからapp_model.phpに書いてる関数を取得する方法はありませんか?
意味不明
>>528 例えばapp_model.phpに
function test(){
print "testだぉ";
}
と書いて、それを例えば$this->test()とかで呼んでapp_controller.phpで表示、取得する方法はないか?
ってところ。
やりたいことと書いてることが意味不明。
PHPの言語仕様を学びなおせ
app_controllerで$this->test()と呼んだら、$thisはapp_controllerじゃん
app_modelクラスにtestメソッドを作成
Unkoモデル作成
Unkoモデルはapp_modelを継承してるので
testメソッドが呼び出せる
以下、app_controllerにて
$uses = array('Unko');
でUnkoモデル使用を宣言
$this->Unko->test();
でいいんじゃね
もっといけてるやりかたあったら教えてください
>>532 おまえ、アホだろ?
最初は
>>529がアホかと思ったけどw
もっと違うところで意味不明って言ってるのかと思ってた
>>例えば$this->test()とかで呼んで
って書いてあるんやから例えに決まってるじゃんw
app_controllerに$this->test()って書いてapp_modelに書いたtestメソッドが呼べたら怖いわ
>>533 まぁ、普通はそう書くわな〜。
それ以上にいけてるやり方ってあんの?
糞みたいなスレだなww
非ネイティブ関西弁を使う奴は糞だと昔から決まっています
537 :
533:2007/08/12(日) 15:00:07 ID:???
この度は私がUnkoモデルを作成したばっかり
に、クソクソ言われるクソスレになってしまって、
本当に申し訳ございません。
初心者を馬鹿にするような発言はやめろ。
同じCakeの利用者なんだから。
と、素人が自己擁護しております
DBからデータ引っ張ってきてforeachで回してるときに
1から始まる連番をスマートに表示したいんだけど、
何かcake側で用意されていたりする?
普通にかくしかないべ。
544 :
542:2007/08/14(火) 23:15:30 ID:???
>>543 そっか、ありがとう。
まだcake始めたばっかりだから、どこまで出来て、どこから出来ないのか
さっぱり見当がつかないよ。
ドキュメント読み込み中。
読んでから質問しろ
まあまあ、変数に1をセットしてそれをループ内で表示してインクリメントするだけなら
普通に書いてもたいした手間じゃないでしょww
それは最近の一般的なWebアプリフレームワーク自体をよくわかってないんじゃ?
↓以下547の一般的なwebアプリフレームワーク観が続きます
そろそろcakephp1.2βが出そうなんだけど、みんなは1.1のままで続行?
550 :
nobodyさん:2007/08/16(木) 15:04:16 ID:NGPKl3TM
まだ1.2でてないの?(笑)
551 :
ディアルガvsパルキアvsダークライ!:2007/08/16(木) 15:59:02 ID:b8gDKmLD
>>550 1.2のベータってことでしょ。
1.2のアルファはもう出てるから。
アルファ版とベータ版の違いを調べてから笑った方がいいかもね。
552 :
nobodyさん:2007/08/16(木) 16:01:00 ID:NGPKl3TM
で、正式版1.2はでたの? でてないよね?(笑)
アルファとかベータとか、それがなんかあったのか?(笑)
ハイハイ
555 :
nobodyさん:2007/08/17(金) 21:27:42 ID:kJTYbdA8
よくあるオンラインショップと同じように、
商品の検索などは非SSL、商品の購入時にはSSLと
非SSLとSSLをまたぐシステムがあります。
その場合の注意点として以下の記事を読みました。
http://kinshachi.ddo.jp/kurage/html/MT/comp/archives/000272.html >
> 2つのcookieを使ってセッション追跡する
>
> ランダムに生成するセッションIDを、「secure 属性なし」のcookie(仮に名前を「session-id」)と「secure 属性付き」のcookie(仮に名前を「secure-session-id」)の2つ発行する。
> 2つのcookieは
https://のアクセスでログインが成功したタイミングで発行し、どちらのセッションIDからでもユーザを特定できるようにしておく。
> SSLで保護すべき画面に
http:// でアクセスできると、盗聴で盗み出した「secure 属性なし」のcookieを使って、重要情報にアクセスできてしまいます。
> そのため、SSLで保護すべき画面に対して
http:// でアクセスできないようにする必要があります。
安全のためには上のようなことをしないといけないようなのですが、CakePHPではこれが
標準でサポート、もしくは簡単に実装できるような仕組みになっているのでしょうか?
自分でドキュメント読んでから質問しろ
読みましたが、どこにSSLについて書いてあるんですか?
読んで分からないのかww
要件によるだろ。
なんでもいいから簡単に実現したいなら
サイト全体をSSLでしかアクセスできないようにすればいい。
>>559 サイト全体がSSLになっているオンラインショップは皆無。
そういう、ありえない解決策は、提案しても意味がない。
>>558 書いていないので、わからなくても普通。
反論しますか? なら証拠を。
まあ結果は見えていますからレスしなくていいです。
>>560 インターネットバンキングのサイトとかだと、
全体がSSLになってる。
無知を晒すのは恥ずかしいぞ。
「インターネットバンクのサイトだと」と条件をつけているのはなぜですか?
あなたの言い方は、それ以外だと全体がSSLではいと認めているようなものです。
>>563 × インターネットバンクのサイトだと
○ インターネットバンクのサイトだと
皆無というから反例をあげてるだけでしょ。
>>567 ○ インターネットバンクのサイトとかだと
>>564 えーと。それは笑えば良いのか?w
httpsといいながら、httpでもアクセスできる。
どこからか経由(たとえば検索エンジン)でhttpでアクセスして
その状態でメール・パスワード入れたら、盗聴される。
まあ、たしかにセキュリティが弱いサイトはあるだろうねwww
なんで、httpsだけを使うサイトは少ないの?
その理由がわかる人は、サイト全体をSSLにしろとはいわないね。
「なんでもいいから簡単に実現したいなら」って書いてあるじゃん
全体をSSLにしろなんてどこに書いてあるんだ?
「皆無」ってのは嘘だから反例を挙げただけだよ
嘘は良くないだろ。
別に「SSLのみにしなさい」なんて一度も言ってない。
じゃあ、SSLのみにしない方法を書けよ。
そっちが一般的だろ。
>>555はSSLのみにしない方法を望んでるんだし。
CakePHPでSSLと非SSLをまたぐ方法は
考慮されてないんじゃないのかな?
ドキュメントにも記述されてないし。
まあ皆無ってことはないわな
実際そういうサイトがクライアントに納品されるのをこの目で見てるしw
577 :
nobodyさん:2007/08/17(金) 23:23:54 ID:EqsPdypk
ログインしないと何も出来ないような仕様のサイトだと、
SSL限定でもいいんじゃね?って話になっちゃうんだよねえ。
それでいいならその方が実装楽だし。
おまいら質問と関係ない話題で盛り上がるなよ
ヤフオク、楽天、Amazon、etc ほとんどのサイトは
httpとhttpsが共存しています。
有名どころでhttps限定なんてサイト見たことがありません。
「有名どころがSSL限定だ」なんて誰か書いたのか?
>>583 そのリンク先のリンク先を見ると、
SSLActionsで指定されたページをSSLページにするような
コードが掲載されているようだね。
つまり、CakePHPにはそういう機能が無いということになるのか。
単にhttpsのアドレスにリダイレクトしているだけみたいだけど、
ちゃんとセッションの引継ぎと
>>555で示された
2つのcookieを使ったセキュアな移動をしているのか?
585 :
nobodyさん:2007/08/19(日) 00:48:53 ID:SGQG+hwq
ケースバイケースで書くようなことだから、FWで実装って言ってもなあ。
たいした量のコードにならないから自分で書いてみればいいんじゃないの。
secureな方のcookieにhttpのsession id情報持たせておけば基本的に終わりじゃん
CakePHPを使ってたらEthnaを使うのがアホらしくなってきたわ
>>585 > secureな方のcookieにhttpのsession id情報持たせておけば基本的に終わりじゃん
違うぞ。セキュリティの勉強をしたほうがいい。
Amazonとかみればわかるように、商品をカートに入れるまではhttp
そのあと会計時はhttps。つまり一連の処理がhttpsだけで完結する処理ではない。
セキュアな方のクッキーにセッションIDを持たせた場合、
それをhttpで送ると盗聴されセッションハイジャックできてしまう。
だからhttp用ととhttps用と二つのセッションIDを使用することになる。
そしてサーバー内でその二つを紐付けしておかなければならない。
もちろんhttp用セッションIDは盗聴される可能性があるから
それを奪われても、その情報だけからhttps用セッションIDを取得できてはいけない
こういう複雑で汎用的な仕組みは、フレームワークレベルで実装されるべきものだ。
589 :
nobodyさん:2007/08/19(日) 15:10:14 ID:TluxcOv3
>>587 はあ?セッションidが別なの前提で書いてるのだが?
全然難しくないだろ。お前が勉強しろ
全然複雑じゃないだろw
まさに売り言葉に買い言葉の連続
それで、具体的にどうやってるんだ。
複雑じゃないというのなら答えてみろよ。
それよりも
>Amazonとかみればわかるように、
別にAmazonは cookie専用じゃないよ。
>>595 誰がクッキー専用って言ったんだよw
いい加減あきらめろ。見苦しいぞ。
いつまでやってんだ
599 :
nobodyさん:2007/08/21(火) 00:38:42 ID:jv21ywgR
で、結局どなったの?
普通に簡単に出来るのをわからないで、粘着してるだけだと思う
>>600 またわかりやすい煽りだなw 答えられないのなら来なくていいよ。
フレームワークってものがよくわからない。
レン鯖の自分のスペースに置いて使えたり…する?
初心者スレに戻りましょう
初心者スレから帰ってきました
605 :
nobodyさん:2007/08/22(水) 19:57:55 ID:HCjV3CA1
どうぞ初心者スレでの成果を発表して下さい
>>596 パッと見てみたが、
>Editが追加になってるし
addではなく、ちゃんとeditになっているようだけど。
>index.thtmlの中に/blog/
ルートが/blog/なので無問題。
>>608 その本どうしようかなぁ?
マニュアルのコピペとか言われてるけど
漏れがちょうど習得したいフレームワークはその3つやし
購入しようかどうかカナーリ迷う。
特にsymfonyはわかりやすい日本語マニュアルが少なく
他のフレームワークに比べて出来る事も多いが異常なまでにランニングコストが高いから
コピペでもわかりやすく書いてれば非常に助かるんだがね。
ランニングコストとかいうやつには丁度いいレベルの本だよ
>>610 そうそうオマエみたいな馬鹿には丁度いい本と思われw(ワラ
>>609 立ち読みしてみたら?
俺は立ち読みして買わないことに決めたけど。
珍しくまともなアドバイスを見た気がする
俺は立ち読みして買うことを決めた。
結構いい本だよ。日本語資料は少ないからね。
>>613 珍しく、一発でわかる自作自演を見た気がするw
616 :
nobodyさん:2007/08/27(月) 16:22:48 ID:ijRbnoqf
フレームワーク触ってても、OOPしてるなぁって気持ちにならないよね。
モジュールを作る作業のみ。
OOPしてぇなぁ。
でもこの快感(フレームワークでの開発)を覚えると、めんどうなんだよな。はぁ。
よっぽど簡単なことしかしてないんだな
よっぽど凄い物をお作りなんでしょうな。
いえいえあなたこそ
ぶっちゃけ使ったことないんです、えらそうにしてスイマセンでした。
CakePHPにかぎらず、フレームワークを使った開発でOOPは使わない。
だってさ、ビジネスロジックなんて単純な作業の塊だぜ?
継承とか使わないとやれない作業なんて存在しないよ。
オブジェクト指向なJavaだってさ、継承ごてごてで
使いづらくなったEJBを改め、POJOといって
継承を使わない(必須ではない)ただのクラスを使い始めた。
それでいいんだよ。シンプルでわかりやすい。
というわけで、OOPはフレームワーク自体を作るものだと思っています。
結論:たいていの場合、OOPはフレームワーク自体を作るものである。
むしろPHPerな俺としては、なぜJAVAであんなにも継承が必要だったのかが知りたい
継承を使わないからPOJOってわけではないと思うが・・・
>>624 それは突き詰めると型あり言語というものは
そういうものだからということになるんじゃないかな?
型あり言語の場合、コンパイル時に名前解決しちゃうから
名前間違いによるバグをコンパイル時に発見できる。
そして速いというメリットがある。そしてJavaは型あり言語。
その型あり言語の通常のやり方でやると、Controllerを作ろうとした場合
index,add,edit,viewなどの関数は基底クラスもしくはインターフェースを
オーバーライドすれば良いけど、そのほかの独自の名前の関数はフレームワークは
知らないから呼び出せない。それを呼び出すためにフレームワークに知らせる必要がある。
そのための処理や設定XMLファイルが・・・という感じなのだろう。
POJOはリフレクションという機能(関数群)を使ってオブジェクトにある関数を調べて
それを呼び出すことで継承なしに上手いことやっているわけだけど、
それは型あり言語のメリット(コンパイル時にバグ発見、速い)に反するものだった。
リフレクションはどちらかといったら開発・デバッグのための関数であり、
それを通常の処理に使用するという考えは長いこと禁断のテクニックだった気がする。
突っ込みどころ満載だけど、突っ込んだら負けゲームなんだろな・・・
突っ込んでら、これがコテンパンに突っ込み返すから、
当然お前の負けだろうなw
突っ込んだら、おれが
>>627 そのセリフを言った時点で、突っ込んでも、突っ込まなくても、負けだ。
今日はこのスレ勢いあるな
もまえらオナニーでもしたのかい?
このスレのレベルの低さでPHPやめて正解だったと再認識。
Rubyです
2ちゃんねるをみて判断w
ぶっちゃけ、CakePHPは、難しいと思ってましたが、やっぱり難しいです。orz
あるものを作るのに、フレームワーク使うと、そのフレームワーク自体について調べる事が多くて嫌になるよね。
一回慣れちゃえばいいんだろうけど、次の案件でまた使わない、で忘れる。
俺のフレームワーク初体験はCakeに捧げたけど…
「難しいからできない」っていうのは、先入観とかでとっつきが悪いのが大半なんだろう
Cakeは難しいが、がんばってる俺
function beforeFilter()
{
$this->checkSession();
}
あれ、今日は、動く。 なぜだろう?
SQLで 「name LIKE $word1 AND name LIKE $word2」
のような場合、
findAllなどのconditionにはどのような配列を書けばいいのでしょうか?
array('name' => 'like '.$word1,'name' => 'like '.$word2)
だと当然のように配列は上書きされてしまいます。
宜しくお願いします
>>643 findAll("name LIKE $word1 AND name LIKE $word2")
と書いて良いと言う事ですよね。
ありがとうございました。
先ほど質問したものですが、
テーブルAに対してhasOneで定義したテーブルBと
テーブルBに対してbelongsToで定義したテーブルCがあるときに、
$this->テーブルA->findAll("テーブルA.name LIKE $word OR テーブルC.name LIKE $word")
のように一括では取得はできないのでしょうか?
これで作成されるSQLを確認すると、テーブルCがJOINされていないようです。
聞く前に自分で調べろ
PHPフレームワーク完全マスター―PHP5.2.3PHP4.4.7対応 (単行本)
http://www.amazon.co.jp/dp/4896273567 のレビュー。CakePHPのところしかよんでない。約120ページ
CakePHP 1.2.0.5146alphaが対象
なんでもそうな気がするが、すでにガシガシやっている人には必要ない。
内容はわかりやすく広く説明している感じかな。
同作者(佐久嶋ひろみ さん)による別の本、「JavaScriptを書かないAjax」でも
書いているAjaxヘルパーの説明が多め(約30ページ)
1.2対象なのでFormヘルパーについて説明してある。(1.1ではHtmlヘルパーでやってた)
ほんの8ページだが、Formヘルパーでこんなコードを書くと、こんなHTMLが生成され、
POSTするとこういうデータが送られるって説明が良かった。
あとはHtmlヘルパー3ページ
つづき
postConditionsメソッドを知った。便利そう。
ってCakePHPの公式リファレンス(の日本語版)にものってるじゃん。見落としてたwww
scaffoldの説明は少ない。scaffoldマジックはネットで見てあきてるので
これはこれでいいかと。
アソシエートの説明が・・・ない!? いやまさかな・・・ゴクリ
しょっぱなから$useTable=falseで進めていくし、ひろみちゃんデータベース嫌いだろ?w
まあ、データベース使わないphpスクリプト作ってる人向けということで・・・
bake.phpのメッセージを解説している。英語が苦手ならどうぞ。
Validationの説明はあるのだが、1.2から強化された内容、
ユーザー定義のバリデーションの説明は(たぶん)無い。残念。
アクセス制限は独自DBを使った簡易なもの。ACLコンポーネントを使っていない。
サニタイズ・セッション・キャッシュ・コンポーネント・プラグイン・エレメントの
説明が数ページずつ。
最後に、間違っていたらごめんよ。
>>646 失礼しました。
今回は
$this->テーブルB->findAll("テーブルC.name LIKE $word")
$this->テーブルA->findAll("テーブルA.name LIKE $word OR テーブルB.id IN $id")
と2回問い合わせることにします。
>>649 recursiveで設定するんじゃないのか?
まだ使ったこと無いけど
それから、その書き方じゃSQLインジェクションの
脆弱性になるんじゃないのか?まだ検証して無いけど
652 :
nobodyさん:2007/08/31(金) 18:22:39 ID:7m08yu49
indexアクションに、$this->render('index','test'); 追記して、
test.thtmlは blog/posts/index で呼ばれて出力してるのですが、
test.thtmlの中のindex.thtml部分が呼び出される部分にエラーがでます。
Notice: Undefined variable: posts in C:\xampp\htdocs\blog\app\views\posts\index.thtml on line 14
14 <?php foreach ($posts as $post): ?>
どうすれば出力されるでしょうか?
653 :
652:2007/08/31(金) 18:26:08 ID:???
test.thtml は、 /app/views/layouts/ の中に置いてるファイルです。
index.thtml は、views/posts/ の中に置いてるファイルです。
postsっていう変数が定義されてないか
そのスコープにないんだろ
それ以上はソースを見ないとそれだけの情報では分からん
655 :
652:2007/08/31(金) 19:43:09 ID:???
>>654 ■controllers/posts_controller.php
function index()
{
$this->render('index','test');
$this->pageTitle = 'Postsのindexの表示';
$this->set('posts', $this->Post->findAll());
}
■views/layout/test.thtml
<?php echo $content_for_layout ?>
こんな感じで、内容はチュートリアルのに追記して、実験をしています。
よろしくおねがいします。
とりあえずrenderを最後に呼べ
657 :
652:2007/08/31(金) 20:40:55 ID:???
>>656 ありがとうございます。 あっさりできますた
こういうユーザー情報テーブルが合ったとしてさ、
id,name,pass,last_login_date
※last_login_dateは、このユーザーが最後にログインした日。
こういうユーザー情報設定画面Viewがあったとしてさ、
name:[ ]
pass:[ ]
last_login_dateはユーザーが最後にログインした日を
記録するわけだから、ユーザーがデータを入力するわけじゃなく
システムが入れるわけなんだけどさ、
コントローラでのセーブがこういう風になっていた場合さ、
$this->User->save($this->data)
ユーザーがHTMLを改ざんしてlast_login_dateを
送り込んできたら、やっぱりlast_login_dateは修正できちゃうよな・・・?
そういう場合どうすんの? $this->dataから
last_login_dateにあたる変数をunsetすればいい?
ユーザーがHTMLを改ざんして違うidを送り込んでくることもあるから
そこら辺のチェックも必要だよな・・・。
作り方によるだろ。
その画面で必要な項目だけをdataにひとつずつ入れてsaveするように書けば
それ以外の項目は修正できないし。
ヒント:save()の第3引数はホワイトリスト
>>659 そりゃそうなんだけど、bakeでできるのがこういうコードだし。
>>660 なるほど、そんな引数があったのね。
データベース上にどんなテーブルがあるか調べる方法、
またそのテーブルがどんなフィールドを持っているかを調べる方法、
SQLを直接発行する以外にありますか?
たとえばMySQLの場合DESCRIBEでわかるのですが、
これだとMySQLに依存してしまいますし、
CakePHPで共通に使えるやり方があるかもと思って質問しました。
基本テーブル情報やカラム情報等の
メタデータ取得の仕方はDBによってまちまち
DESCRIBEのようなカラム情報取得の抽象化だけなら
わりとサポートしてるDBのライブラリは多いが
CRUDのSQL+カラム情報取得以外の
DBのschema操作まで抽象化したライブラリってのはあまりない
PEARのMDB2ならそういう操作を抽象化した
モジュールがあるのでその要件は満たせると思う
cakeは使ってないので知らん
>>663 > CRUDのSQL+カラム情報取得以外の
> DBのschema操作まで抽象化したライブラリってのはあまりない
でもbake.phpでは、データベースで定義されたテーブル情報から
どのテーブルのModelを作成しますか?って聞くわけで
方法あると思うんだけど。
>>664 それはモデルのAPIでしょ?
モデルで使っているテーブルの情報なら取れるかもしれないけど、
ほしいのはデータベースにどんなテーブルがあるかなんですよね。
>テーブルがどんなフィールドを持っているかを調べる方法
を知りたいとお前が言ったから答えたまでだが。
自分で言ったことも忘れたのか?
なんか頭がおかしいみたいだから放っておけw
668 :
663:2007/09/04(火) 17:48:54 ID:???
>>665 今cakeのソース落としてきて少し眺めたけど
libs/model/dbo以下の各DB毎のdriverのlistSourcesメソッドで
それぞれのDBのやり方でテーブル一覧を取得してる
何か共通の方法でDBからテーブル一覧を取得してるわけじゃなく
各々DB毎の実装を行ってAPIだけ統一、抽象化している
てか方法があろうとなかろうと
少しソース見りゃわかるような質問しといて
答えてる人に自分の思い込みだけで
別の方法があるんじゃないかとかそれじゃないとか
一体おまえ何様だよ
なにカリカリしてんの?w
CakePHPの機能でデータベースにあるテーブル名の一覧を
とってくる方法聞いただけじゃん。
> 各々DB毎の実装を行ってAPIだけ統一、抽象化している
そりゃそうだ。データベースごとに命令違うのわかってるって。
その統一APIがなにか聞いただけ。
結論言えば、ConnectionManagerつかって
データソース取得してlistSourcesでしょ?
かきこした後、すぐソース見たよ。
自分で調べるのと聞いて調べるののどちらが速いかわからないから、
とりあえず質問しといただけじゃん。
情報が共有されて一石二鳥w
>>669 釣りか真性か、俺にだけこっそり教えてください
調べる前に、とりあえず2ちゃんで聞く。
運がよければ、誰かが答えてくれる。
「自分で調べる」よりも「自分で調べる」+「誰かに聞く」の方が優れている。
使えるものは、使わなきゃねw
コモンズの悲劇ってやつか。。。
使えるものは、使わなきゃねw
$form->inputってすごいね。
すごいというか動きが良くわからない。
なんで$form->input("data")って書くだけで、
データを持ってこれるんだ?
どのモデルを使うとかどこで指定してるんだ?
なんで書き方同じなのに勝手にチェックボックスとかリストボックスとかになるんだ?
$form->inputって一体全体どんな機能を持った関数なんだ?
わけわかんねぇ。使いこなせる自信がないorz
マジレスすると君にはまだフレームワークは早い。ろくにオブジェクト指向も理解できてなさそうだ
そうそう、聞きたいことがあったんだ。
$form->inputでドロップダウンリストがでてくるんだけど、
これをラジオボタンにすることってできるの?
当然、そのときの選択項目はドロップダウンリストと同じ内容で。
>>675 ひどいなぁ。APIマニュアルみたけど使い方ちゃんと書いてないんだよ。
第一引数はいいとして、第二引数。 $options という配列を入れられるとは書いてあるが
具体的どんなキーのオプションが使えるのか書いてないじゃん・・・。
form.phpのソースコードみた? 単純に引数に対するタグを出力してるだけじゃなく、
データベース情報を参照していろいろやってるから把握するのに時間かかるし。
誰でも電話は使えますよ!
679 :
名無しさん@Vim%Chalice:2007/09/06(木) 11:45:44 ID:3VBce1ud
>>677 こ れ は ひ ど い。
本当にソース見たのか?
…と思ったけど、今気分いいから
$optionsの中身をメモっといてあげる。
$options['type'](string)…以下から選べ(後は自分で何とかしろ)
hidden checkbox radio text password file select time date datetime textarea
$options['label'](string)…フォームの前にラベルを付ける。
$options['before'](string)…ラベルの前に任意のHTML
$options['after'](string)…フォームの後に任意のHTML
$options['div'](boolean)…フォームをdivで括るか
$options['inbetween'](string)…radioの間に挿入するHTML
$options['selected'](string)…selectの初期値
$options['options'](string)…$html->radio()の第二引数
$options['empty'](boolean)…falseにするとselectboxで空白が選べるようになる
まだいくつかあったと思う。補完よろ
調べる前に、とりあえず2ちゃんで聞く。
運がよければ、誰かが答えてくれる。
「自分で調べる」よりも「自分で調べる」+「誰かに聞く」の方が優れている。
使えるものは、使わなきゃねw
sage忘れた。
$options['empty'](boolean)…trueにするとselectboxで空白が選べるようになる
だった、すまん
あと$options['value']とか
$options['between']とかがあったような。
>>681 引数多いんだね。
単に<inputタグの属性に展開されるだけかと思ったが、
emptyとか関係ないものもあるし。
どっかで見ただけで試していないがlabelを消すときは''とかではなく、
falseにするらしい。
inputのドキュメントって無いのかな?
じゃあ俺も、inputに第一引数だけ指定した場合の動作。
ソース読んで無いので間違っていたら修正よろしくw
使用するテーブルは直前の$form->createで指定したmodel。
つまり$form->createはタグを出力するだけでなく副作用がある
($formの状態を変化させる)
# ↑なんか気持ち悪い仕様だなぁ。こうすればいいのに。
# $form1 = $form->create('・・・');
# echo $form1->begin(); //formタグ開始
# echo $form1->input();
# echo $form1->end(); //formタグ終了
$form1->inputで出力されるタグの種類(textとかcheckboxとか)は
データベースの型やアソシエーションから自動選択(?)
具体的にデータベースの型が何のときに
どういうタグが出力させるかは、後の人よろしくw
>>674 ワロタ。
オブ脳になるまではチンプンカンプンだよな。
まぁまぁ、そんなことよりFormHelperの詳細な使い方を書こうぜ!
<?= $html->formTag('') ?>
そういえば第一引数で
$form->input('field')と
$form->input('Model/field')と
$form->input('Model.field')の
大体3種類の書き方があるよな?
そんで、CakePHPは今後ドット区切り(3番目の書き方)へ
移行するって記事をどっかで見たような気がしたんだけど
ソース持ってる人いる?
>>687 ソースに書いてあるよ。
/**
* Generates a form input element complete with label and wrapper div
*
* @param string $fieldName This should be "Modelname.fieldname", "Modelname/fieldname" is deprecated
* @param array $options
* @return string
*/
ところで、scaffold(およびbakeの出力結果)に
検索機能つかないのかな?
Paginationみたいに、そのままの出力で検索機能があったら良いなぁ
検索機能自体は簡単に作れるけど、検索結果に対してPaginationとか、
そこからaddやeditをしたら、単純なindexではなく、
検索結果に戻る(当然Paginationも考慮)とか考えると
ちょっと大変だな。
addページにきたときに、addページの前の検索結果+ページを
知る必要があるから、addページに飛ぶリンクを
工夫しないといけないし。
>>689 なんと、thx
>scaffold(およびbakeの出力結果)に検索機能つかないのかな?
decorate.phpとかmasterbakeとかあったと思う。
app/config/database.phpに複数のデータベース設定を入れているんだけど、
bakeって使用するデータベースを指定することってできない?
ソース見てるとどうも'default'きめうちっぽいんだけど。
サーバー('default')とローカル('local')で設定が多少違ってて、
開発時はlocalを見てbakeしてほしいんだけど。
692 :
3:2007/09/10(月) 05:48:34 ID:???
年を越してもいまだにフレームワークが使えない
>>692 チュートリアルすらやってないでしょ!w
paginateに検索語を足したい場合とか
どう書くのが作法なの?
695 :
nobodyさん:2007/09/13(木) 00:29:34 ID:WTXj/Q9b
cakephp1.2 で index を indecies と書かないとエラーになってしまいます。
どうにかして indexs だけで sつけるだけで簡単に動く方法ないでしょうか。
英語の複数系がわからないんです。。。
誰一人質問ばかりで答えないのにワラタ
698 :
nobodyさん:2007/09/13(木) 11:41:33 ID:f1fHu9mP
フレームワークという言葉の意味がはよくわからないまま、
とりあえず使ってみることにしました。
それでCakePHPを選んだのですが、
これはようするにDBを簡単に扱うための仕組みみたいなものなんでしょうか?
データを元にviewで好きなもの作りなさいっていうことなんでしょうか?
699 :
nobodyさん:2007/09/13(木) 12:14:35 ID:r/Zw5qbN
>>697 ありがとうございます!
inflectior.php のどこをどのように修正すればよいのか・・・。
わからないので教えていただけると大変ありがたいのですが。
cakephp1.1 でアプリをつくったときは indexs で動いて
cakephp1.2 の場合は indexcies じゃないとダメ。
1.1 の inflectior.php と 1.2 の inflectior.phpを見比べてみても設定が
一緒なんですよね。
ちょっとは自分で調べろ
>>698 >これはようするにドラゴンボールを簡単に扱うための仕組みみたいなものなんでしょうか?
その通りです
ちょっとしつもん。
controller で以下のようなコードを書いたのですが、1件しか登録されません。
foreach ($values as $val) {
$data = array("name" => $val);
$this->Hoge->save($data);
}
一度にたくさんインサートしたい場合はどうすればいいのでしょうか。
Hogeは密かにidを保持するから
save()する前に$this->Hoge->id = null;してみ
そういうときは1回ごとにModel::create()を呼ぶのが流儀らしいよ。
内容はid=nullとあんま変わらないけど。
Model::create()
Initializes the model for writing a new record.
706 :
703:2007/09/14(金) 02:53:28 ID:???
707 :
nobodyさん:2007/09/14(金) 11:48:15 ID:/to9vVVu
>>697,702
ありがとうございます!この際英語を覚えることにします。
覚えておいて損はないですしね^^
プログラムするのに英語は必須だろ
日本語訳が進んでないドキュメントとかいっぱいあるんだから
そんくらいは読めるようにしないと
709 :
nobodyさん:2007/09/14(金) 14:23:53 ID:DU5zTfFS
またまたw
プログラムを仕事にするなら英語は必須。
趣味なら別にどうでもいいが。
711 :
nobodyさん:2007/09/14(金) 16:00:59 ID:DU5zTfFS
理想的にはそうだが、別に英語できない職業プログラマーなんてゴマンといる現実について。
自社でノウハウがたっぷりあればいいけど
この界隈でどうやって英語抜き生活するんだ
つーか、技術英語なんて大体パターン決まってるし
サンプルコードもあるんだから割と簡単だよ
英語_とか抜かしてる奴はただ
ズラーっと並んだ横文字をパッと見て諦めてるだけだろ?
Cakeに関係ない話はよそでやれ
そうは言っても、実際いるもんはしょうがないだろうに・・・。終了。
Cakeに関係ない話はよそでやれ
703の話題も
>>1の一番下のサイトに書いてあるよね。
まったく、なんで/posts/view/?var1=3&var2=4 が呼ばれたとき、
$this->params['url'] => Array
(
[url] => posts/view ←余計なデータ
[var1] => 3
[var2] => 4
)
なんだよ。ぼけ。使いにくいじゃないか。
CakePHP 1.2っていつでるの?
なんか残りチケット200ちょいからぜんぜん減ってないんだけど
>>719 じゃあ聞くが、
検索語[ ] [検索]
というフォームはどうするんだよ?
/posts/?search=aaa
とかで渡されてくるだろ?
>720
それは、
$this->params['url'] => Array
(
[url] => posts/view
[search] => aaa
)
でいいんじゃないかな。
予約語みたいなものじゃない?urlは。
どういうとき困る?
paginationと組み合わせるとき。
ていうか、そんなに'url'があると困るなら$_GETを調べればよくね?
無理してCakePHPの変数を使おうとせんでも
$_GETにしたところで、urlは入っているだろ。
試してから書いてくれ
725 :
nobodyさん:2007/09/14(金) 23:57:30 ID:UPghMBCi
ん?何が困るんだ?
パラメータに何を使ってるかは
自分で分かってるんだからどうとでもなるべ
> ん?何が困るんだ?
保守性が悪いから困る
強引な方法でもいいならdispatcher.phpを改造すれば何とかなる
あとは知らん
728 :
nobodyさん:2007/09/15(土) 00:18:09 ID:PGlxhB9T
CakePHPは、CakePHPの想定しているレールに従って組むと楽だけど、
そのレールに不満を感じ始めると途端に使いにくくなるよ
後者なら他のFWの方がおすすめ
>>728 そういうレベルの話じゃなくて、
prams['url']にurlなんかいらないだろ?
他から取得できるのに、何のためにあるんだって言う話。
730 :
nobodyさん:2007/09/15(土) 00:48:32 ID:PGlxhB9T
いや、だからそういう話だよ
これだけじゃなくて、CakePHPはそういう意味不明な予約語みたいのが多い
俺だって_GETに'url'を追加する必要なんかないと思う
だからそういう不満を感じるなら向いてないよ、っていう話
731 :
nobodyさん:2007/09/15(土) 00:52:24 ID:PGlxhB9T
ま、今どうしても解決したいなら我慢するか727の方法でやるしかないんじゃない?
俺はもう自分からCakePHPを使うことはきっとないよ
わけが分からない制約が多すぎるからね
>>731 頭固いな。
単にコントローラ継承して、
params['get']を作って終わりだよ。
733 :
nobodyさん:2007/09/15(土) 01:23:03 ID:PGlxhB9T
やってることは727と変わらないじゃんw
まあ継承して解決するだけマシだけど手間は変わらない。
ていうか、CakePHPがPHP標準の仕様を勝手に変えてるせいでそういう対応をしないといけないわけで。
頭が固いとかいう問題じゃなくて、意味不明な制約が少ないFWの方がいいってだけ。
735 :
nobodyさん:2007/09/15(土) 01:28:32 ID:PGlxhB9T
へぇ。頭が柔らかいねえ君は。すごいすごい。
これでいい?満足した?ww
ID:PGlxhB9T 涙目wwww
とっても満足した。
737 :
nobodyさん:2007/09/15(土) 01:32:36 ID:PGlxhB9T
それはよかったww
おめでとう。
さらに涙目www
739 :
nobodyさん:2007/09/15(土) 01:35:26 ID:PGlxhB9T
自己紹介乙w
・javascriptでonsubmit時に/post/aaaに飛ぶようにする
・mod_rewriteで/posts/?search=aaaを/posts/aaaに書き換える
そんなに文句があるならcakePHPを捨てればいいだろ。
SymfonyでもZendでもいいし、なんならRailsでも使えや。
極論しかいえないアフォスwwww
>>740 こうですか?わかりません><
$html->formTag('/post','get',array('onsubmit'=>'location.href=\'/post/\'+this.search.value;return false;'));
まあいくらでもやりようはあるわな
746 :
nobodyさん:2007/09/18(火) 16:54:37 ID:Al1Bs6O8
cakephp1.2 の Notice エラーについて教えていただけませんでしょうか。
Noticeエラーを表示させたくないのですが、
ドリームウィーバーで error_reporting の部分に ^ E_NOTICE をつけてもNoticeエラー
が表示されてしまいます。エラーレベルを変更するにはどこを修正すればよいのでしょうか。
cakephp1.1のときは上記方法でうまくいったのですが・・・よろしくお願いします。
php.iniや.htaccessをいじれないことを考慮して、
mbstring.encoding_translationをonにすることなく、
phpコードで文字コード判別・変換したいのだが、
どこに入れたらいいのだろうか?
cakephpが解釈して、変数に入れたりする前に
$_POST、$_GET、(他にもあるかな?)の内容に対して
文字コード変換するべきだと思うんだが、
どの時点でするべきだともう?
どこにコードを書けばいいんだろうか?
日本語フォーラムみて思ったんだけど、開発時にNotice表示を消したい理由ってなんだろう。
JSONとか、HTML以外を出力するときは消したい時あるな
>>749 Noticeレベルも出ないように開発するのが当然でしょう?っていいたいの?
当然だと思います。
あそ。
>> 750
そういう時は出力するコントローラのアクション内で、
Configure::write('debug', 0);
でスッキリ。
755 :
nobodyさん:2007/09/21(金) 13:49:22 ID:7403Nihy
cake 1.2 まだバグ多いね。バリデーションもなんか動かないんだけど。
SQLもわけわからんとこでエラーでるし。
さすがは a 版。
やっぱり今はまだ 1.1 を使ったほうがよさそう。
1.1系で一つの項目に対して、複数の入力チェックはどのように実現するのが一般的ですか?
757 :
756:2007/09/21(金) 18:49:13 ID:sxzZ5KcO
> cake 1.2 まだバグ多いね。バリデーションもなんか動かないんだけど。
普通に動いているが?
普通に安定してるわな。
1.2使ってるけど、ドキュメントが少ないこと以外は特に問題ないな。
でもやっぱりalphaだと安定性が心配。
普通に自分で手入れすればいいじゃん。フレームワークのソース読めないで使っているようじゃフレームワークにツカワレているのと同様。
ソース読まないと使えないフレームワークとかイラネ
読めないっつーか読まない。カスタマイズする時は読むけど。暇じゃないからな。
>>761 ワロスwwwww
なんのためにフレームワークがあるんだか
>>761 こういうひとはきっとLinuxやらApacheやらPHPやらのCコードも全部読んでるんだろうね
オープンソースのモノを使う資格ないやつばかりだな。不満があるなら自分で直せって意味だろ
ソースを読ませることを前提としているモノは
PHPフレームワークに限らず、全部ゴミ。
ドキュメント読んだりAPI見たりしてわからなければソース見ればいい。
しかしコアソースを変えさせるのは如何なものかと思ってみたりする。
以上、独り言ですた。
>>769 普通cake/の中身にはちょっかい出さないよ
>>769 オープンソースの意味わかってないやつ発見
貧乏なくせに遠吠えしてるやつってしょうもないよなあ
訂正
貧乏な上に技術もなく さらには語学力もないのに
遠吠えしてるやつってしょうもないよなあ
だな
こんなとこでほえてないで フォーラムにポストするなりすりゃいいのに
まあ、完璧なモノなんて存在しないから、手を入れざるを得ない場合もあるけど、
手を入れる必要があればあるほど、「効率よく開発できるフレームワーク」から
遠ざかっていくことは間違いないな。
あんまり手を入れる必要があるのなら、自分で書いても大して変わらなく
なってしまうわけだし。
>>771-772 ガキの独り言に何をそんなにムキになって噛み付いてんだ?w
じゃ、まずはモマエからオープンソースの意味について言ってごらん
デキるやつと、デキないやつの境目を見た気がする。
デキるやつは、多少バグがあろうと関係ない。
ソースを読んで内部を把握するから詳しくなる。
そしていざ使うとなったときに、
一方はすでに内部から把握している人、
一方は今から勉強する人にわかれる。
フレームワークを使うのってさ、面倒なルーチンワークを任せたいからじゃないのかなぁ。
それに、ソースいじりだすとさ、バージョンアップの時も作業が増えるし、いじらなくて済む
ならいじらない方がいいと思うのはおかしいですか?
ごみは言いすぎかもしれないけど、「ソース読むのが前提」ってのは本末転倒かと。
俺は、>769の意見に賛成だよ。
ソース読めば、
Cakeが空のクラスを継承してることに気が付くから、
フレームワークの根幹に手を入れるなんて大冒険しなくて良いことに
気が付くよ。
ていうかCakeでソース読まないってどんだけエスパー揃いなんだよ。
膨大なよくわからんHowtoググルより
Cakeぐらいなら、ソース読んだほうがぜんぜんわかりやすいだろう。
ああでもソース見ると使いたくなくなるけどね。
構造が同じテーブルが複数合って動的に変更したいのですが、コントローラで
$this->Hoge->setSource("hoges");
としたのですが、FindAllをするとSQLのエラーとなります。
トレースを見たところ、
SELECT FROM `hoges` AS `Hoge` WHERE 1 = 1
てな具合で、SELECTの後のフィールドリストが空になっています。
自前でモデルの中でフィールドを定義するのか、
それとも、setSourceしたあとに何らかのメソッドでモデルを更新するとか
勝手に想像しながら、APIドキュメントを眺めてはいるのですが、それらしいものが見つかりません・・・
アドバイスお願いできないでしょうか・・・
#ぐぐったら、
#
http://d.hatena.ne.jp/cvyan/20070925 #同じようにはまってる人がいました・・・
780 :
779:2007/09/26(水) 03:03:06 ID:???
追記です。
自前でSQLを用意してfindBySqlメソッドを使えば、indexビューは表示できるようになりました。
$sql = "SELECT `Hoge`.`id`, `Hoge`.`name`, `Hoge`.`username` FROM `hoges` AS `Hoge`";
$result = $this->Account->findBySql($sql);
$this->set('hoges', $result);
ただ、InsertやDeleteメソッドも同様にSQLを用意しないと駄目な感じです。
せっかくのフレームワークなので、もう少しスマートな方法があればいいのですが・・・
>>779 モデルの基底クラスでテーブルのメタ情報をキャッシュするようになってるので、そのせいだと思う。
reset()かnewでなんとかならないかな。
ソース嫁厨ww
>>776 それは、ドキュメント読む方が早いか、ソース読むのが早いかによるんじゃないかなぁ。
読む速度が同じであっても、ソースを読んだ方が理解や応用、拡張が素早く出来るので、結果的に作業は早くなると思う。
まぁべつにソースを全部読めっていうわけじゃないし、本末転倒ってほど悪くは無いと思う。
むしろ折角のスクリプト言語で読みやすくなってるのにそのメリットを生かさない方がもったいない。
もちろん、よいドキュメントはいつだって欲しいけどさ。
結局、ドキュメントが不足していると言うだけの話であって、
CakePHPの出来が悪いと言うことにはならない。
本当のプログラマにとってはドキュメントもソースも同じようなものだけどね。
ソースも読めないような人間は、ドキュメントを読めないのと同じ。
>>779 1.1使ってる?
そのうち使いそうだろうから、試してみたけど全然問題なかったよ。
1.2.0.5427alphaでテスト。
コントローラのbeforeFilterとindex、どちらの一行目で
setSourceしても問題なかった。
個人的には、ログのように1年単位でテーブルを分ける的な場合なら
モデル側で使用するテーブルを判断するべきじゃないのかと思うが。
786 :
779:2007/09/26(水) 15:17:54 ID:???
newでコンストラクタの引数にテーブル名を指定する方法で、解決いたしました。
沢山のレスありがとうございました。
#Versionは1.1を利用しています
1.2.0.5427alpha試してるんだけどDEBUGの値2と3で変わらなくない?
788 :
787:2007/09/26(水) 17:04:51 ID:???
ソース読みました。
view.phpで$this->controllerがnullになってるみたいね。
今ふと気づいたんだけどさ、app/models/datasources ってフォルダがある。
このフォルダ、なんに使うんだろうか?
このフォルダがあると言うことは、何かしらの
ユーザー定義のクラスか何かを置くのだと思う。
新しいデータベースサーバーへの対応?
だとしたら、それは app/models/datasources/dbo になるはず。
しかし、そんなフォルダはない。
まさかRDBMS以外、つまりODBMSやXML等に対応するためか?
ドキュメントに記述が無いんだったら、
Tracでそのディレクトリのコミットログを見たら
どういう意図で追加されたかわかるかもよ
みなさんhelperってどの程度使用してる?
かえって不便な気がしてきたんだけど。
792 :
nobodyさん:2007/09/28(金) 14:13:03 ID:8QRsdJbb
>>791 自作に関しては作ってみたけどヤメタ。
独自に名前空間もった変数名つけてincludeしちゃったほうが
お手軽だったりするしさほど問題なかったりする。
form系のヘルパーは使うよ。inputとかtextareaとかselectTagとか。
html系のlinkとかimageとかは使いでは無いね。
1.1系から1.2系に移行しようとするとhtmlヘルパーだったのがDeprecatedとかいって
formヘルパーにいっちゃってたりして結構めんどいね。
極力ヘルプレスなほうがわかり易いと思った。
ドキュン
>>792 > 自作に関しては作ってみたけどヤメタ。
> 独自に名前空間もった変数名つけてincludeしちゃったほうが
> お手軽だったりするしさほど問題なかったりする。
それって、単にHelperクラスを継承しないってことなだけじゃね?w
Helperクラスを継承しないでHelperを自作している。
だよね?
792です。
>>795 あー、Helperじゃなくてプレーンなファイルなんだけど、
何か俺の言ってることもHelperと関係ない気がすごいしてきた。すまん。
ちょっとリセットして。
そもそもHelperを自作するような場面自体が少なそう。
なんていうか、デザイン要素を含むビューだとHelperの内部に
HTMLを書くことになってデザイナーがいじれないから、
アプリケーション独自のパーツ表示系とかにHelper使えない。
htmlヘルパーやjavascriptヘルパーのような汎用的かつ
ほとんどデザイン要素を含まない(含むとしてもフルカスタマイズ可能な程度)ような機能の
ヘルパーしか自作できない感じ。
そもそもヘルパーとはそういうものな気もするけどね。
>>791 はどんなヘルパーを作ったのか気になる。
うそー逆にHelperが大量にできるんだけど
Controllerは入力のデータについて集中したいというか、
Viewの表示用にデータ整形とかする関数を全部Helperに丸投げするって感じ。
テンプレートにはなるだけコードを排除したいし。
#つーか本当はControllerでHelperの指定をするのも嫌なんだけど。
#いきなりViewでHelper使えるようにする方法はないかな?
AppControllerに一箇所helperを書くだけもいやなのか?
なら、AppControllerのコンストラクタでHelperファイル検索して
全部突っ込んじゃえw
799 :
792:2007/09/28(金) 23:06:22 ID:???
>>797 HelperがViewから自由に呼べないのはもどかしいよね。
細かいの一杯作ると読み込むの手間だし、
かといって1つでっかいの作ると富豪すぎる気がして。
テンプレートのコード排除は同意。
ちなみにそのHelperでデータ整形するコードって、
echo '<td>hoge</td>';
とかいうふうにコードの中にHTML入っちゃってたりする?
この書き方は個人的には絶対に避けるんだけど。
理由はHTMLエディタで認識できないし、エンジニア以外がメンテできなくなるから。
なので、そういう整形用途でrenderElementで十分だったりする。
関数作れないけどまあViewだしコピペでいいか〜とか。
頻繁に使われるならさらにrenderElementで小分けする。
あとclassが書かれたファイルをデザイナーさんがメンテするのもちょっと。
ってここは社内事情だし、まあエンジニアがテキストエディタで全部メンテするならいいけど。
>>798 Controllerの中では使いもしないHelperの配列を
用意しなくちゃならないのがそもそも気持ち悪い。
なんていうのかな、その辺はView側で完結して欲しいって思う。
>>799 Helperの中にはタグは入れてないよ。
(Cake付属のHelperはモリモリ使っててムカつくよね!)
主にModelからブン投げてきたデータを食って
配列地獄を隠蔽したり、必要なデータだけ返すって感じ。
どうしてもテンプレートが必要ならHelperから
renderElementを呼んで引っ張ってくる。
あと、renderElementはテンプレートを細分化する他に、
PHPから動的にjavascriptを生成したい場合など
コードを隔離したい場合にも使える。
ほんまView側の要だと思う。
> なんていうのかな、その辺はView側で完結して欲しいって思う。
つまり、Viewの中にphpコードを書いてHelperをロードしたいということかな?
Viewの中にコードねぇ。まあいいけど。
Helperの中でタグを出力するのは悪くて、
renderElementの中でタグを出力するのは良いのか?w
Helper呼び出しのコードを書くのは悪くて、
renderElement命令実行というコードを使うのは問題ないのか?w
>>799 > 理由はHTMLエディタで認識できないし、エンジニア以外がメンテできなくなるから。
という理由なら、renderElementを使う方法も使えないよな。
そもそもHTMLだけでループや条件分岐を表現できないのだからどうしようもない。
またフォーム系のタグにつける名前はコードの都合によってつけるものだから
当然エンジニアの仕事になる。
804 :
792:2007/09/29(土) 10:14:12 ID:???
>> 800
>主にModelからブン投げてきたデータを食って
>配列地獄を隠蔽したり、必要なデータだけ返すって感じ。
>どうしてもテンプレートが必要ならHelperから
>renderElementを呼んで引っ張ってくる。
んーなるほど...ほんとにデータ整形だけなのか...
そこまでHelperでやっちゃうとほとんどコントローラ出番ないんじゃない?
Helperはデータを返すんじゃなくて表示できる形の文字列を返すものという
俺ルールで縛ってるから、
個人的にはそういうのならコントローラでやっちゃうか
コンポーネントにしちゃうか、
もしくはModelのafterFind使ったりだ。
805 :
792:2007/09/29(土) 10:19:44 ID:???
>>802 >Helperの中でタグを出力するのは悪くて、
>renderElementの中でタグを出力するのは良いのか?w>
そういうことじゃないよ。タグを出力するよしあしじゃなくて、
コードの中にタグが混入してるのがアウト。
○ <h1><?php echo h($hoge) ?></h1>
× <?php echo '<h1>' . h($home) . '</h1>'; ?>
renderElementした先で○のようにタグが.thtmlでコード外に書かれてるのならおk。
どりーむうぇーばーとかでいじれる。
Helperでもこのルールで書かれてばいいっちゃいいけど、
どりーむうぇーばーとかで開いたときにめちゃめちゃにならないように縛りいれると
renderElementでやるのと大差なくなる。
806 :
792:2007/09/29(土) 10:30:49 ID:???
>>803 >という理由なら、renderElementを使う方法も使えないよな。
ちゃうちゃう。デザイナーさんはrenderElementした先の.thtmlを開くの。
それくらいは教える。
ループ書いたりとか条件分岐はエンジニアが書くけど、
見栄え自体はあとからデザイナーさんが調整してほしいから。
>>801 あー悪い、View側つーか、要はControllerとテンプレートの間にもう1クッション、
表示用の準備を「PHPで」書ける空間が欲しいなって事。
Modelはデータソースへの正しい入出力に全力を注ぐべきだし、
Controllerは見た目なんかに関知しないでビジネスロジックに集中したい。
テンプレートは出来るだけHTMLの純度を高めたい。
問題の範囲を切り分けたいって意味なんだけど、分かりにくいね、ごめんちゃい
#今回はもう後戻りできないからControllerに直接Helper指定してるけど:-p
>>804 業務用の社内システム作ってるから、
Controllerのやる事は割とあるんよね (社内事情
808 :
792:2007/09/29(土) 11:29:02 ID:???
>>807 >Modelはデータソースへの正しい入出力に全力を注ぐべき
理想は俺もそうしたいが、使い勝手を考えると
Modelクラスにデータ整形のメソッドとか書くと使い易いんだなこれが...
何かデータ整形のための構造がもう1個あってもいい気もするね。
うまい名前が思いつかないけど。
>業務用の社内システム作ってるから、
>Controllerのやる事は割とあるんよね (社内事情
なるへそ。その状況想像したら分離したくなる気持ちはわかったよ。
>>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にコードが入っていたら結局同じことでしょ?
>>807 > 表示用の準備を「PHPで」書ける空間が欲しいなって事。
つbeforeRender
811 :
792:2007/09/29(土) 12:51:34 ID:???
>>809 >上が○ならこれもOKってことだよな?
><h1><?php echo $helper->h($hoge) ?></h1>
おk
>> ちゃうちゃう。デザイナーさんはrenderElementした先の.thtmlを開くの。
>いや、だからその先の.thtmlにコードが入っていたら結局同じことでしょ?
そのコードが○な感じで書かれてばおk
>>810 beforeRenderをコントローラー内じゃなくて
何か別のクラスに分離したいよね。
まあ自作してもいいけどね。
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
憶測だけどFormヘルパーが$this->controller->dataを参照してるんじゃまいか
>>813 たぶん、そうなんだろうけど、直接読むところじゃないよな。
controller->dataはPOSTしたときのデータ専用に使っとくれ。
ということで、そこらあたりがっちり書き換えてしまった。
表形式でのデータ編集もしたかったし、
Formヘルパーは使わずに独自のヘルパー(?)作ったよ。
>>814 まあオプションでいちいち
指定するとタグ直書きとあんまり代わらないからな。
ただ、独りよがりな仕様は否めない。
勝手にオプションを追加しておいて
それを削除するにはソースいじらにゃならん、とか
>>384 ちんこの美しさは半端ない
あれはまさに神の授けた人類の至宝だね
りっぱなやつを見ているだけで俺なんか
イきそうになるよ
だからお前も一緒にホラ や ら な い か?
ありくい
特定のmodelで使うバリデーションはmodel自体の中に書けばいいのはわかったんだけど、
複数のmodelで使うバリデーションってどこに書けばいいの?
本も買ってみたんだけど、
>>648でもふれられているように、自前の
バリデーションの説明は載ってなかった…
そりゃ、AppModelだろう。
中間に別のModelをはさんでそこで書いてもいいが。
>>818 AppModelでいいのか。
なんかcake/ディレクトリに手を加えるのに抵抗あったからapp/の中のどこかかと思った。
さんきゅー。
いや、appのAppModelだよw
>>820 ありがとうございます。
cake/app_model.phpを見たら
>Create the same file in app/app_model.php
って書いてありますね…
見落としてました。
全体を通してみて、Cakeユーザのレベルが低い気がする。
いや俺を含めてね。
いや、お前だけだ
そうだそうだ
いや俺も
俺だって
どうぞ、どうぞ。
[フライング]
ケーキとかしばらく食ってねーな。スイーツ食いたいよスイーツ。
829 :
nobodyさん:2007/10/16(火) 17:34:23 ID:wp+6b1Uc
Use of undefined constant VALID_NOT_EMPTY - assumed 'VALID_NOT_EMPTY' in /var/www/html/pic/cake/dispatcher.php on line 157
チュートリアル通り進めてると
思うんだけど原因がわかりませぬ。
だれか教えてください。
まだフレームワーク使うに早いので勉強してください
お前が言い回しを勉強しろ。
「使うに」の”に”がおかしいっていいたいんだろ?教養ない奴。
理解できなかったら、副助詞の「は」を補って
まだフレームワーク使うには、早いので、勉強してください と読め。
つうか横レスだが
どこにVALID_NOT_EMPTY定数入れておこられたん?
エスパーきぼんぬと言われてもしょうがない
ksks
「使うに早い」って正しい日本語だろ
どこが?
「使うに早い」 Google 検索結果・・・1件
「使うには早い」 Google 検索結果・・・17,900件
1件のブログの人?
そうだが?
今後、ここは正しい日本語について論じ合うスレッドになりました
Cake本でますな。
どっかの誰かさんが書いた糞本と違って内容が濃いことを願います。
本の質も少しでもRailsを模倣してほしいよ。
modifiedを更新しないでUpdateする方法って用意されてたりする?
やり方がわからなくて今はmodifiedを1回持ってきて再設定してるんだけど。
>>840 Railsは書籍がいっぱいあるからうらやましいよね。
>>841 意味がよくわからないけど。
modifiedは勝手に更新されるでしょ?
843 :
841:2007/10/17(水) 19:10:12 ID:???
>>841 勝手に更新されて困るときに、更新しない方法ってない?という意味です…
modifiedは更新したときに勝手に更新されるためにあるもんだと思うが
845 :
841:2007/10/17(水) 19:56:57 ID:???
DBを使わない場合に、他のモデルのデータ使いたいときってどうすればいいの…?
847 :
nobodyさん:2007/10/17(水) 21:54:28 ID:q7TPqrYz
すごい初歩的な質問なんですが、
初期設定とかはどこですればいいんでしょう?
例えばファイルから設定を読み込むとか、
読み込んだ設定をセッションに登録するとか…
>>846 コントローラの話?なら
var $uses = array('Model', 'Model2');
で定義してアクセスするには
$this->Model->ググれ();
>>847 /app/config/bootstrap.phpとか
>>848 おお、DB使わなくてもそれでいけるんですね(?)
すごいなあ
ついでになんですが…
独自の関数(例えばhoge)ってどこに定義すればいいんでしょう…
AppControllerに定義すると継承されるので、そのURLでアクセスされるとアクションとして処理されちゃいますよね
class AppController extends Controller {
function hoge {
}
}
class FooController extends AppController {
}
とかだと、
http://nantoka.com/hoge/ でhoge()がアクションとして処理されそうな気が…
むずいなあ・・・
早く本でないかなあ
_ とか __ とかつけれ
modifiedは自動更新されるためにあるんだしそういう仕様なんだから、違うカラムつくればいい。別にスマートじゃなくない。
>>851 >>852 どうもです m__m
_とかつけるとアクションとしては呼ばれないんですかね?
がんばって調べてみます
アップロードされたファイルも$this->dataの中に入りますよね?
$html->file('Sample/pic');
でアップロードしたんですけど、$this->data['Sample']の中には
ファイル名しかない・・・
$this->dataの中をprint_rで見ても、tmp_nameとか入って無いんですが。
これって何か設定しないと駄目なこことかありますか?
Cakeはそこまで面倒見てくれないから
move_uploaded_file()とか普通に使え
解決しました。
formにenctype入れるの忘れてました。
テヘ
857 :
nobodyさん:2007/10/18(木) 15:33:11 ID:Tkva8LEl
1.2.0.5427alphaでEmailComponentを使い始めたんだが、
改行を改行コードつまり"\r\n"ではなく、'\n' で
記述するのは仕様なのか?
コード読むと、__stripで改行コードさくっと消していたり、
$message = str_replace(array('\r','\n'), '\n', $message);
というコードがあったりするんだが・・・
あとメールの仕様って改行コードは文字コードとしての\r\nでいいの?
858 :
nobodyさん:2007/10/18(木) 15:43:49 ID:Tkva8LEl
あと
>>858のリンク先に修正コードがのっているけど、
改行削除しているのは、__strip関数なんだよなぁ・・・
$message = $this->__strip($message, true);
__strip関数の第二引数をfalse(省略すると)
改行コードは削除されないんだが、
そうすると第二引数をtrueにしているところがなくなるぞ?
何か意味があってそういうことしたのだろうが、
よくわからん。履歴も見たけどよくわからん。
だれか、EmailComponent使っているのだろうか・・・
860 :
nobodyさん:2007/10/18(木) 16:12:14 ID: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が空になる…
すまん、間違えた。
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が空になる。
毎回ファイル読むかセッションに保存しないといけないんかな?
>>860-861 いまいち何がやりたいのかよくわからないけど、
>2回目以降のアクセスでビューの$filenameが空になる…
それは当たり前なんじゃないかな。
あ、ごめん・・・またまちがってた
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) ?> でファイル名が表示される(はずなのにされない)
なんか間違ってる?(^^;
デバッガでみても空になってるね…
セッションに保存するしかないのかな?
なんかしっくりこない(・・;
>DBなしでやってるんだけど、どうもうまくいかない…。
DB使いましょう。
> セッション initialized = false のとき(最初)
> 1. $filename = 'hoge'; で $filename にファイル名が入る
>
> セッション initialized = true のとき(2回目以降)
> 1. $filename にはすでにファイル名が入ってる(はずだと思うんだけど…)
って言ってるのと同じだと思うんだけど。
DBなりクッキーなりセッションなりに記憶しないと、変数のデータは
ページ出力と同時に全て消えるよ。
>DBなりクッキーなりセッションなりに記憶しないと、変数のデータは
>ページ出力と同時に全て消えるよ。
そうなのかあ
普通の感覚でやってたので混乱した…
ありがとう!
DBを使わないものなので、セッションにでも保存することにします >_<
書き込み・読み込み可能な設定ファイルとかのヘルパってないですか?
こういうのもDBでやるもんですかね。
>>867 俺はDBでやってるよ。
・・・でも読み込み重いかもなんておもちゃって
ファイルにキャッシュする機能つけちゃったけどなw
save時に全データをファイルにキャッシュ。通常はファイルから読み込み。
DBにした理由は、設定画面を作るのが面倒だったから。
870 :
nobodyさん:2007/10/18(木) 17:42:09 ID:XZqNQY+Z
test
>>869 どうも。DBにしといたほうが無難っぽいすな。
所でテーブルが無いとモデルとかコントローラとか作れないでしょうか?
>>871 作れるよ。
やりかたは、コントローラの$u・・・ぐぐれwwwww
コントローラAから $this->redirect で他のコントーラBにリダイレクトすると
セッションがうまく読み込めないんだけどバグ?仕様?
もちろんリダイレクト前に、コントーラAでセッションに保存してるし
コントローラBではセッションの読み込みをしている
読み込めないというより、コントローラAで保存ができないのか?
謎すぎる…
$this->redirectはroutes.phpの設定無視されるのか?
>>874 すまそ 自己レス
beforeRenderでセッション保存してたのがいけなかったみたい
保存前にリダイレクトしてたってことか orz
慣れるまで大変だけど
少し慣れてくると使うのが楽しくなってくるね ヽ(゚∀゚)ノ
>>876 そうなんだ?どのフレームワークが良さそうか探して回ってるんだけど、
CakePHPにしてみようかなあ
878 :
871:2007/10/19(金) 07:26:08 ID:???
cacheっていうグローバル関数を見つけたんですが、
これ書き込みは出来ても読み込みはどうすればいいんでしょうか?
第二引数がnullならきっと読み込んでくれるさ
projectmultib-22を検索するとブログが見つかるけど、絶対荒らすなよ!!
Cake使ってて、Railsを勉強しはじめたんだが、
Cakeの勉強続ける意味ってあるのかな。
Railsと併用とか戻ったとかいう人いる?
もちろん、Rails使えない環境ではCake使えるけどRails知ってて敢えてCake使ってるっていう人。
_, ._
(;゚ Д゚) 両方使えて損は無いだろ?時間が問題になるだけで。
どっちかに自分をコミットしたいじゃん?
今まであった静的ページにCakeの機能組み込む場合って
どうすればいいんでしょうか?
後プログラマに依存しないで静的ページを追加していく方法とかありますか?
>>887 適当なディレクトリにインストールすれ
静的ページの定義がわからんが、単にファイルとして設置もできるしCake通った場合もおk
下手に有名なせいで素人増えすぎ。
人が多いことは良いことだ
うざいやつも増えるけど、情報が出やすくなるのはいいかな。
1.2.0.5875pre-betaきた
>>887 .htaccessをそれっぽく書き換える
同じRailsライクのPHPフレームワークで、symfony、 php on trax 、codeIgniterあたりを実際に使って比較したひといる?とくにtraxとの比較が知りたい
今日は 1.2.0.5427alpha → 1.2.0.5875pre-beta 移植をやっていたよ。
わかっていたことだけど、alpha版に手を出すと面倒だねw
>857のメールの件だが、動かしてはいないんだがソース見た限りではちゃんと直っているようだ。
コントローラーのnamedArgsがなくなってpassedArgsだけになっていた。ほとんど同じようなものなので、簡単に修正。
namedArgsはもともと使ってはいけないものだったのだろうか?
なんていうんだっけ、名前つきURL? paginationとかで使われている/controller/action/name:value の「:」という区切り記号。
以前はコントローラの、$argSeparatorで指定できたのが、Routeの仕事になっている。まあ意味を考えれば妥当な変更だね。
設定するにはconnectNamedを使う。でいいのだろうか? この関数が何のためにあるのかよくわからない。
とりあえず/app/config/routes.phpにRoute::connectNamed(array(),array('argSeparator'=>'区切り記号'));を追加して設定できた。
これでいいのかわからんが、コードを見る限り区切り記号変更以外に副作用はないようだ。
/app/config/core.phpがことごとく変えられているw
といってもdefine('〜〜〜',〜〜) が Configure::write に変わっただけなんだが。
おかげで、DEBUG定数を見ているコードを修正する必要がある。
Configure::read('debug')に変えるだけだけど。
テストのページ(simpletestを起動するためのtest.phpのところ)の
charasetがUTF-8に修正された。うんよかった。
Single Table Inheritanceなるものをつかっているのだが、動かなくなった。
(詳細
http://cakephp.seesaa.net/article/23101637.html)
(大元
http://www.ifisgeek.com/tutorials/implementing_single_table_inheritance_in_cakephp)
自分はいろいろ変更しているのでそのままあてはまらないかもしれないが、
大元のコードSnippet #3: Complete definition for the Current Model.の $table = $this->__table;の次の行に
$this->useTable = $table;を追加したら動いた。まあこれは大元が悪い気がするが。
とりあえず、俺にとって問題が出た修正点はこんなところかな?
1.2.0.5875pre-beta で
cakeコマンドの検索パスから、
/app/vendors/shells が無くなった?
/venders/shellsに変えればいいだけなんだが、
1.2.0.5875pre-betaでもパスは残っているしこれはバグだろうか?
898 :
897:2007/10/25(木) 13:06:00 ID:???
どうやら、パスの扱いに変更があったようだ。
今までは、/cake/consoleに移動して、cakeコマンドを実行していたのだが、
それでは/app/venders/shells/を見てくれなくなって
/app で実行したら見てくれた。
これは、デフォルトの動作で、-app 引数で見るパスは変更可能。
899 :
nobodyさん:2007/10/25(木) 15:21:22 ID:QUb8umf5
>>896 わかっていたことだけど、alpha版に手を出すと面倒だねw
同感。ちなみに、まだ本屋いってないけど本でたかな。
cakephpの新しい本。早く読みたい。
1.1でつくってて本当によかった
>>896 めんどくさそうだなー。
一応betaまで待とうかな。
うーん…
>>901 面倒は面倒だが、書いてある文章よりかは面倒じゃないぞw
比較的マイナーなことをしているからそうなるわけで、
ほとんどの人はすんなり移行できるんじゃないかな?
>>900 > 1.1でつくってて本当によかった
それはそれで、1.2へ移行するときに面倒なことが・・・
結構かわっているしね。formヘルパーとかPaginationとか。
俺は、EmailComponentとユーザー関数によるValidationと
Behaviorと名前つきURLパラメータとか使っているから
1.2じゃないともう無理。
903 :
901:2007/10/26(金) 00:12:57 ID:???
>>902 俺もEmailComponent、Validationの二つが決定的で1.2を使ってる。
1.1からだとhtmlとformヘルパー周りの変更は確かにめんどくさそうだね。
見た目よりは滑らかな感じだったよ。
Modelname.columnnameや
Modelname/columnnameなどの文字列をモデル名とカラム名の配列に
変換してくれる(または、その逆をしてくれる)関数はありませんか?
いまちょっと混乱しているんだけど、
1.2.0.5427alphaで、admin routingを使ったときの
/admin/controllers/indexにアクセスしたときの
action名(コントローラ->actionおよびコントローラ->params['action'])って
indexじゃなかったっけ?
1.2.0.5875pre-beta の場合、admin_index になっているような・・・。
仕様変更? それともなんか設定不足かなにかかな?
908 :
907:2007/10/26(金) 12:02:50 ID:???
結局、これもバグか・・・
https://trac.cakephp.org/ticket/3440 これの修正を適用したら直った。
あっ。直ったと言うのは正確にはソートの部分ね。
>>907の直接の問題は、paginationを使ったときテーブルのヘッダ部分が
/admin/controllers/admin_index/page=1/sort=type/direction=asc と
admin_indexが追加されてしまっていること。
パッチを適用したらちゃんと直った。
actionが以前、admin_indexだったかどうかは忘れたが
これからはこれなのだろう。
909 :
907:2007/10/26(金) 12:15:32 ID:???
/admin/controllers/index/abc
これでアクセスしたときは、
function admin_index($value) {
の$valueにabcが入るのに、
/admin/controllers/index/named:1/abc
これでアクセスしたときは、
function admin_index($value) {
の$valueが、なんで1なんだよ?
/admin/controllers/index/abc/named:1
のときはちゃんとabcが入るくせに
(゚Д゚)ハァ? (゚Д゚)ハァ?
1.2.0.5875pre-beta は
こまかいバグがおおいなぁ。
>>909 cakeは全体的にパラメータの受け渡し関係はおかしいよね。
数字なのにわざわざ文字列型に直されていたり…
checkboxって
array('checked'=>($data['Pic_resize']?'checked':null),'value'=>1)
とかにしてパラメータ渡さんとだめなん?
どういういみだ。生書きできないかということか?
913 :
nobodyさん:2007/10/27(土) 21:04:01 ID:euGofwdi
914 :
nobodyさん:2007/10/28(日) 00:56:30 ID:agDkXCq3
複数のCakePHPアプリでログイン情報を共有させるいい方法ないのかなあ…
1つのアプリにまとめると、コントローラ名なんかがかぶるから長い名前になってしまう…
CakePHPだとGDの扱いも簡単にかけるの?
GDがなんか難しいのか?
それはいいとして、GDの命令自体は同じ。
GDを含んでいるアプリ全体は簡単に書ける。
フレームワークとはそういうもん。
>>917 ありがとう
やっぱりセッション周りいじるのが一番簡単なのかな
コントローラ名がかぶるのはCakePHPの規約に合わせてつくってるから…
(モデルごとにコントローラ作るから)
規約に合わせないで、1つのコントローラでいくつかのモデルをまとめて扱えばいいのかな
今、気づいた orz
>>896 自分もpre-betaに移行してみたよ。
修正が必要だったのは
>おかげで、DEBUG定数を見ているコードを修正する必要がある。
ここだけ。
defineはconfig.phpと関係ない定数だけで使うようにってことなのかね。
>>918 よく知らないんだが規約ではモデルごとにコントローラーを作るのを求められてるの?
コントローラーは、ユーザーが何かしらの行動をしたときに動作を振り分けるものだから、
たとえばアクセスログをDBに記録する場合には、モデルだけ必要でコントローラーは
必要ないと思うんだが。
Cake使っていままでの既存のプロジェクトを後の生産性と保守性のためにかきなおしたやついる?
>>920 あれ、別に作らなくてもいいんだっけ?
一応、規約だとモデル・コントローラ・ビュー全て一式そろえないといけないことになってたかと思った
(もちろん、$Useとか$UseTableとかで変えられるけど)
掲示板とかのカテゴリ用のテーブル作って、CategoryControllerも作ってたんだけど、
さすがになんか変だなあ、と思って、
別にコントローラのないモデルもあるよなあと気づいた…。
小物は規約に従っててもいいけど、少し変わったもの作るとなると自分で調整したほうがいいみたいね
>>921 趣味でやってるけど書き直そうとしてる
でもDB使ってないサイトなので、あんまり意味ないかもw
楽だなあ、とは思った
DB使ってないのにCake使ってるんだw
モデルだけのためにビヘイビアがあります
ビヘイビアはよくわかりません。
>>924 DB使わなくてもCakeで組み直すと楽だよ
まあDB使ってるときほどメリットはないけど
Amazonから届かんぞーーーー
「アマゾ・・」
ピンポーン
1.1のときはcake/scripts/ で php bake.php をやるとCAKEPHPっていうのが出てきて対話に入ったんですけど、
1.2 pre-betaにしてからbake.phpの場所が変わっていたので cake/console/libs で php bake.phpをしても何も表示されません。
ほかに何か変更になったんでしょうか?
1.2からは、cake bake だよ。
cakeコマンド自体は、/cake/consoleにあるが、
実行する場所は、/app にいることが想定されていると思う。
なぜなら、なんのオプションもつけずに、/app/venders/shells/に作った
独自のスクリプトを読むためにはここにいなければいけないから。
だから、俺は環境設定のPATHに、/cake/consoleを追加している。
>>935 'url' => array('controller'=>'comment', 'action'=>'add')
とかoptionsに入れればいいんじゃないの?
それでダメと言う話?
>>936 あー、optionsをそう書くのか。
前は
$form->create('Comment', array('action'=>'add'))
でいけてたはずなんだけど。
>>934 さんくす。
php cake/console/cake.php bake
で、うまくいった。
グループごとにログインする場所って分けた方がいいんでしょうかね?
cake本をぱらっと見たけど、1.1向けなのね。
pre-betaも出たし、なんかタイミング悪い。
これなら前に出たPHPフレームワーク本の方がいいかも。
購入は1.2に改訂されるまで待ちかな。
1.2に改訂とか出ても相当かかるだろ。
1.2って仕事でつかっちゃっても大丈夫な位には出来てますか?
943 :
nobodyさん:2007/10/31(水) 17:07:27 ID:y/Xrur+h
本かってみたー。
cakephp1.1で作ってるので個人的には今まで出た本の中では良いと思う。
なにせcakephp1.1使ってますから。
ただ、文字が多すぎ。カラーで出してくれたら嬉しかったなと思う。
でも薄っぺらい本よりはいい
漫画じゃないと認めない
もうちょっと具体的なのがあるとよかったね
半分くらいはまとめただけって感じなのが…
もうちょい実践で使えるノウハウがほしいなあ
入門書としては悪くないと思う
そう感じたらRailsへの移行時だな
おれはrailsからcakeにきた
なぜ?
phpのほうが楽じゃね?
単純にRubyに対応している共有サーバーが少ないからだな。
もちろん専用サーバーならなんでもありだけど、
それならJavaでいいんじゃね?という感じだし。
だな、オレくらいしょぼいプログラマだと、
PHPしか需要がねーよ orz
tagErrorMsgってリダイレクトすると消えちゃうんですが、
これってSessionとか使って記憶しておく事とかできませんか?
954 :
nobodyさん:2007/11/01(木) 20:53:29 ID:40qfpM4a
ちがった。
別の作って見たらちゃんとRedirect後もエラー表示されてる。
「リダイレクトするとtagErrorMsgの表示が見えなくなったんですが、
どなたか原因わかりませんか? 」
に質問を買えます。
お願いします。
ちがった・・
エラーの後のリダイレクトは駄目なんですね
質問取り下げます。失礼しました。
ユーザ登録系で簡単な方法って無い?
メール返して本人確認するみたいな・・
>>956 前に探したけど、特になかった気がするなあ。
Postされる情報の中にidが含まれていると任意のidが
設定できちゃうのね。
いちいちnullを入れるのがめんどくさい&不安なんだけど
みんなどうやって解決してる?
自由に投稿されてはいけないなら、何らかの認証機構を付けるべきなんじゃない
idいれなきゃいいじゃんw
nullもいらないじゃんw
960 :
nobodyさん:2007/11/05(月) 04:20:02 ID:bzvMK5G5
DOCUMENT ROOT以下しか触れないときのファイル配置のお手本ってどっかにないですか?
僕はとりあえず全部DOCUMENTO ROOT直下にそのまま配置して、cakeとかappとかには直接アクセスできないように.htaccessで設定してるんですがそれで十分なのか不安なんですが。
(あとweb_rootが下の階層にあるのがデザイナーさんに気持ち悪がられる)
webrootとコアを別のディレクトリにわければいいんじゃ
>>958 んー、例えばSNSの日記とかで/diaries/read/$idみたいなURLの場合。
悪意のあるだれかが日記を投稿するときにidをPostに含めて投稿した場合、
オートインクリメントが無効になって、いきなりidが飛んじゃう。
そうならないように作ればいいだけじゃね?
>>965 ほほー。
これでまあなんとかマシにできるかも!
いちいちそれやるのめんどくせーから
app_controllerにそれ用の関数書いとくというのはありですか?
好きなの選べ
プラン1
app_modelでsave()をオーバーライドして
idを指定してきてたらidがデータベース上に存在するかチェックする
プラン2
controllerごとに$whitelistの配列を定義。
app_controllerのコンストラクタで$this->actionを見て、
editだったら$whitelistにこっそりidを付加
プラン3
save()で統一するメリットなんてたかが知れてるんだから
もういっそadd()とかedit()とかのラッパーを作ってmodel側で完結
プラン4
ママに頼む
>>968 プラン4でうまく動きました。
ありがとうございました。m(*_*)m
idだけじゃなくて、createdとmodifiedも、ほぼ間違いなく存在するフィールドだから
推測されやすいし、ポストされるとまずいよね。
その辺を考えると
>>968のプラン2が一番いいのかなあ。
この問題について言及しているブログとか見つからないんだけど、
みんなどうやって解決しているのかね。
もしかして普通にセキュリティホールになってたりするのか?
別にセキュリティホールにはならないと思うが?
単に、createdとmodifiedが編集可能フィールドになるってだけで。
みんなどうやってログイン状態保持するようにしてる?
「情報を保存する」オプションを有効にする(CakePHP修行 #34) | IDEA*IDEA
http://www.ideaxidea.com/archives/2007/07/cakephp_34.html これを見ると、
usersテーブルに、ユーザーごとのhashを保存
↓
ログイン時に「保持する」にチェックが入っていたら、hash値をcookie発行
↓
ログインチェック時にcookieを見てhash値があったら、それでログイン。
って感じの処理をやっているんだけど。
なんでこんなことをやっているのかわからない。
sidをcookie発行しちゃだめなの?
セッションID 固定化
でぐぐる
>>973 CakeってSession Fixation対策はある程度されているような。
少なくとも?CAKEPHP=1234みたいなのは効かないと思うんだけど。
セッション固定化は問題
↓
セッション固定化しないようにした
↓
そんなsidをcookieに保存しておくのか?
bakeで吐き出されるコードの
delアクションって最悪だな。
アドレスにアクセス(GET)しただけで削除される。
普通こういうのはPOSTを使って削除するもんだろ。
bakeは使わないのが基本とどこかで見たから、それ以来全然触ってない。
普通に書けばいいんじゃね?
>>975 sidをcookieで保存しておくとどういう攻撃が想定されるかわからないんだけど、
すまんが攻撃名だけでも教えて貰えないか。
1.2prebataで搭載されたRESTルーチングを試してはいかが
たいぽってた
誤)prebata
正)predator
攻撃も何も、不定期に変化するsidをcookieに保存しておいても
次回アクセスされたときにcookieから取り出したsidが
有効である保障はないだろう?
982 :
nobodyさん:2007/11/10(土) 09:54:00 ID:rF2PTWzY
セッションにユーザ情報を格納して、
app_controllerでログインチェックしてるんですが、
Sleipnirでぶちぶちセッションがきれてしまいます。
他のブラウザでは問題ないです。
1.2.0.5427alphaでも1.2.0.5875pre-betaでも同じ現象が発生します。
だれか同じ現象ではまった人はいませんでしょうか?
俺もhighじゃなくてmediumで運用するようにしてる。
>>981 sid更新ごとにcookie発行すれば大丈夫のような。
どこか違うPCからログインした場合は再ログインが必要になるけど、
>>972みたいな固定値でやるよりよっぽどいい気がする。
985 :
982:2007/11/10(土) 17:13:00 ID:rF2PTWzY BE:218079124-2BP(0)
983>>
情報提供ありがとうございます。
mediumに設定しましたが、状況かわらずでした。
困りました・・
とりあえず、まっさらな状態の
Cakeを動かして同じ現象が起こるかレポしてくれ