【PHP】フレームワーク CakePHP 13ホール目【v2.0】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん
2011/11/09(水) 01:05:10.60ID:???CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※他フレームワークとの比較等はスレ違いです
テンプレは>>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
前スレ
【PHP】フレームワーク CakePHP 12ホール目【笑】
http://hibari.2ch.net/test/read.cgi/php/1309505626/
0826nobodyさん
2012/03/25(日) 23:49:03.03ID:???みたいな事をしてURLを生成しているのですが、
パラメータ部分を予め設定しておく事は出来ないのでしょうか?
0828nobodyさん
2012/03/26(月) 18:44:48.32ID:+fypSFERformタグのidが重複しちゃうけど、どうやって回避するのがスマートかな
今はform->createでid指定して別名にしてるけど、あまりスマートに思えない
0829nobodyさん
2012/03/26(月) 19:11:54.92ID:???最初は便利なのかなと思ったけどしばらくいじって思い通りにいかないから
ないものとして普通にformタグ書くようにしたら能率上がったわ
0832nobodyさん
2012/03/27(火) 01:42:43.77ID:J3nZuwJgエラーが出たフォームの上(下だっけ?)にメッセージが表示されるけど
任意の場所に表示したい場合はどうしてる?
0833nobodyさん
2012/03/27(火) 03:37:14.44ID:???0834nobodyさん
2012/03/27(火) 14:05:24.25ID:???は使えないのでしょうか?使える場合は書き方を押してください
0835nobodyさん
2012/03/27(火) 14:37:07.94ID:???0836nobodyさん
2012/03/27(火) 17:57:15.57ID:???cakephpのコミュニティで質問すれば。
http://cakephp.jp/modules/newbb/index.php
0838nobodyさん
2012/03/28(水) 22:39:25.33ID:???編集でidが2つある場合、URLが/post/edit/1/2
みたいになるけど、これってわかりづらいよね。
ピュアPHPの、edit.php?parent_id=1&id=2の方が分かりやすい気がする。
まぁ、Cakeでは/edit/parent_id:1/id:2 というURLにはなるんだけどさ・・・
0839nobodyさん
2012/03/28(水) 22:40:41.18ID:???ID=一意に表すもの
だし1つで表せないとしたらそれはIDじゃない
1つで表せるならURLに含ませる必要ない
0840nobodyさん
2012/03/28(水) 23:05:18.11ID:???別々のものに同じidが割り振られているのはおかしいが、
ひとつのものに二つ以上のidが振られているのは問題なくね?
0841nobodyさん
2012/03/28(水) 23:10:52.27ID:???問題ないけど、2つ持たせる意味がわからないし、
仮に持たせたとしてもそれをURLに含ませる意味もわからない
0842nobodyさん
2012/03/28(水) 23:15:51.51ID:???管理画面があったとして、
ユーザID・1が投稿したお知らせのID2を見たいとする。
ピュアPHPなら、edit.php?user_id=1&id=2だよな?
Cakeなら/edit/1/2か/edit/user_id:1/id:2だな。
セッションに含めて持ち回る方法もあるけど、
毎回セッションに入れるのはおかしくないか?って思うからさ。
0843nobodyさん
2012/03/28(水) 23:24:56.61ID:???じゃだめなの?
0844nobodyさん
2012/03/28(水) 23:32:10.02ID:???Cakeの書き方で言えば、
/news/add/1 この1はuser_idの1
/news/edit/2 この2はidの2
URLを見ただけでは混乱する
0845nobodyさん
2012/03/28(水) 23:46:26.83ID:???0846nobodyさん
2012/03/28(水) 23:58:08.70ID:???0847nobodyさん
2012/03/28(水) 23:59:20.33ID:???ほんとに?自分だけで分かるからOKって考え方なの?
ちなみに、/edit/1/2みたいな書き方はBaserCMSでもやってた
0848nobodyさん
2012/03/29(木) 00:03:50.49ID:???Router::url('/news/edit/' . $data['Newsr']['userid'] . '/' . $data['News']['id'])
になるわけだし。単なるURL上での事ならこだわる必要ないかな。
外部に公開するわけでもないし。
0851nobodyさん
2012/03/29(木) 00:19:24.06ID:???URLでなんのページかわかりやすくしようというのは、ユーザビリティの面からも正しい考え方だけど
この件に関しては>>844の書き方で充分わかりやすいといえる範疇だと思う
0852nobodyさん
2012/03/29(木) 04:02:59.81ID:???>Cakeなら/edit/1/2か/edit/user_id:1/id:2だな。
誰がこんなこと決めたの?
Cakeだって/edit?id=1&id=2ってやるだろ。
0853nobodyさん
2012/03/29(木) 10:57:51.78ID:???0854nobodyさん
2012/03/29(木) 22:50:57.56ID:???0855nobodyさん
2012/03/29(木) 23:14:23.59ID:???usernameなら/news/tanaka_ichiro/123みたいな感じで含めてもいいと思うけど
どうしてもuser_idもidも含めたいのならnamedパラメータ使って/news/user_id:1/id:2とかにする
0856nobodyさん
2012/04/01(日) 00:45:58.67ID:OiSFrCKx1.x系の場合コントローラに
function beforeFilter(){
//携帯なら
if($this->Ktai->is_ktai()){
Configure::write('App.encoding', 'SJIS');
$this->layout = "mobile_layout"; //charset=shift_jis"
}else{
って書けばブラウザのエンコードが既存の「UTF-8」から「SJIS」に切り替わるのに2.x系だと「UTF-8」のまんまだ。。。
かなり嵌ってるんだけど分かる人いるかな?
てか俺の環境がおかしいのかな??
0857nobodyさん
2012/04/01(日) 02:38:57.47ID:???設定したことないから知らないが
ヘッダーはutf8とsjisどっちなの?
0858nobodyさん
2012/04/01(日) 03:16:24.89ID:OiSFrCKxPCと携帯でエンコードを分岐したくて
PC -> UTF-8 携帯 -> shift_jis
core.php自体に記述しているのは
Configure::write('App.encoding', 'UTF-8');
なんだけど、携帯のページを表示するときは
beforeFilterでConfigure::write('App.encoding', 'SJIS'); に変更してます
cakephp1.3だとこの設定でブラウザのエンコードはshift_jisに変更されるんだけど
2.x系だとUTF-8のまま。。。
core.php自体をConfigure::write('App.encoding', 'UTF-8');に書き換えると
ブラウザのエンコードはshift_jisに代わるんだけどcore.phpだと分岐処理書けないから困っています。
2.x系だと別の処理が必要なのかな?
0859nobodyさん
2012/04/01(日) 03:18:29.30ID:OiSFrCKx>core.php自体をConfigure::write('App.encoding', 'UTF-8');に書き換えると
上記は
Configure::write('App.encoding', 'SJIS');の間違いです。
誤植すいません。。。
0860nobodyさん
2012/04/01(日) 17:58:24.58ID:???ケータイ対応したいならこういう感じに書いたら?
http://webengineerlife.com/2012/02/08/cakephp-pc-mobile/
0861nobodyさん
2012/04/02(月) 00:51:25.23ID:ZyijX88yありがとう
ちょっと試してみます。
携帯ライブラリとか使って複雑になってるのも原因の1つかもです。。。
0862nobodyさん
2012/04/03(火) 18:18:51.92ID:???そしてhavingってめちゃくちゃ便利だな。
これのお陰でDBの設計が楽になった。
0863nobodyさん
2012/04/04(水) 18:16:19.49ID:???表示(コントローラからset)の場合は、個別でサニタイズしなきゃいけないんだな
この点忘れてた・・・
0864nobodyさん
2012/04/05(木) 00:28:36.65ID:???ローカルのxampp環境でmodelがbake出来ないんですけど。。
cliのphpが「問題が発生したため・・・」になる
0865nobodyさん
2012/04/05(木) 23:35:57.76ID:???テーブルFoosのflagがonのものだけ取り出したいとき、
'conditions' => array(
'Foo.flag' => 'on'
),
と書いてできたんですが、
Foosのflagがonでかつ、
Foosのlawと同じ値のBarsテーブルのidの、deleteがoffのもの、というのを条件にしたい場合どう書けばいいでしょうか?
具体的には、
Foosのテーブルには商品リスト、Barsには業者データがあり、
取り扱っている商品、でかつ、倒産していない業者、の商品リストだけ取り出したいのです
よろしくお願いします
0866nobodyさん
2012/04/06(金) 01:33:16.23ID:???面倒なのでレンタルサーバにリモートプロジェクトとしてEclipseでバンドして
作業してるんですが、こういった開発手法ってNGでしょうか?
0867nobodyさん
2012/04/06(金) 11:00:58.23ID:???0868nobodyさん
2012/04/06(金) 11:22:58.85ID:???ローカルとサーバで2度設定をする手間を考えるとやはり
直接サーバ上でコードをいじった方が効率が良いと思うんだよね。
0870nobodyさん
2012/04/07(土) 00:51:33.09ID:4OZyxrY6さくらインターネットに設定しようと思っているのですがどうしてもうまくいきません。
http://mori.moripower.jp/eqwip/cakephp/370.html
どの部分でエラーが起きているか追いかけてみたところ
/home/user_name/www/app1/index.php
において、下記判定処理でインクルードに失敗していました。
if (!include(CAKE_CORE_INCLUDE_PATH . DS . 'Cake' . DS . 'bootstrap.php')) {
bootstrap.php自体のパスは下記が正の筈なので
直接(べた)書きで試してみましたがやはりダメでした。
(bootstrap.phpの権限を 755に設定してもダメ)
/home/user_name/cake/lib/Cake/bootstrap.php
どなたか同じ様な体験をされた方はいませんでしょうか?
0871nobodyさん
2012/04/07(土) 01:04:14.05ID:ET0rgidW0873nobodyさん
2012/04/07(土) 01:52:28.91ID:???>>870
に記載のURL通りに指定しております。
ちなみに bootstrap.php の中では定数等を定義しているだけの様なのですが
このファイルの読込は、CakePHPの実行には必須なのでしょうか?
また、さくらインターネットにおいて、最新のCakePHPの導入が出来る様に
解説したサイトをご存じでしたらお教えください。
どうも私の方でぐぐってヒットするサイトは
2・3年前の古い物ばかりで最新のCakePHPには即していない様です。
0874nobodyさん
2012/04/07(土) 09:38:19.35ID:PHPJ9271>bootstrap.phpは必須か?
bootstrapは、起動時の設定をまとめたりしてるもんなんで必須なはず
おまいさんのスキルが見えないので余計なアドバイスかもしれないがとりあえず、CAKE_CORE_INCLUDE_PATHの内容を調べてみてどうよ?
0876nobodyさん
2012/04/07(土) 11:21:45.79ID:???ぬかったわ。。。
0877nobodyさん
2012/04/07(土) 12:05:32.12ID:???定義された内容でもって直接includeしたのですが
それでもダメでした。
もうちょっといろいろと試してみます。
0878nobodyさん
2012/04/07(土) 12:43:18.13ID:???CakePHP って途中で開発終了の可能性は他のFWと比べて高いですか?低いですか?
0879nobodyさん
2012/04/07(土) 12:54:05.32ID:???1つ言えることは、ZFに比べたら確実に高いということぐらい。。
0880nobodyさん
2012/04/07(土) 13:09:04.61ID:???終了してしまったら学習コストの無駄になるのを恐れている。
やっぱしZFの方が無難かな?
0881nobodyさん
2012/04/07(土) 13:23:49.88ID:???0882nobodyさん
2012/04/07(土) 14:05:56.13ID:???自分の脳みそのしわを増やすのにコストで考えるのはわからんw
浅く広くでもどれでも触って使えるようになっとけばいいよ
0883nobodyさん
2012/04/07(土) 16:48:09.15ID:???0884nobodyさん
2012/04/07(土) 18:01:43.94ID:???$this->dataを一括でサニタイズする処理をするか、
確認ページのビューで<?php echo h($this->data['Post']['name'])?>
みたいにするかどちらかだと思っているのですが、
他に良い方法や考え方はありますでしょうか?
0885nobodyさん
2012/04/07(土) 18:21:39.17ID:???0886nobodyさん
2012/04/07(土) 23:59:10.64ID:???0887nobodyさん
2012/04/08(日) 10:36:25.86ID:4ALRLsfwうぉ!自分で書いてて気づかなかった。IDの仕組み分からんからこの書き込みIDどうなるか分からん。。。
>>884
ビューでエスケイプ。責任をしっかり分けておかないと後で後悔する
0888nobodyさん
2012/04/09(月) 01:52:30.87ID:???さくらじゃなくてxreaとかcoreserverとかの設置方法見たら?
/home/username/cakephp
/home/username/www
という感じに分けて、コアファイルをパブリックに置かないようにするのは一緒だよ
xreaだと
/virtual/username/cakephp
/virtual/username/public_html
とかになるけど
0889nobodyさん
2012/04/09(月) 11:26:19.21ID:gWXPCP/Cローカル(mac)の環境ではファイル名を小文字のみ(example.php)にしても読み込まれるのですが、
サーバー(centos)では一文字目を大文字(Example.php)にしないと読み込まれません
最新のCakephpはモデルのファイル名が大文字で始まるようなのですが
ローカル環境では小文字でも動いています
これはapacheの設定かphpの設定かosの設定なのでしょうか!?
0890nobodyさん
2012/04/09(月) 12:26:26.44ID:???0891nobodyさん
2012/04/09(月) 13:37:22.79ID:???マルチドメインにて設定したパスに、アクセスしてみたところ
一応CakeFW自体は正常に動作している様に見受けられるのですが
(CakePHP:the rapid development php framework が表示されました。)
/home/{user_name}/www/multi_domain_directory
下記CSSがあたっていません。
<link rel="stylesheet" type="text/css" href="/css/cake.generic.css" />
ソースを開きその中のCSSの読込をクリックすると
本来は app/webroot/css/cake.generiuc.css
が認識されないといけないハズなのですが webroot/css が認識されないです。
どうすればCSSが正常に認識される様になりますでしょうか?
※一応CakeFWを追いかけると lib/Cake/view/Helper/HtmlHelper.php / function css()
にてロードをやっている様なのですが
こちらは、FW本体なので手は入れたく無いです。
0892nobodyさん
2012/04/09(月) 16:51:20.49ID:gWXPCP/Cおーこれだ
macのファイルシステムがHFS+ってのでこれが大文字小文字区別しないんですね
半日も嵌ってしまたけど勉強になった
どうもです
0893nobodyさん
2012/04/09(月) 17:02:12.28ID:???>>721でindexアクションを作ればプラグイン名のみでアクセス可能となりますが、
/pizza/addの場合、エラーになります。/pizza/indexでもエラーです。
プラグイン内のコントローラを参照しているからこうなると思うのですが、
プラグインで/pizza/addとか/pizza/editのアクション指定したい場合は、
ルーティングをいじらないといけないのでしょうか?
0894nobodyさん
2012/04/09(月) 20:13:47.19ID:???0895nobodyさん
2012/04/10(火) 11:26:36.93ID:???「$content_for_layout」の内容のみキャッシュしたいのですが、
どうすればいいのでしょうか?
0896nobodyさん
2012/04/10(火) 12:05:36.17ID:???→ Error: 23423Controller could not be found. ←
こーいうエラーメッセージを表示せずに
存在しないページ、URLでアクセスされた場合には
事前に用意したエラーページ(メッセージ)を表示したいのですが
どうすればよいでしょうか?
0897nobodyさん
2012/04/10(火) 12:24:22.68ID:R7ZoSsIJ0898nobodyさん
2012/04/10(火) 13:53:53.12ID:???マイグレーションガイドぐらいは読もうぜ
http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html#request-handling-get-url-and-htaccess-files
0899nobodyさん
2012/04/10(火) 15:35:48.29ID:???0900nobodyさん
2012/04/10(火) 15:45:33.60ID:???インプットの値が自動で上書きされるのに、
GETフォームだと、空のままなんですが、
自分でマージするしかないのでしょうか・・・?
$this->request->data = $this->request->query;
とやってもダメでした。
0901nobodyさん
2012/04/10(火) 16:19:05.60ID:???layoutのcontent_for_layout以外のところをnocacheでくくってみたら?
>>900
getでもフォームの内容は引き継がれるはずだよ
遷移先のフォームのIDとかnameが変わっちゃってない?
0903864
2012/04/10(火) 23:50:19.65ID:???http://d.hatena.ne.jp/kanonji/20090819/1250655003
↑のとおりdll書き換えてCLI落ちなくなった
0904nobodyさん
2012/04/11(水) 10:44:38.27ID:???cakePHPのヘルパーを使って画面遷移させようと
しているのですが、出力されたリンクに関係ない文字列(ここでは、 /app )
が勝手に付加されてしまい困っています。
<?php echo $this->Html->link('JUMP', '/jump', array('class' => 'button', 'target' => '_self')); ?>
ここでは、本当は (B)の形でhtmlを出力したいです。どうすれば良いでしょうか?
(A) <a href="/app/jump" class="button" target="_self">jump</a>
(B) <a href="/jump" class="button" target="_self">jump</a>
0905nobodyさん
2012/04/11(水) 16:48:45.18ID:???会員のパスワードは暗号化されるので、通常のログインでは無理です。
こういう場合って、単にAuthのセッション情報を付与して
会員ページにリダイレクトするだけでしょうか?
0906nobodyさん
2012/04/11(水) 18:45:08.55ID:???嫌な仕様だなw
会員ページのメンテナンスとかしたいなら管理者権限でそう言うのできるアクションを
作ればいいのでは
0908864
2012/04/11(水) 22:08:14.47ID:???cakeでの/はcake_appのルートになるからその動作が適切だよ
普通にHTMLで
<a href="/jump" class="button" target="_self">jump</a>
って書けばいいじゃん。
もしかしたら
'/../jump'で解釈してくれたりしないかな?知らないけど
0909nobodyさん
2012/04/11(水) 22:08:55.22ID:???0910nobodyさん
2012/04/11(水) 22:12:31.92ID:???吐き出されるのはこうなるけど
<a href="/app/../jump" class="button" target="_self">jump</a>
0911nobodyさん
2012/04/11(水) 22:50:15.55ID:Ko+Ap9VUroutingのprefixかなんかで特殊な設定してない?
appという文字列がどこからやってきたのか検討もつかない状態なの?
>>905
Authでログインしようとしても無理だと思うので>>906でいいんじゃない
0912nobodyさん
2012/04/11(水) 23:12:38.64ID:???cakePHPをせっかく使っているので直接書きはしたくないです。
>>911
基本的にcakePHPのベースコードは何もいじっていないのですが
FWにデバッグコードを入れておっかけてみます。
>>907
お前の投稿自体マルチだろ。しね。
0913nobodyさん
2012/04/11(水) 23:16:31.45ID:???あれ?cakeルートがサーバーのウェブルートで無い場合に、
Html->link()つかってサーバールートへリンクしたいってことじゃないの?
つまり、サーバールートの下にappってディレクトリがあってそこがcakeのルートになってるんじゃないの?
0914nobodyさん
2012/04/12(木) 12:04:20.30ID:???どこに定義しますか?
パスを教えてください。
Utility的な自己ライブラリを定義したいと考えています。
0915nobodyさん
2012/04/12(木) 12:18:39.89ID:???外部にしてincludeか
0916905
2012/04/12(木) 13:56:49.96ID:???私も管理画面に会員情報を編集できるページを作っていたのですが、
管理画面から対象の会員としてログインし、
会員情報の修正をしている市販CMSを結構見るんです。
たぶん、同じような箇所を管理画面用・会員用と分けて作るのは
手間がかかるからログインし直すという事で対処していると思うのですが、
あまり良いやり方ではないみたいですね。
0917nobodyさん
2012/04/12(木) 18:05:37.36ID:???0918nobodyさん
2012/04/13(金) 01:19:58.45ID:???vendorにライブラリとして突っ込む
>>916
ユーザーが実行できる範囲の行動を管理者が行うという前提であれば
手抜きの方法としてナシではないのかもしれないけど、スマートでないのは確か
というかユーザーが修正できるんならユーザーに修正させるべきじゃね?
管理者がユーザーの設定代行するって言うのはかなりの最終手段のような気がする
0919nobodyさん
2012/04/13(金) 14:04:43.06ID:???なぜかIEでだけ、動きません。
http://hostname.jp/controller/action/全角の検索ワード
という感じのアクションなのですが、Chromeでは問題なく動いているのですが、
IE系のブラウザではまったく動いてくれません。検索ワードが半角文字だけですと、IEでも動いています。
そもそもCakeのメソッド引数に上記の方法で全角文字列を渡してもいいものなのでしょうか?
なにか別にいい策があればご教示ください。
0920nobodyさん
2012/04/13(金) 14:52:39.24ID:???古臭い用語だな
0922nobodyさん
2012/04/14(土) 00:10:19.08ID:???Cakeとか関係ない。
UTF-8で書かれたページでPOSTしたら
サーバーに投げられる文字コード何か?
EUC-JPで書かれたページでPOSTしたら
サーバーに投げられる文字コード何か?
この2つの例でサーバーに投げられ文字コードは何で決まるのか?
http://hostname.jp/controller/action/全角の検索ワード
の「全角の検索ワード 」の部分の文字コードはどうやって決めるのが正しいか
考えてみれば良い。
0923nobodyさん
2012/04/14(土) 09:35:05.93ID:???0924nobodyさん
2012/04/14(土) 10:00:41.58ID:???レス数が900を超えています。1000を超えると表示できなくなるよ。