【PHP】フレームワーク CakePHP 13ホール目【v2.0】
レス数が950を超えています。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/
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:???0925nobodyさん
2012/04/14(土) 10:52:00.00ID:???文字コードは何だよ。言ってみろ
0926nobodyさん
2012/04/14(土) 12:26:15.35ID:???ファンクションをコールしようとしているのですが
下記の様なエラーが出てしまいます。
どこに間違いがあるのでしょうか?
[model]
class Test extends AppModel
{
var $name = 'Test';
function Testxxx(){echo "Test!";}
}
[controller]
var $uses = array('Test');
$this->Test->Testxxx();
[error]
Error: SQLSTATE[42000]: Syntax error or access violation: 1064
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'Testxxx' at line 1
0927nobodyさん
2012/04/14(土) 13:43:48.92ID:???You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'Testxxx' at line 1
0928nobodyさん
2012/04/14(土) 13:50:12.49ID:???0929nobodyさん
2012/04/14(土) 14:11:27.02ID:???>>928お前はミサイルで頭を破壊した方がいいよ。どうせまともなルックスしていない下種野郎だろうしな。
0930nobodyさん
2012/04/14(土) 15:09:22.75ID:???0931nobodyさん
2012/04/14(土) 18:06:38.12ID:???例)
denyController.php
へのアクセスを禁止するには一般的にどうしますか?
.htaccess or cakePHPでなにがしかの設定が可能?
0932nobodyさん
2012/04/14(土) 18:42:11.68ID:???下記コードを実行すると、全レコードが削除されてしまいます><;
$deleteCondition = array("hoge_id" => 3333);
$this->Hoge->deleteAll( $deleteCondition );
0934nobodyさん
2012/04/14(土) 19:34:52.76ID:V2giXwsG俺ならコントローラー全てのアクションにprefixつけてprefixルーティング&アクセス制御って感じかな
0935nobodyさん
2012/04/14(土) 19:38:18.38ID:???自己解決しました。
英語のドキュメントを見たところ
cake2.1.1 になってから呼出し方が微妙に変わっていました。
0937nobodyさん
2012/04/14(土) 20:25:02.13ID:???実際には delete は変わってませんでした。
findについては、
findAll → find('all')
といった感じです。
しかし、なぜ同じコードで>>932が今度は正常に削除出来たか不明。
0938nobodyさん
2012/04/14(土) 20:33:32.07ID:???viewsのパスを任意に追加するにはどうすればいいのでしょうか?
ソース見たらApp::path('views')でパスは取れるみたいだけど追加の関数がない。
0939nobodyさん
2012/04/15(日) 02:11:36.29ID:???0940nobodyさん
2012/04/15(日) 08:46:03.26ID:???0941nobodyさん
2012/04/15(日) 19:57:59.30ID:???0942nobodyさん
2012/04/15(日) 20:19:36.67ID:???http://hogehoge.com?age=17
じゃなくて
http://hogehoge.com/age/17
として処理を行うにはどうしたら良いでしょうか?
0944nobodyさん
2012/04/16(月) 13:39:36.79ID:???AController / Hage()
や
BController / Chabin()
を呼び出すにはどうすれば良いでしょうか?
0947nobodyさん
2012/04/16(月) 19:03:36.34ID:???正常にキック出来る事の確認をしているのですがうまくいきません。
1.x系と2.xとでは記述方法が異なっている事を考慮に入れ
下記コードを記述しているのですがなぜかシェルクラスが認識されないです。
【作成したシェルクラス】
Console/Command/TestHelloShell.php
<?php
class TestHelloShell extends AppShell
{
public function main()
{
$this->log('[Shell]main() が実行されました。', LOG_DEBUG);
}
}
?>
【コマンドライン】
%/usr/local/bin/php /home/{my_account}/cake/lib/Cake/Console/cake.php test_hello -app /home/{my_account}/www/{my_directory}/app
Error: Shell class TestHelloShell could not be found.
#0 /home/{my_account}/cake/lib/Cake/Console/ShellDispatcher.php(167): ShellDispatcher->_getShell('test_hello')
#1 /home/{my_account}/cake/lib/Cake/Console/ShellDispatcher.php(69): ShellDispatcher->dispatch()
#2 /home/{my_account}/cake/lib/Cake/Console/cake.php(41): ShellDispatcher::run(Array)
#3 {main}
0949nobodyさん
2012/04/19(木) 01:38:53.63ID:???0950nobodyさん
2012/04/19(木) 16:26:48.17ID:GZ2gdGu2お勧めの方法はありますか?
レス数が950を超えています。1000を超えると書き込みができなくなります。