トップページ⇒php
985コメント270KB

【PHP】フレームワーク CakePHP 15ホール目【v2.2】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/12/04(火) 13:06:36.87ID:ExCLhBiP
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※他フレームワークとの比較等はスレ違いです

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.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

前スレ
【PHP】フレームワーク CakePHP 14ホール目【v2.1】
http://kohada.2ch.net/test/read.cgi/php/1335859124/
0263nobodyさん2013/02/03(日) 22:03:32.85ID:/AHKrDea
>>262
思ったより難しくて困難なことなんですね
ありがとうございます
0264nobodyさん2013/02/03(日) 22:49:27.59ID:???
「CakePHPを使えば初心者でも簡単にサイトが作れる」

この「初心者」とは少なくともPHPの基礎を済ましてからでお願いします。
0265nobodyさん2013/02/04(月) 01:29:23.68ID:???
>>261
まぁ初心者煽るだけだとなんにもならんからマジレスしとくと、

PHPではクラス名にハイフンが使えない。
CakePHPでは、テーブル名からモデルやコントローラーのクラス名が決まり、
それがURLにもなるという仕組みがあって、
example.com/conttollername/action/ という形で出来る。
これを自分でコードを書かなくてもCakePHPがやってくれるので、
フレームワークを使って楽をする部分。

ただし、URLをデフォルトの形から変えたいという要望は当然あるので、
そのためにConfig/routes.phpにルーティングを書く機能があるんだ。
URLにハイフンを使いたいという場合も、CakePHPではこれに当たる。

俺はURLにハイフンなんてむしろ入れたくない方だから良く分からんけど、
ルーティングを書くってのはそんな難しい事じゃないぞ。
0266nobodyさん2013/02/04(月) 08:02:31.65ID:???
cakephp敗れたり
0267nobodyさん2013/02/04(月) 12:15:28.40ID:???
CakeがWeb制作板で馬鹿にされる理由わかったわ
PHPの基礎すらしらない初心者以下が使ってるからなんだな。
0268nobodyさん2013/02/04(月) 12:17:50.34ID:???
フレームワークは、基礎がわかってからいじるもんだ
0269nobodyさん2013/02/04(月) 17:35:50.15ID:zdC3MV9a
大規模サイト(高アクセス)を作成する場合には、
FWは使った方がやっぱりいいですかね?
0270nobodyさん2013/02/04(月) 17:37:55.34ID:???
FWはもちろんMFとDFも当然必要ですね。
GKは不要でしょう。

なに求めてるかによるだろバーカ
0271nobodyさん2013/02/04(月) 18:30:04.68ID:zdC3MV9a
俺FWが一番。
必要な機能のみ入ってる
0272nobodyさん2013/02/04(月) 18:36:40.10ID:???
今日もここは平和だなおい
02732562013/02/04(月) 20:58:13.66ID:Qd6LJB5g
>>265
Router::connectを使ったらできました
ありがとうございました
0274nobodyさん2013/02/04(月) 22:35:24.25ID:???
PHPでクラスにハイフンを使うシチュエーションがなかったから使えないとか意識したことなかったな
cakephp使わなかったらずっと気づかなかったかも知れないわ
0275nobodyさん2013/02/05(火) 13:24:30.22ID:???
cakePHP2で JSONで出力するため


$this->RequestHandler->setContent( 'json' );
$this->RequestHandler->respondAs( 'application/json; charset=UTF-8' );
$this->autoRender = false;
echo json_encode( $inOutput );

このようなコードで出力しています。
出力結果のレスポンスヘッダーのContent-Typeを見ていると
出力バイト数が少ないうちは[application/json; charset=UTF-8]になっているのですが
大きくなると[text/html]になってしまいます。
respondAsが効かなくなる条件のようなものはあるのでしょうか
0276nobodyさん2013/02/05(火) 18:05:43.33ID:???
ACLでUserってモデル作るみたいですが、
既にUserというクラス作ってます…
0277nobodyさん2013/02/05(火) 18:07:18.96ID:???
phoneアプリ、Windowsアプリを売って生き残れ Ver 1.6
http://tinyurl. com/9w97424
0278nobodyさん2013/02/05(火) 18:08:39.14ID:???
これ、よく見るけど踏んだことないんだけど何なん?
0279nobodyさん2013/02/06(水) 14:01:53.99ID:???
CakePHP2の辞典はいつ発売になるのでしょうか?
2が出てだいぶ時間がたってると思うのですが・・・
0280nobodyさん2013/02/06(水) 14:23:12.45ID:mYFhq6tH
cakeのFWの特性上、プログラムから同一構造のテーブルを
順次増やしていく設計(システム)には、cakePHPはやっぱり使えないでしょうか?

T_100
T_101
T_102

T_***
構造
id / name

※膨大なレコード数が想定されれう為
同一構造のテーブルをを連番に順次作成していく
0281nobodyさん2013/02/06(水) 14:35:21.91ID:???
>>280
コントローラやモデルで対象のテーブルを切り替えられるから、
使えないって事はないですよ
0282nobodyさん2013/02/06(水) 14:40:44.22ID:mYFhq6tH
>>281
>コントローラやモデルで対象のテーブルを切り替えられるから
どういう風に切り替えるのでしょうか?

基本的には、cakePHPをはじめとしたMVCフレームワークでは
テーブル名に対応したモデルクラス(***.php)を1つ作成しないと
いう認識でいたのですが。
0283nobodyさん2013/02/06(水) 14:45:54.35ID:???
>>280
なんでパーテションにしないの?
0284nobodyさん2013/02/06(水) 14:53:50.43ID:???
>基本的には、cakePHPをはじめとしたMVCフレームワークでは
>テーブル名に対応したモデルクラス(***.php)を1つ作成しないと
>いう認識でいたのですが。

ぜんぜん違う。
0285nobodyさん2013/02/06(水) 15:03:38.35ID:mYFhq6tH
>>283
パーテション?どいう事でしょうか?
0286nobodyさん2013/02/06(水) 16:21:42.35ID:???
>>285
一つのテーブルでレコードが膨大になるのが問題なんでしょ?
しかもそのテーブルのスキーマがかなり単純なものでしょ。
それなら複数のテーブルを作成するよりも、一つのテーブルでパーティショニングしたほうがいいよ。

データベース パーテイション

で調べてみて
0287nobodyさん2013/02/06(水) 16:27:56.17ID:???
即座に聞くな
一呼吸置いて5分でもいいから出てきた単語検索してみろ
しね
0288nobodyさん2013/02/06(水) 16:54:32.86ID:DvysHyJ8
 >>286
ありがとうございます。調べてみます。

>>287
死にくされ
0289nobodyさん2013/02/06(水) 16:56:50.65ID:???
ID違うから騙っても意味ないよ
0290nobodyさん2013/02/06(水) 17:02:14.00ID:DvysHyJ8
ID かえたんだが。
変動IPも知らぬバカ

>>289 おまえ
0291nobodyさん2013/02/06(水) 17:21:32.61ID:???
予言しておく。後から282が「その人は違います」ってレスしにくるから。
0292nobodyさん2013/02/06(水) 17:51:41.67ID:???
テーブルを動的にするときはモデルキャッシュが鬼門
0293nobodyさん2013/02/06(水) 18:15:20.06ID:DvysHyJ8
亀頭?
0294nobodyさん2013/02/06(水) 20:13:41.57ID:???
世にあふれるPHPコードの99%は↓に食わせたらボロクソなんじゃねーの?

PHPのソースコードの品質を評価するスレ
http://toro.2ch.net/test/read.cgi/tech/1360128502/
0295nobodyさん2013/02/06(水) 20:50:50.16ID:???
なんでマルチしてるの?そんなに宣伝したいの?
0296nobodyさん2013/02/06(水) 21:31:39.70ID:DvysHyJ8
ec-cube の .htaccess をのぞいてみたんだが

# 基本は SC_Initial.php で設定するが、ini_setで反映されないものはここで設定する


php_value mbstring.language Japanese
php_flag mbstring.enco
ding_translation off
php_value output_handler NULL
php_flag magic_quotes_gpc off
php_flag session.auto_start 0


こーいう記述があるけど、.htaccessの中にphpとか記述してもええのぇ?
0297nobodyさん2013/02/06(水) 21:34:14.59ID:???
は?
0298nobodyさん2013/02/19(火) 10:01:18.06ID:???
検索処理とページネートを学ぼうと
http://torhamzedd.halteria.com/2012/01/cakephp20search-plugin22.html?m=1
↑のブログを参考にSearchプラグインの導入を試みたのですが
「SQLエラー validateSearch」が出てうまく行きません
Searchコンポーネントのcommonprocessまでは処理が通ってるらしいのですが
正直、何が悪いのかお手上げ状態です

上記のエラーの原因と解決策を教えていただけないでしょうか
0299nobodyさん2013/02/19(火) 12:55:09.95ID:???
>>298
もっと詳しく書かないと調べてあげる気に慣れないな
少なくともエラーの文言はまんまコピペしてくれないと
0300nobodyさん2013/02/19(火) 14:00:15.60ID:???
>>299
ごもっともでございます
出先なもんで詳細を確認できない&クドくならないようにはしょったので情報が足りませんでしたね

まだ出先ゆえ、詳細を確認できないのですが
後程、エラー全文をレスしますので
見ていただけると幸いです
0301nobodyさん2013/02/19(火) 15:01:19.27ID:???
CakePHP2辞典はいつ発売されますか?
0302nobodyさん2013/02/19(火) 15:36:59.21ID:???
みねえよ
サーチプラグインなんかで躓くなカス
0303nobodyさん2013/02/19(火) 16:20:29.12ID:???
>>298です

>>298で張ったブログを参考に、users、profilesという2つのテーブルを作成し
userモデルにhasOneでprofileを持たせています
bootstrap.phpでSearchプラグインのロード設定を行い

モデルのUser.phpで
・Searchプラグインのビヘイビアをプロパティに追加
・検索対象フィルタ設定($filterArgs)
・検索対象フィールド設定($presetVars)
モデルのProfile.phpで
・Searchプラグインのビヘイビアをプロパティに追加
UsersController.phpで
・Searchプラグインのコンポーネントをプロパティに追加
・’User’、’Profile’モデルをプロパティに追加
・beforeFilter内で検索対象フィールド($presetVars)をUserモデルから読み込み
・beforeFilter内でページャ設定

と上記の状態でブラウザでアクセスしたところ以下のようなData base 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 'validateSearch' at line 1

webで調べても類似の症例が少なく(また解決方法が得られませんでした)煮詰まっています
長文で申し訳ないですが、助言を頂けないでしょうか
0304nobodyさん2013/02/19(火) 16:34:36.05ID:???
validateSearchとかいうメソッド使うっって宣言しといてそんなメソッド無いからSQLに直接投げられてんだろ
しねよバーカ
0305nobodyさん2013/02/19(火) 16:57:59.43ID:???
>>304
このエラーで言われている「validateSearch」とは
SearchableBehavior.phpに記述されているvalidateSearchメソッドではないのでしょうか?

「validateSearchを独自で定義しろ」なんてどこを参考にしても書いていなかったので
デフォルトでSearchableBehavior.php内のこのメソッドを呼びに行くものだと思っていたのですが・・・
0306nobodyさん2013/02/19(火) 17:34:03.66ID:???
だったらそのビヘイビアがちゃんと読み込まれてないんでねえの?
$this->Model名->validateSearch()
呼べるかかくにん
0307nobodyさん2013/02/19(火) 17:51:14.36ID:???
>>306
UsersControllerのindex()の最初に$this->User->validateSearch('User');を追加し
直後にdebug('here')を出そうとしても出ず、直前だと出るのでビヘイビアの設定に失敗しているようです・・・

モデルファイルの中で
public $actsAs = array('Search.Searchable');
を記述するだけですよね・・・
0308nobodyさん2013/02/19(火) 17:54:08.78ID:???
filterArgsあるんだよね?
filterArgs消して見てもエラーは出るものの君のと違うエラーだったんだけど一応確認
0309nobodyさん2013/02/19(火) 17:56:46.55ID:???
はい
Userモデルファイル内で以下のように設定しています

public $filterArgs = array(
array('name' => 'id', 'type' => 'value', 'field' => 'User.id'),
array('name' => 'username', 'type' => 'like', 'field' => 'User.username'),
array('name' => 'account_name', 'type' => 'like', 'field' => 'Profile.account_name')
);
0310nobodyさん2013/02/19(火) 19:14:24.02ID:???
たぶんSearchがSerachになってるとかそういうのだよ
0311nobodyさん2013/02/20(水) 04:42:40.97ID:???
モデルのインスタンスが持ってないメソッドを呼ぶと、
そのメソッド名がなんかSQLに含まれる動きしたと思うから、
>>306
>>310
でFAな気がするけど。
0312nobodyさん2013/02/20(水) 11:46:05.19ID:FGS5pG2u
基本的なことかもしれないですが、質問です。

cake bake で作ったCRUDメソッドの中で
editがありますが、これのコントローラとビューを見ていて、どうも納得がいきません。

まず、コントローラ側からヴューへ既存データをセットしている行がありません。
なぜこれで既存データがビューのテキストフィールドへ収まった状態の画面が作れるのでしょうか。
0313nobodyさん2013/02/20(水) 11:52:54.92ID:???
>>312
ソース読んでみて!
面白いよw
0314nobodyさん2013/02/26(火) 18:44:02.07ID:zQtNhxoC
cakePHP2 で

[message.txt]
私の名前は、山田太郎です。
趣味はバレーです。

という様な外部ファイルにデータとかhtmlタグを設定しておき
include させたいと思いますがどこに配置するのが定石でしょうか?
0315nobodyさん2013/02/26(火) 18:58:21.14ID:???
>>314
要するに設定ファイルの設置?
0316nobodyさん2013/02/26(火) 19:54:39.42ID:zQtNhxoC
>>315
テンプレート的な意味合いです。
0317nobodyさん2013/02/26(火) 20:09:15.83ID:???
じゃ、viewsのelements
0318nobodyさん2013/02/27(水) 12:51:17.39ID:k7COWgMj
category_mediums
というテーブルを作成し、そのテーブルを参照する為に

Model/categoryMedium.php

の中に下記コードを記述したところ

class categoryMedium extends AppModel {
var $name = 'categoryMedium';


Error: Table category_media for model categoryMedium was not found in datasource default.

こーいうエラーメッセージが表示されてしまいます。
何が問題があるのでしょうか?
0319nobodyさん2013/02/27(水) 13:34:15.93ID:???
CategoryMedium

じゃないのか?
0320nobodyさん2013/02/27(水) 13:35:29.97ID:???
お前の頭だよ

mediumを英和辞書で検索しろよ人間のクズ
useTableに記述しろよ出来損ない
0321nobodyさん2013/02/27(水) 13:37:44.87ID:???
category_media テーブル
CategoryMedium モデル
0322nobodyさん2013/02/27(水) 14:08:41.58ID:???
Inflector::camelize(テーブル名) とかの結果を表示すればで簡単に確認できるぞ
0323nobodyさん2013/02/27(水) 19:23:11.08ID:1uFU2JpT
>>319 >>320 >>321 >>322
何とか解決しました。ありがとうございます。

>>322
そんな便利な機能もあったのですね。
cakeの得体のしれない命名規則に翻弄される手間が省けそうです。
0324nobodyさん2013/02/27(水) 19:26:37.46ID:1uFU2JpT
なんでcakePHPの命名規則で

中 を表わすmedium が media として

テーブル定義しないといけないか謎><;
0325nobodyさん2013/02/27(水) 20:57:48.81ID:???
つmedium_categories
0326nobodyさん2013/02/28(木) 01:25:04.41ID:???
まったくの初心者なのですが
cakephp2を用いてSNSのようなものを作りたいと考えていて
html CSSはできるのですがphpはほぼ初めてで初心者でも参考になるようなサイトなどありませんか?
お願いします
0327nobodyさん2013/02/28(木) 02:42:12.10ID:???
>>326
http://dotinstall.com/
どないです?
0328nobodyさん2013/02/28(木) 12:06:41.54ID:???
ありがとうございます
Php cake mysqlとかいろいろあって勉強なりそうです
0329nobodyさん2013/02/28(木) 16:49:01.14ID:???
Viewに最初からある、ElementsとかEmailsとかScaffoldsとかが自作フォルダと混ざって並んでて邪魔
どこか別のところに置いて欲しい
0330nobodyさん2013/02/28(木) 17:00:11.96ID:???
つかわないなら削除したらいいだろアホか
0331nobodyさん2013/02/28(木) 17:00:49.22ID:???
共有フォルダ作って、bootstrapでincludeしろよ。俺はそうしてるよ
0332nobodyさん2013/02/28(木) 21:29:21.10ID:???
何で邪魔に感じるの?
放っておけばいいじゃん
0333nobodyさん2013/03/02(土) 01:43:36.79ID:???
むしろ自分のフォルダを別のところに置けよ
0334nobodyさん2013/03/02(土) 03:08:56.61ID:???
お前らバカじゃないの?
0335nobodyさん2013/03/02(土) 14:05:34.02ID:???
>>329
お前ぜんぜん理解してないなw
0336nobodyさん2013/03/02(土) 15:54:54.28ID:???
理解してないのはお前
0337nobodyさん2013/03/02(土) 17:40:51.03ID:???
生成したモデルに少しでも手を入れた後に、テーブルに変更があって、
再生成すると、手を入れた部分が消えちゃうの、なんとかならないかなあ?
CakePHPで開発してると、テーブル構成の変更に腰が重たくなってしまう。
0338nobodyさん2013/03/03(日) 11:47:34.75ID:???
>>337
え、bake のこと?
なら最初に一回やるだけだよ
0339nobodyさん2013/03/03(日) 11:50:44.09ID:???
あと、テーブルが決まらないあいだはモデルの基底クラスに bake したのを使って、
カスタマイズはその継承クラスを作成。

で、コントローラとビューはその継承クラスを参照する scaffold でやりくりする
っていうのもうまくいく場合がある。
0340nobodyさん2013/03/03(日) 12:58:15.94ID:???
継承かぁ。
ちょっとやってみる。

2回目のBakeでは、変更部分だけ差し替えてくれるのが理想なんがw
0341nobodyさん2013/03/03(日) 16:17:06.55ID:???
>>340
diffってpatchればいいんじゃね?
0342nobodyさん2013/03/09(土) 23:49:39.09ID:0I4GbUTq
まだCake使ってる奴いたの?
こんなカスフレームワーク使うのやめろよ。
エンジニアとしての自分の格が下がるぞ?
てゆーかもう殆ど更新すらされてねーじゃん。
0343nobodyさん2013/03/10(日) 00:58:54.50ID:???
既にこれで作っちまったシステムがあるからな
今から作るなら違うのにする
0344nobodyさん2013/03/10(日) 17:43:49.35ID:???
どれにするの?
0345nobodyさん2013/03/10(日) 19:07:38.75ID:???
今って、新しすぎて業務に使いにくいやつを趣味で使って、
業務ではこなれた古いやつとして、CakePHPあたりが使われてるんだろ。
0346nobodyさん2013/03/11(月) 01:02:31.86ID:???
特に問題なければ慣れたものを使えばいいじゃん
0347nobodyさん2013/03/11(月) 01:39:55.26ID:???
問題なければな
03483462013/03/11(月) 01:45:04.83ID:???
何か問題でも?
0349nobodyさん2013/03/11(月) 11:51:03.07ID:???
重い・ファイルが多い

ってのが問題に感じてるけど、
ま、普通に動くサイトを作る点では問題ないな。
0350nobodyさん2013/03/11(月) 12:04:50.94ID:???
文句言うなら同時に代替案も出してね
0351nobodyさん2013/03/11(月) 12:18:50.51ID:???
なんでやねん
0352nobodyさん2013/03/11(月) 12:21:41.42ID:???
問題はサイトが更新されないことだろう。
ちゃんとしたドキュメントがないと使えないよ。
0353nobodyさん2013/03/11(月) 13:26:48.88ID:???
ドキュメントは分かるけど、
サイトが更新されないってなんだ?
0354nobodyさん2013/03/11(月) 14:47:53.25ID:???
日本語化の仕組みがクソすぎてワロス
あれじゃまるで信者になるための修行だわ
0355nobodyさん2013/03/11(月) 15:38:33.68ID:???
セキュリティーが心配になる安定板もあったな...

振り向けば、今は懐かし、秋の空
0356nobodyさん2013/03/11(月) 17:47:40.36ID:W/IPgsU1
サーバサイドで出力した "test" という文字列がJavaScriptのsuccessブロックにて
返って来るはずなのですが、なぜかそうならずにhtmlが返ってきています。
どこに問題があるのでしょうか?

【JavaScript】
var url_post = "http://hogehoge.com/hogecontroller/test";;
$.ajax({
type: 'POST',
url:url_post,
data: data,
success: function( data, textStatus, jqXHR )
{

// successs の場合の data にはなぜかHTMLがずらーりと書かれている。

}

【サーバ上のコード】
public function test()
{
$this->autoRender = false;

echo "test";
exit;


  }
0357nobodyさん2013/03/11(月) 17:53:46.15ID:???
そのずらーっと出てくる文字列は一体どこにあるふぁいるなんだろう?とか考えないの?
自分で解決する意志のないバカは諦めろよ
0358nobodyさん2013/03/11(月) 18:04:21.29ID:W/IPgsU1
>>357
出ている文字列はlayout です。

本来ajaxとして処理されなければいけないのに
cake2 のバグなのか
レンダリングされてしまっている様です。
0359nobodyさん2013/03/11(月) 18:24:25.00ID:???
は?
じゃあもう解決するだろよかったな
0360nobodyさん2013/03/11(月) 18:32:21.80ID:???
なにもかもバグとみなしちゃう人って
0361nobodyさん2013/03/11(月) 19:05:00.09ID:W/IPgsU1
>>359
取り敢えずしねよ
0362nobodyさん2013/03/11(月) 19:19:04.54ID:???
おーおーキレちゃいましたかぁ
■ このスレッドは過去ログ倉庫に格納されています