【PHP】フレームワーク CakePHP 9ホール目【v1.3】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/07/23(金) 09:13:26ID:v3m09M9uCakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※sage推奨
※質問時もsageること
※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
0269nobodyさん
2010/08/25(水) 22:03:14ID:???0270nobodyさん
2010/08/25(水) 22:11:24ID:???個人的には後者のコードの方が好きだけどな
もっとも、自分で書くなら
<? php
echo $a.'<br />'.$b;
?>
ってな感じにするけど。
0271270
2010/08/25(水) 22:13:12ID:???0272nobodyさん
2010/08/25(水) 22:26:25ID:???そんな俺は買ったけどまだ読んでないw
0273241
2010/08/26(木) 00:42:52ID:???・pr()を使わないでprint_r()
pr()はインデックスに載ってないのでたぶん出てこない
h()もそうだけど、省略表記が嫌いなんだろうか
・モデルから持ってきたデータを回すときにforeachではなくfor
好みの問題だけど、foreachの方が使われることが多いし、特に理由がなければ最初はforeach教えた方が・・・
・$this->flashは使わずに$this->redirect
save完了したときなどはとにかくredirectしてる。メッセージ出してあげた方が親切なんじゃ・・・
$this->flashもインデックスには載っていないのでry(Session->flashは載ってた)
ちなみにredirectについてTipsで「redirectはうまく動かない場合もあるので、そういうときはphp.iniを修正」という
解説が載っている。問題起きやすいのならとりあえずflashでいい気がするけど・・・
・beforeFindの実践例で「limitやorderが設定されていなかったらデフォの設定で上書き」というもの
limitはともかくorderは普通にmodelで設定できるからbeforeFind使わないでも・・・
・VALID_NOT_EMPTYは1.2まで使われていたバリデーション用の定数という説明
1.2の時点で非推奨になっていたような・・・(ちょっと自信なし)
・ユーザーデータ用のテーブルがPersonalsテーブル
形容詞じゃなくて名詞でUserテーブルとか、Peopleテーブル(Personモデル)とか・・・
・<a href="/cake/sample/boards/edit/<?php echo $id; ?>">※この投稿を編集する</a>
$html->linkが嫌いなのか、後半を見ても基本的に直でHTML書いてます
ルーティング使うときとか便利だし、とりあえずhtml->link使うように教えた方がいい気がします
・記事を見るのはshowアクション、投稿者のデータを見るのはshow2アクション
さすがにshow2はないんじゃないでしょうか
なんか昔のcgi説明サイトを思い出しました
0274241
2010/08/26(木) 00:45:18ID:???if(!empty($this->data)) {
$this->Board->save($this->data);
}
if($this->Board->validates()) {
$this->redirect('.');
}
検証してないんですが、たぶんこれだと2回バリデーションが行われるんじゃないでしょうか
if(!empty($this->data)) {
if($this->Board->save($this->data)) $this->redirect('.');
}
とかでいい気がします
誤植
・P78 bloards_controller
・P168 コードの方はnotEmptyになってるけど、解説文がVALID_NOT_EMPTY
もうポストイットがもったいない気がしてきた。
0276nobodyさん
2010/08/26(木) 01:41:03ID:???デザイナから上がってきたAタグを$html->linkに置き換えるのは面倒。
どんな属性が入ってるかわからんからその都度optionsに入れる必要がある。
だから href="<?php echo $html->url(array(......))"って書き換えるようにしてる。
0277Perl忍者 ◆M5ZWRnXOj6
2010/08/26(木) 07:17:20ID:/qgtmxHg真似しかできないwwwwwww
Perlの真似
0278nobodyさん
2010/08/26(木) 11:14:50ID:???0281241
2010/08/26(木) 14:05:08ID:???>>273の言うように、買う価値がないと伝わればそれで十分だし。
アマゾンとかブログで書くと個人特定されちゃうしね。
もう秀和システムの本は買わない。
0282nobodyさん
2010/08/26(木) 22:30:09ID:???・・・ver1.1から使ってて基本はわかってるし
あとはネットの情報で補完していくのが利口みたいだね。
0283nobodyさん
2010/08/26(木) 23:15:45ID:bJUkFpkICakePHPのURIって、以下のように成っていかと思いますが、
http://hoge.com/~piyo/home/コントローラー名/アクション名
http://hoge.com/~piyo/home ←この部分を定数にしたいです。
http://hoge.comは、FULL_BASE_URLという定数が用意されているので、取得できるのですが
取得する方法を知っている方は、教えてください。
0284nobodyさん
2010/08/26(木) 23:43:37ID:???0285nobodyさん
2010/08/27(金) 01:57:26ID:???htmlの中にPHPが大量にそのまま混ざってるって、ちょっとありえない
お前らその辺はあきらめて使ってるわけ?
0286nobodyさん
2010/08/27(金) 02:13:56ID:???とか
<?php foreach ($arr as $foo):?>
<?php endforeach;?>
とか
<?php echo $this->element('bar');?>
くらいしか殆ど描かないんだけどいやなの?
いやならsmartyつかえばいいけど
0287nobodyさん
2010/08/27(金) 02:24:01ID:???0288nobodyさん
2010/08/27(金) 02:25:46ID:???PHP?なにそれ?って奴に頼んでるのかお前は
テンプレートエンジンのループなら意味解るけどfor文だとさっぱりとか言う奴の方がむしろおかしい
どうせツールで読み込めば<??>タグなんて無視されるんだし
0289nobodyさん
2010/08/27(金) 10:27:21ID:eU+Zo85kViewでソートをする場合
<?php echo $paginator->sort('ID', 'User.id');?> と書きます。
1:アソシエーションしているモデルを選択している場合、モデル名が必要ですが、
Userというモデル名を書きたくないです。書かずにソートさせる方法はありますか?
2:ソートをクリックした後、URLがsort:User.idのようになりますが、
カラム名がURLに表示する事に違和感を受けます。
数字などに置きかえ出来ないでしょうか?
0290nobodyさん
2010/08/27(金) 10:38:44ID:???0291nobodyさん
2010/08/27(金) 10:40:57ID:???オレオレに戻るのはいかがなもんかとおもうけどな
0292nobodyさん
2010/08/27(金) 10:44:42ID:???0293nobodyさん
2010/08/27(金) 10:59:30ID:???俺はHTMLヘルパーを極力使わないようにして、ソースをシンプルにしてるよ。
デザイナーに見せたら「わかりやすいです」と言っていた。
あとは、>>286みたいに必要なコードだけ教えれば大丈夫だろ。
>>289
nanapiも普通にURLがsort:Search.pvとかなってるし、
気にしなくても大丈夫じゃねぇ?問題あったらこのやり方採用してないだろうし。
0294nobodyさん
2010/08/27(金) 13:25:24ID:???そういう場合ってcakephpのpaginate使えないんだけど、みんなどうしてる?
0296nobodyさん
2010/08/27(金) 13:30:44ID:???1.paginateの結果(キーになる部分のみ)を変数に格納
2.キーをもとにプログラムで計算して、結果を変数に追加
3.編集した変数をsetでviewに渡す
0297nobodyさん
2010/08/27(金) 13:40:06ID:???計算ってどんな?
0299nobodyさん
2010/08/27(金) 14:29:06ID:???そこをルートとして使ってるのなら、普通にそのまま
define("ROOT_URL", "http://hoge.com/~piyo/home")
とかでいいじゃん
>>293
今すぐセキュリティの問題が出るというわけでもないだろうけど、
裏側の情報はあまり見せたくないという気持ちは俺にもわかる
特にsort:User.idみたいなのだと、そのまま中身が見られている
感じがして気持ち悪い
0301nobodyさん
2010/08/27(金) 14:42:02ID:???0302nobodyさん
2010/08/27(金) 15:05:12ID:???ありがとう。
user テーブル 1
id , name
shiken テーブル 多
id user_id tokuten
の関係で、「平均点で50点以上のユーザーのみ取得したい」
とか言う場合なんだけど。
join だと複雑な書き方がいまいちわからず、cakephp1.2なので virtualField使えず。
afterFind でできるならそれが一番楽だと思うんだけど。
一度上記全てをググって勉強してみます。
ありがとう。
0303299
2010/08/27(金) 15:09:18ID:???1.URLはorder:idとかにして、beforeFilterあたりでparams['named']['order']を見て、
モデル名がなければモデル名を付加するとか
2.URLはorder:0とかにしておいて、bedoreFilsterあたりで、0=>id, 1=>createdみたいな
対応表を使って差し替えるとか
cakeのURLはシステム的にわかりやすいけど、ユーザーに見せるURLとは
ちょっと違う気がするんだよなあ
URLがシステム的にわかりやすいと、URLを書き換えて意図しないURLで
アクセスされちゃったりということもあるだろうし
そういうところはきちんと事前に想定して防げばいいんだろうけど、それでも
なるべくユーザーからはシステムは見えなくしたい
0304299
2010/08/27(金) 15:34:45ID:???$paginator->sort('ID', 'User.id');で作られるURLは、order:User.idじゃなくてsort:User.idだな
今試したらアソシエーションしたモデルでorder:idでアクセスするとエラーになるけど
sort:idでアクセスしたら、勝手にモデル名が補完された
なので、モデル名出したくないのなら$paginator->sort('ID', 'id');でいいんじゃない?
アソシエーションした他のテーブルのカラムでorderしたい場合は知らん。
0305nobodyさん
2010/08/27(金) 16:17:00ID:???その場合はやっぱり$paginator->sort('ID', 'User.id');こうなるんじゃないか?
0306299
2010/08/27(金) 16:24:42ID:???tourokujunだったらUser.idに書き換えるとか
0307305
2010/08/27(金) 16:56:58ID:???if (isset($this->params['named']['sort'])) {
if ($this->params['named']['sort'] === 'user_id') {
$this->params['named']['sort'] = 'User.id';
}
}
}
適当にこう書いてみたけど、こんな感じのエラーが出るね。
SQL Error: 1054: Unknown column 'User.user_id' in 'order clause'
これ以上テストするのもめんどいので後はしらねw
0308299
2010/08/27(金) 17:45:25ID:???if (isset($this->passedArgs['sort'])) {
if ($this->passedArgs['sort'] === 'user_id') {
$this->passedArgs['sort'] = 'User.id';
}
}
これで動いた
っていうか>>289は他のテーブルのカラムでソートしたいのか?
0310299
2010/08/27(金) 20:28:29ID:???他のテーブルのカラム指定してもOK
ただ、存在しないカラムを指定するとエラー表示せずにそのままorderなしでSQL発行するみたい
0311nobodyさん
2010/08/27(金) 20:41:40ID:???ソート扱いになっていないみたいなんだが。
0312nobodyさん
2010/08/27(金) 20:48:56ID:???0313311
2010/08/27(金) 20:49:55ID:???308の内容を同じ1.3.3で試してみたけど、確かに1回目のOrderは適応される。
でも、ソートのリンクをクリックしたら並び替えされないし、
対象リンクのマーク(↓↑)が適応されていないよ って事を言いたかった。
308以上の事をしていたら知らんw
0314299
2010/08/27(金) 21:01:05ID:???そりゃあ、pagination helperで出力する内容は変わらないだろ
そっちはそっちで整合するように修正すりゃいい話で
んで>>289,>>305,>>309,>>311,>>313は同一人物なのか?
0315nobodyさん
2010/08/27(金) 21:07:32ID:???書き下手で済まんな・・。
だから要件を満たしてないのでは?って言いたかった。
ちなみに309,311だけど。
0316nobodyさん
2010/08/28(土) 14:08:58ID:???0317Miyagawa ◆M5ZWRnXOj6
2010/08/28(土) 16:50:11ID:kvWFLXrw0318Miyagawa ◆M5ZWRnXOj6
2010/08/28(土) 16:56:12ID:kvWFLXrw死ね!
0319nobodyさん
2010/08/28(土) 16:58:16ID:???0320Miyagawa ◆M5ZWRnXOj6
2010/08/28(土) 17:10:47ID:kvWFLXrw0321宮川マンセーオタ ◆M5ZWRnXOj6
2010/08/28(土) 17:12:21ID:kvWFLXrwノ´::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ
(:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ
(:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヽ
(:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::)
(:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::)
ヽノヽノヽノノヽノヽノノヽノヽノノヽノヽ、::::::::::::::::)
| ,,;;;;;;;;;;;;;;,,,,,, )) ( ,,,,;;;;;;;;;;;;;,,,, `ヽ、;;;;;;;;::)
|| ̄ ̄ ̄ ̄ ̄|____| ̄ ̄ ̄ ̄ ̄| /~~ヽノ:::)
|| -=・=- 0⌒0 -=・=- | ̄´ ´~) );;::)
|\___/ノ ミ\___/ヽ つ, ノ;;;:ノ
| ´ ./ 、´ ` (_ノ;;;ノ
< (。、 。) >;;;;::ノ
\ ノ`∪´ ヽ、 /|;;;;ノ
| ....(/~~~~~~~\).... 彡 |ノ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ( ̄ ̄~~~ ̄ ̄) | イ < 宮川さんを馬鹿にするのはやめませんか?
| ~~ ̄`´ ̄~~´ / | \______________
\ .....´⌒`...... / |
_|\_;;;;;;;;;;;__/ |__
__/;;;ノ /;;;;;;;;;;;;\___
/;;;;;;;;;;;;/;;;;\ ./;;;;;;;;;;;;;;;;;;;;;;;;;\;;;;;;;;;;;\
0322nipotan ◆M5ZWRnXOj6
2010/08/28(土) 17:14:12ID:kvWFLXrw/ ____彡
/::::::/━ ━ \
/:::::/ _ _ |
|::::/--((・))―((・))(
(6  ̄ つ  ̄ ヽ
| ___ | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ∴)\_/ (∴ | < こら、宮川さんとか馬鹿にするのはやめろ
ヽ ― 丿 \________
\_____/
0323nobodyさん
2010/08/28(土) 17:19:32ID:???0324Perl忍者 ◆M5ZWRnXOj6
2010/08/28(土) 17:27:39ID:kvWFLXrw∠ ̄\∩
|/゚U゚Lノ くたばれとか暴言やめろ
〜( ニ⊃
( 丶/
ノ>ノ
UU
0325nobodyさん
2010/08/30(月) 02:24:39ID:???具体的に言うと、あらかじめ作成しておいたHyperestraierのインデックスを使って、
サイト上の検索窓から検索させたいです。
APIとしては、EstraierPureをapp/vendors配演コに設置しましbス。
しかbオ、以下をどうbキればよいか分bゥらず、止まっbトいる状態です=B
(1) Hyperestraierのノードをどこのディレクトリに格納すればよいか
とりあえず/home/user/public_html/estraierディレクトリ配下にcasketを
格納したものの、ノードのURLとしては正常に機能していない状態のようです。
http://localhost/~user/estraier/casket
とすると、"Missing Controller"というCakePHPのエラーが出ます。
とりあえず、ここに質問する前に参考にしたサイトを挙げます。
■cakephpでhyperestrailerによる検索(CGI)
http://d.hatena.ne.jp/oggata/20100406/1270540127
■EstraierPure
http://page2.xrea.jp/#EstraierPure
■EstraierPureのapp/vendorsへの配置方法について
http://www.and-works.co.jp/wp/archives/66
http://book.cakephp.org/ja/compare/539/Vendor-examples
環境は以下の通りです。
CakePHP: 1.3.0-beta
Hyper Estraier 1.4.9 on Linux
EstraierPure: 0.6.0
0326nobodyさん
2010/08/30(月) 05:34:09ID:???0327nobodyさん
2010/08/30(月) 21:41:40ID:???0329325
2010/08/31(火) 00:42:33ID:???>>327
betaが出た頃にインストールして、支障がなかったのでそのまま使っています。
あれから、HyperestraierのDBとノードを混同しているらしい事に気づきました。
とりあえず別途、Hyperestraierのノードを起動してから試してみようと思います。
0330nobodyさん
2010/08/31(火) 19:00:53ID:???0331Perl忍者 ◆M5ZWRnXOj6
2010/08/31(火) 21:18:35ID:NL5nyoqMレ|::|::::::::::::'、::::::N j/ ノ,、_`__> }:::::::i`i::ト-'´-
i::|、::::::ハ{`、:::{ ー夂_,ノイ:::::ノ ノ、j: : : : :
j_ハ`、 { `ヾ `、\ ノ / ー'´___,ィ ム'´i j-―ー--
}::!'i、`、ー=r==、 ` 、 / ,r='ラ ̄// i`ソ/: : : : : : : :
'、`ハ \_`ー'´\ 、_ i i /__`´__ノノ ム'/、__: : : : : : :
r')、゛'、  ̄二ニ´ 、`= /´ニ二 ̄ レ':::r'´'、: : : : : :
r-、_!厶`Ti、 ` /:::::トv':.:.:.:.iー- ..__
/ j .V レ、 , ハ∧j:.:.:.:.:.:.:.\:.:.:.:.:
_ノ i / |ハ!`、 _ `ー' _,.r / |:.:.:.:.:.:.:.:.:.:.:.:.:.:.:
r-‐'´ |/ |' `ヽ、 ̄ ̄二二 ̄ ,.イ |:.:.:.:.:.:.:.:.:.:.:.:.:.:.
r-‐/ i | i`ー..._ ,.. -'´/ |:.:.:.:.:.:.:.:.:.:.:.:.:.:.
なにこのスレ・・・しねよ
0332nobodyさん
2010/08/31(火) 23:13:39ID:???0333nobodyさん
2010/09/01(水) 10:40:36ID:???0334nobodyさん
2010/09/01(水) 10:47:09ID:???0335nobodyさん
2010/09/01(水) 10:56:06ID:???0336nobodyさん
2010/09/01(水) 11:14:10ID:???0337nobodyさん
2010/09/01(水) 11:19:23ID:???PHP Matsuri
2010年10月2日・3日開催のPHP開発合宿イベント
参加登録始まってます
0338nobodyさん
2010/09/01(水) 11:26:16ID:???0339nobodyさん
2010/09/01(水) 12:14:15ID:???0340nobodyさん
2010/09/01(水) 12:30:22ID:???0341nobodyさん
2010/09/01(水) 14:13:54ID:???0342nobodyさん
2010/09/01(水) 14:28:13ID:???0343nobodyさん
2010/09/01(水) 17:53:25ID:???0344nobodyさん
2010/09/02(木) 16:10:42ID:???0345nobodyさん
2010/09/02(木) 16:19:21ID:???INSERTとかUPDATEとかそう言う構文じゃなくて、概念として。
0346nobodyさん
2010/09/02(木) 20:09:48ID:???0347nobodyさん
2010/09/02(木) 21:17:01ID:???コードでガシガシ書いて品質落とすはめになるとか、よく見る。
ただでさえPHPは危険なコードを書きやすいし。
0348nobodyさん
2010/09/02(木) 23:08:37ID:???SQLインジェクションが大手サイトで未だに多いのも、それだろうね。
0349nobodyさん
2010/09/03(金) 01:14:46ID:???まともな奴でそんな事言ってるの小飼弾くらいだろ
0350nobodyさん
2010/09/03(金) 02:05:24ID:???危険というか、無限ループだけど。
0352nobodyさん
2010/09/03(金) 08:16:34ID:???昔よくあったクソみたいなPerlCGIはなんだったのみたいな
0353nobodyさん
2010/09/03(金) 08:49:05ID:???セキュリティホールが生まれやすいって部分に関しては特に言語に優劣があるわけじゃないと思う。
強いて言えばメモリ関連も自分でやらなきゃならんC/C++が多少不利なくらいでしょ。
0354nobodyさん
2010/09/03(金) 09:50:17ID:???0356nobodyさん
2010/09/03(金) 12:18:04ID:???0358nobodyさん
2010/09/03(金) 17:44:25ID:???0359nobodyさん
2010/09/03(金) 17:54:12ID:???0360nobodyさん
2010/09/03(金) 21:43:21ID:???0361nobodyさん
2010/09/04(土) 03:07:07ID:???validationルールで、numericまたはdecimalってのはどう書けばいいんでしょう
複数ルールのANDは並べればいいらしいけどORがわからない
0362nobodyさん
2010/09/04(土) 10:47:54ID:???0363nobodyさん
2010/09/05(日) 00:03:21ID:???http://www.amazon.co.jp/dp/4434147463/
これ立ち読みしてきた
159ページしかないのに3780円もしてビックリした
内容は簡単なECサイトのチュートリアルという感じで、詳しい部分には突っ込んで書かれていない
サンプルコードも「こんなので大丈夫なのか?」と思うような記述がちらほら
なんか書籍は最近不作ね
1.3のオフィシャル本が出ればいいのに
0365nobodyさん
2010/09/05(日) 01:42:24ID:???せめてphpshotのPHPエディタだろw
0366nobodyさん
2010/09/05(日) 03:15:36ID:???0367nobodyさん
2010/09/05(日) 15:21:03ID:???■ このスレッドは過去ログ倉庫に格納されています