【PHP】フレームワーク CakePHP 16ホール目【v2.4】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2013/09/09(月) 01:56:10.19ID:m9OPw/HTCakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※他フレームワークとの比較等はスレ違いです
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
Issue
http://cakephp.lighthouseapp.com/dashboard
CheatSheet[1.2] (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] http://book.cakephp.org/2.0/ja/index.html
[1.3] http://book.cakephp.org/ja
http://kohada.2ch.net/test/read.cgi/php/1354593996/l50
0177nobodyさん
2013/09/24(火) 18:34:34.37ID:???やはり不毛なフレームワーク論争かw
0178nobodyさん
2013/09/24(火) 18:38:55.69ID:???0180nobodyさん
2013/09/24(火) 21:21:03.36ID:???cakeで凝ったつくりのサイトとかあったら教えてもらえませんか?
0182nobodyさん
2013/09/24(火) 23:14:27.72ID:???そもそもあんたが言っている「凝った作りのサイト」が
どういったものなのかわからないので答えようがない。
cake以外で作っていてもいいから、
まず「凝った作りのサイト」の例をいくつか上げてくれ。
サイトいうだけじゃなく凝ってる部分はどこかも言うように。
0183nobodyさん
2013/09/25(水) 00:17:25.95ID:???0184nobodyさん
2013/09/25(水) 00:26:04.71ID:???0185nobodyさん
2013/09/25(水) 01:34:52.18ID:QAhhx/Ja0187nobodyさん
2013/09/25(水) 13:03:59.31ID:???Fatal error: Class 'PagesController' not found
と出るんだけど、なにこれテスト通らないのにリリースされてんの?
0189nobodyさん
2013/09/25(水) 21:12:17.21ID:???PHPだから遅いのは確かだが、その中でも早いフレームワークは出てきてる。
>>180
「凝った作りのサイト」ってよくわからんが技術が無いだけじゃないの?
>>184
SEO対策だね。初歩しか知らんからそれ以上はなにも言えないw
0190nobodyさん
2013/09/25(水) 23:37:22.39ID:???0191nobodyさん
2013/09/26(木) 00:26:56.50ID:???SEO対策は集客のためにするんじゃないぞ。
SEOは単に検索エンジンにとって適切な作りにするだけだ。
それによって、検索した時の順位が上がることがあるが、
集客できるかどうかはコンテンツ次第。
0192nobodyさん
2013/09/26(木) 21:43:37.36ID:???やり方がございましたらご教示お願いします
0193nobodyさん
2013/09/26(木) 22:53:10.81ID:???HtmlHelper::link() メソッドでラップするなり何なりして下さいませ。
0194nobodyさん
2013/09/26(木) 23:27:13.45ID:???プログラムに処理させるのは簡単なループと条件判定とURLぐらいにして
普通にタグを書くべきだという結論にいたったけどね。
0195nobodyさん
2013/09/27(金) 02:25:34.52ID:???0196nobodyさん
2013/09/27(金) 11:37:18.57ID:???やっぱりそうなりますか
ありがとうございます
>>194
現在ページのけつにスラッシュありかなしかで相対パスが変わってしまうのを無視できるのでヘルパー使ってます
絶対パスだったら生でいいと思います
0197nobodyさん
2013/09/27(金) 13:21:36.12ID:???PHPでバリデーションする場合ってどうやってますか?
cakephpみたいにvalidateのmessage=>'エラー'とかみたいなのがあればいいのですが
ライブラリをぐぐっても多すぎて困ってます
PHP長年やってる人はどのようにしてるのでしょうか?
いちいちif分で2ページにわたり書いてました
フレームワークを使わないでPHPでやる方法の上級者の意見を参考にしたいです教えてください
使ってるライブラリ名とかでもいいです
0198nobodyさん
2013/09/27(金) 16:33:01.11ID:???0199nobodyさん
2013/09/27(金) 17:16:00.06ID:???いちいち二ページ書くのがいやだからフレームワークを使う
フレームワークを使うのが嫌なら二ページ書くしかないだろ
0200nobodyさん
2013/09/27(金) 17:54:19.34ID:???ひょっとしてノートにでも書いてるの?
0201nobodyさん
2013/09/27(金) 18:11:54.74ID:???cakephpにはvalidateのmessage=>'エラー'とかみたいなのがあるのでそれを使います。
0202nobodyさん
2013/09/27(金) 20:46:51.61ID:???特定のユーザーだけ、特定のページのみ閲覧可能にする方法はございますでしょうか
ご教示お願いいたします
0203nobodyさん
2013/09/27(金) 23:51:29.97ID:???そうでなければエラーページ表示しろ
0204nobodyさん
2013/09/28(土) 00:10:22.06ID:???ACO, ARO を使ったアクセス制御を勉強して下さい。
CakePHPの組み込みで3種類の設定が用意されています。
データベースを用いた方法が最も柔軟で高機能ですが、
管理が複雑になるので始めはiniファイルかphpファイルを用いたやり方がオススメです。
設定ファイルは
app/Config/acl.ini.php
app/Config/acl.php
のいずれかをカスタマイズして用います。
チュートリアルには残念ながらデータベースを用いる方法しか載っていませんが、
ググればある程度日本語の資料も出てくると思います。
0205nobodyさん
2013/09/28(土) 01:32:35.29ID:???cakebookが本当にひどいな。見ない方がいい。普段はcakebookの出来には寛大だが、こればかりは無理!
0207nobodyさん
2013/09/28(土) 02:24:59.99ID:???フレームワークってあくまでも標準を提供するだけであって、
規約でさえも単なるバリエーションの一形態として捉えたんで良いのではないかと。
規約に縛られ過ぎも良くないし、規約を無視し過ぎも良くない。
中庸が良いと思う。
0208nobodyさん
2013/09/28(土) 07:50:01.51ID:???どうもです
たしかにそれがシンプルですね
>>204
ACO,AROですね
勉強してみます
おすすめの方法の方向でやってみたいと思います
ありがとうございました
0209nobodyさん
2013/09/28(土) 10:59:00.81ID:???aco,aroっていまいち使いどころがわからない。
例えばあるページの一部のリンクの表示をユーザーによってオンオフする場合、
aco,aroを使い、かつ、ボタンの表示制御のコードも書くよね。
なんか楽になってない気がするんだよね。
0210nobodyさん
2013/09/28(土) 12:27:13.28ID:???ACO, AROしらんけど、ユーザーによってオンオフするという機能の
作り方にある種の壁がある。
・壁を乗り越えられない人
if ($user == 'admin') { 管理画面表示 }
こんなコードを書く
・壁を乗り越えた人
if ( 権限があるか?('管理画面', $user) ) { 管理画面表示 }
こんなコードを書く
前者はユーザーが増えた時どうするの?
新たにグループ作りたくなったらどうするの?
adminだけど特定の場合(無料ユーザー等)には
管理画面の一部を消したくなったらどうするの?
などなど拡張性が低い。(全体的にメンテナンスが必要になるしコードも見づらくなる)
後者の書き方をしておけば、引数のユーザーから
いろんな条件を元に表示する権限を決めるだけだから拡張性が高い。
ACO, AROは、後者の壁を乗り越えた人だけが理解できる機能だと思う。
0211nobodyさん
2013/09/28(土) 13:52:09.15ID:???adminだけど特定のユーザーに管理画面解放する使い方って?
俺の認識では、管理画面とユーザー用管理画面は
分けるべきだと思うが。共通化するなんて怖い
0212nobodyさん
2013/09/28(土) 14:23:58.43ID:???ACO,AROの最大のメリット。
だと思う。
0213nobodyさん
2013/09/28(土) 14:56:21.69ID:mm0OqWTD0214nobodyさん
2013/09/28(土) 15:13:51.00ID:???ビューは非プログラマに書かせるから、ctp自体使わずHTMLに近いテンプレートシステム使ってます
0215nobodyさん
2013/09/28(土) 18:23:01.86ID:???説明の仕方が悪かったね。
adminでもGoogle Appのように
無料契約やビジネス契約によって機能が制限されることはある。
そういう話だったが、普通に田中さん(マネージャー)とか
そういう例えにしておけばよかったね。
0216nobodyさん
2013/09/28(土) 19:02:36.41ID:???0217nobodyさん
2013/09/28(土) 20:16:14.74ID:???ARO - アクセスリクエストオブジェクト(Access Request Object) - ある物を取り扱う「主体」
0219nobodyさん
2013/09/28(土) 22:27:35.62ID:???他人のdiaryが見られないように制御をするとしたら、ACO&AROの仕組みでは対応できなくない?
リクエストを受けたときに、そのユーザーが対象のactionを実行できるかできないかの制御しかできないんでしょ?
0220nobodyさん
2013/09/28(土) 23:57:31.97ID:???検索時邪魔でしょうがない、確実に今開発してる人の生産性を少しずつ下げてる
0221nobodyさん
2013/09/29(日) 01:03:09.68ID:???デフォルトというか、Cakeの組み込みはそうです。
でも拡張すれば出来なくはない。
昔やったことがある。
ただ、管理が分けわからなくなって嫌になったんで、そのやり方は封印して
結局PHPの設定ファイルに書き込む方法に落ち着いた。
まぁ、俺が下手なのは認めるとして、逆に言うと、下手な人間にも使えるような
うまい仕組みとはいえないと思う。
0222nobodyさん
2013/09/29(日) 01:12:36.30ID:???だから技術職というものがあり、
技術があることで金を稼いでいるんだ。
0224nobodyさん
2013/09/29(日) 01:58:37.63ID:???0225nobodyさん
2013/09/29(日) 02:04:25.72ID:???2で仕様変え過ぎ
0226nobodyさん
2013/09/29(日) 13:11:03.72ID:???0227nobodyさん
2013/09/29(日) 13:37:17.57ID:???0228nobodyさん
2013/09/29(日) 13:43:46.71ID:???0229nobodyさん
2013/09/29(日) 13:48:05.32ID:???0230nobodyさん
2013/09/29(日) 13:52:02.75ID:???&tbs=qdr:yみたいに
0232nobodyさん
2013/09/30(月) 14:07:01.24ID:???0233nobodyさん
2013/09/30(月) 14:08:21.98ID:???0234nobodyさん
2013/09/30(月) 17:13:49.37ID:???サードパーティー製ならVendors
http://book.cakephp.org/2.0/en/getting-started/cakephp-folder-structure.html
0235nobodyさん
2013/09/30(月) 21:53:03.23ID:YNM1OLM4送信処理はできてもヘッダーにtoがないのですが原因などわかりますでしょうか・・・
0236nobodyさん
2013/09/30(月) 22:56:45.74ID:YNM1OLM40237nobodyさん
2013/09/30(月) 23:32:26.73ID:???っていう本がでたらしいのですが
どうですかね?
最近CakePHPはじめたばっかりなので
本かおうとおもってますが
0238nobodyさん
2013/09/30(月) 23:52:23.59ID:II3eS9V+Cakeのwebroot下にWordpressをインストールしました。
一応稼働できてはいるのですが、
URLがルートの場合はwebroot内にあるWordpressディレクトリを表示したいのですが
htaccessで可能でしょうか?
0239nobodyさん
2013/10/01(火) 04:54:23.88ID:???0240nobodyさん
2013/10/01(火) 09:02:42.29ID:???どうしてもテストか実際の実行かで分岐しないといけない個所があるんだけど
Cakeで「今テスト中か?」の確実な判定はどうすればいいのでしょう
開発してたら知りたくなるこういうことが公式には載ってないんだよなーという一例
0241nobodyさん
2013/10/01(火) 11:07:03.38ID:???Cakeだからむずかしいってことではないと思う。
Cake本体のテストケース見てみ。
すっげー大変なことしてるから。
テスト中の判定はいくつかやりかたはあると思うけど、
それってテストの書き方に問題があるのでは?
0242nobodyさん
2013/10/01(火) 11:10:07.46ID:???要するにCake本体のテストもかなりえげつないことしてるけど、
それはCakeだからそうなったってことではないだろうということ。
あとどうしても判定したいなら CakeTestSuiteDispatcher.php で定数定義してるんで、
それを使ってみるとか。
あとは $_SERVER の SCRIPT_NAME を見るとか。
0243nobodyさん
2013/10/01(火) 13:16:24.04ID:???モデルにどのDBから読み込むか(マスターとスレーブ)動的に変更している所があって
テスト時にそこが本来のDB読みに行こうとしてハマってた等、回避不可能なことがいくつもあってな
いやーテストって本当難しいわ、製品作るより難しい
テストに関する情報が少ないのも難易度を上げてるな、本とかにも大抵ちょろっとしか載ってないもんな
0244nobodyさん
2013/10/01(火) 14:25:16.95ID:???ってレベルじゃねーな
テストを書く時間9割で
残り実コード書く時間とテスト走らせる時間が5分5分
0245nobodyさん
2013/10/01(火) 14:29:15.29ID:???と言いつつ設計と実装を同時に進めるチャランポランな俺はTDDが出来ない
0246nobodyさん
2013/10/01(火) 15:03:39.29ID:???運用も任されたり長年使い続けるシステムならテスト書く、そうしないと1年後は毎日バグフィクスで潰れる
0247nobodyさん
2013/10/01(火) 15:57:47.39ID:???外部PHPプログラムからCakeの結果(findで生成される配列など)を
受け取りたいのですが、可能でしょうか?
1.3系はググって見つかったのですが、2系は見つかりません。
もし可能なら方法を教えてください
0249247
2013/10/01(火) 17:43:00.64ID:???以下で紹介されている方法を参考にしました。
ttp://web.mt-systems.jp/archives/783
1.3系はこの方法で動きますが、2系ですと一部の関数や命名規則が変わっているので、
この通りにやっても動きません。
Dispatcherの書き方の問題だと思うのですが、
ソースを見てもどうやって実行値を取得すれば良いか、わかりませんでした・・。
0250nobodyさん
2013/10/01(火) 18:10:43.96ID:???0251nobodyさん
2013/10/01(火) 18:29:49.41ID:???そこまでしてでも組み込みたいのか。。。
素直にバッチ化して呼び出すとか、WebAPI経由で呼べばいいものを。。。
0252nobodyさん
2013/10/05(土) 01:07:51.95ID:???コントローラの途中で特定の条件を満たすとヘッダが404を出して終わり
(ブラウザには404 Not foundが表示される)としたいのだが、
CakeResponseというのを使うらしいのだがドキュメント見て
$this->response->httpCodes(404); return; とか
$this->response->statusCode(404); return; とかやっても、ページが表示されてしまう
後者は404が返るようにはなるのだが、ビューの内容も返してしまってるようだ
要は
header('404 Not Found', true, 404);
$this->_stop();
と同じ結果にしたいのだが、CakeResponseを使って書くにはどうすればいいのだろう?
0253nobodyさん
2013/10/05(土) 02:07:14.57ID:???0254nobodyさん
2013/10/05(土) 02:14:19.09ID:???Cake2 からしか知らないけど、ヘッダの送出、ビューの指定の二つだけ行って
リターンしたらいいんじゃないの?
if ($error) {
$this->response->statusCode(404);
$this->view = 'error';
return;
}
みたいな感じで。
あと、例外を投げても一部のクラスは 404 になるんだけど、それは知ってる?
0255nobodyさん
2013/10/05(土) 02:15:37.07ID:???0256nobodyさん
2013/10/05(土) 04:04:25.49ID:???>$_GET['url']に文字列「favicon.ico」をセットすると、require_once で読み込んだ index.php の実行が dispatcher を動作せずに終了するようになっている。
バッドノウハウ過ぎて、製品にはこわくて使えねーよw
https://github.com/cakephp/cakephp/blob/1.3/app/webroot/index.php#L82
https://github.com/cakephp/cakephp/blob/2.2.9/app/webroot/index.php#L91-92
まぁ一応ソースで確認してみた。
faviconは見ての通りなくなってるので諦めろ。
と、ここまで書いてから思ったが、要するにgithubでハイライトされてる最後の2行を消したファイルを作って、
require_onceすればできんじゃねーの?
0257nobodyさん
2013/10/05(土) 04:18:28.90ID:???$this->response->httpCodes()はgetterだから意味ないぞ。
$this->response->statusCode(404);
$this->autoRender = false;
return;
これで、$this->render('index');と明示的に書かない限り、レンダリングされないので、
body部が空になると思われ。
動確はしてない。
0258nobodyさん
2013/10/05(土) 13:04:41.41ID:???0259nobodyさん
2013/10/05(土) 18:22:31.88ID:???0260nobodyさん
2013/10/05(土) 18:26:41.61ID:???0262nobodyさん
2013/10/05(土) 19:35:08.52ID:cB/QUfLzドットインストールと詳解でなんとかなった
実践入門とかも読んだなぁ
0263nobodyさん
2013/10/05(土) 20:36:15.64ID:???0264nobodyさん
2013/10/05(土) 20:37:41.87ID:???"CakePHP findしたときに一時的にアソシエーションをなくす"
でぐぐったら出てくるんですが・・・
0265nobodyさん
2013/10/06(日) 10:47:59.39ID:???0266nobodyさん
2013/10/06(日) 11:57:58.32ID:???Your database configuration was not found
って出てくるどうすりゃいいの?
index.php と test.phpのコメント行は外しました
0267nobodyさん
2013/10/06(日) 12:03:15.88ID:???アプリケーションルートディレクトリで実行してないだけでした
0268nobodyさん
2013/10/07(月) 13:48:06.58ID:???0269nobodyさん
2013/10/07(月) 17:46:40.29ID:???View::evaluate() を見てみると良いかも
0270nobodyさん
2013/10/08(火) 00:59:47.40ID:???0271247
2013/10/08(火) 09:11:47.61ID:???遅レスですみません。
その2行を消して実行ファイルでDispatcherを宣言しても
CakeRequest側の受取が上手く行かずに、データ取得できませんでした。
そもそも、どうやって外部ファイルからrequestを受け取るのか・・・
全てCakeのフォルダ内で管理したいというよりも、
一部だけCakeを使いたいor既に使っている物をCakeに変更したい
などの需要があると思ったのですが、意外と無いですね。
findはSQL文でSELECTを書けばいいし、PDOを使えば簡単に取得出来るので、
外部ファイルからCakeを通す必要性がないのかもしれません。
0272nobodyさん
2013/10/08(火) 13:46:34.36ID:???要するに結果を通常のビューじゃなくて
JSONで出力するとかって話じゃないのか?
0273nobodyさん
2013/10/08(火) 14:04:35.31ID:???http://www.php.net/manual/ja/function.file-get-contents.php すればいいじゃん!
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>
PHPなら2行で通信するプログラムも書けるよ!!
俺はセキュリティ的にこわくてできないけどな
0274247
2013/10/08(火) 16:34:38.21ID:???いえ、Cake形式の配列でfindの結果を受け取りたいんです。
で、>>249の方法なら出来るのです。
でも、2系だと無理です。なので質問しました。
■ このスレッドは過去ログ倉庫に格納されています