【PHP】フレームワーク CakePHP 15ホール目【v2.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/12/04(火) 13:06:36.87ID:ExCLhBiPCakePHPから派生した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/
0237nobodyさん
2013/01/31(木) 11:24:17.48ID:???2.3.0の話以前に、再検索してるのに5ページを示すパラメーターがついたままっておかしくね?
で、まぁpagenateコンポーネント見てないけど、
例外ならキャッチして復帰させるコード書けばいいんでないの?
0238nobodyさん
2013/01/31(木) 11:31:42.14ID:???もっといい手法あるかもだけど、とりあえず検索のFormに
$this->Form->hidden('page', array('value' => 1));
を持たせるだけで再建策の際はトップページに固定ってできる。
ただ、2ページ目のときにソートを変更した場合もトップに来てほしいのにページ保持してんだよな
paginateにパラメータ渡してなんとかできそうかなと思ってるけど後回しになってるわ。あと質問の件とは関係ないなすまん
0239nobodyさん
2013/01/31(木) 14:18:38.44ID:???直接コアのライブラリに手を入れるのはやめといたほうがいいんじゃない?
俺なら少なくともPaginatorComponentを継承した
オレオレコンポーネントを作って、
コントローラからそれをPaginatorとして利用するとかだけど。
コントローラの書き換えが出てくるけどな。それはまぁしゃあない。
オレオレコンポーネントに該当のメソッドの部分だけラッパー被せればいいからメンテもしやすい。
0240nobodyさん
2013/01/31(木) 20:33:43.81ID:???元のコンポーネントとして使う方法があったような・・・
昔の事すぎてよく覚えてないけど。
0241nobodyさん
2013/01/31(木) 21:34:40.55ID:???皆さまありがとうございました。
取り急ぎの対処で、CakePHP側で無く、Search plugin側を直接修正
(PrgComponentでリダイレクトされる前にpageパラメータ削除)を行いました。
ただ根本的な対策は>>239のようにすべきかと思います。
なおCookBookにもあるのですが
public $components = array(
'Auth' => array(
'className' => 'MyAuth'
)
);
という感じで「className」を使えば継承したオレオレComponetを元のComponentと
置き換える形で使えるような気がするので、時間があれば試したいと思います。
0242nobodyさん
2013/01/31(木) 22:14:42.24ID:RjbL5w0X0244nobodyさん
2013/01/31(木) 23:41:35.62ID:???pageパラメーターの削除とかしてるようには見えなかったけどなぁ。
Searh pluginて再検索でpageパラメーター引き継がれる仕様だったっけ?
0245nobodyさん
2013/02/01(金) 02:48:40.88ID:???0246nobodyさん
2013/02/01(金) 04:35:41.32ID:???さー、よー分からん。
0247nobodyさん
2013/02/01(金) 17:37:08.52ID:YUuc+gXX同一のcakephp上に複数のappフォルダを用意して複数サイトを作成しているのですが、
片方にアクセスが成功した後に、もう片方のサイトにアクセスするとDBのエラーが起こります。
どうやら先にアクセスした方のテーブルを読み込みにいってしまっているようなのですが、
解決方法がおかわりになる方、いらっしゃいますでしょうか。
0248nobodyさん
2013/02/01(金) 19:11:34.11ID:???modelのキャッシュかぶりが原因。core.php の下の方、Cache の設定のprefixをアプリ毎に書き換えてみ。
これで治らなかったらわからん。
0249nobodyさん
2013/02/01(金) 20:30:28.36ID:???0250nobodyさん
2013/02/02(土) 05:07:38.15ID:???0252nobodyさん
2013/02/02(土) 10:24:39.71ID:???0253nobodyさん
2013/02/03(日) 13:07:50.93ID:???>感謝の気持ちを少しだけ!
> CakeFestスポンサー
> 寄付(金額指定)
> $100寄付しますっ
> $50で。
> $25なら寄付できます。
> $10で
> $5なら
> $1ですいません
なんかムカツクなこれw
$1を馬鹿にすんなよ
0254nobodyさん
2013/02/03(日) 14:24:22.03ID:???ちがうよ、$1を馬鹿にしてんじゃなくて、
$1しか払わない奴を馬鹿にしてるんだよ
でも確かにこの書き方だと$100払わないと惨めな気持ちになるな
0255nobodyさん
2013/02/03(日) 14:41:24.60ID:???0256nobodyさん
2013/02/03(日) 20:57:01.44ID:/AHKrDeafoo-bar_controllerとして
class Foo-barController extends AppController {
とやったら
syntax error, unexpected '-', expecting '{'
となってしまいます
キャメル式に書くのかと思い
class FooBarController extends AppController {
とすると今度は
Error: Foo-barController could not be found.
Create the class Foo-barController below in file: app\controllers\foo-bar_controller.php
となってしまいます
どうしたらいいのでしょうか?
ご教示いただけたら幸いです
0257nobodyさん
2013/02/03(日) 21:04:38.53ID:???foo-bar/****でどうしてもアクセスさせたいってことなら
routes.phpにそう記述すれば?
0258nobodyさん
2013/02/03(日) 21:10:31.65ID:???なぜ使おうと思ったしwwwwww
0259nobodyさん
2013/02/03(日) 21:27:37.51ID:/AHKrDea>foo-bar/****でどうしてもアクセスさせたいってことなら
なるほど、この書き方からすると、foo-bar/****でアクセスするようにするのは一般的ではないって感じですね
ありがとうございました
>>258
ドメイン/foo-bar/でアクセスさせたかったからです
0260nobodyさん
2013/02/03(日) 21:42:30.43ID:???そういうことを知る前にフレームワークに手を出しちゃったのね
なるほど
0261nobodyさん
2013/02/03(日) 21:48:50.49ID:/AHKrDeaドメイン/foo-bar/でアクセスさせるにはroutes.phpをさわる以外ないんでしょうか?
0262nobodyさん
2013/02/03(日) 21:52:12.11ID:???pages/foo-bar/
なら通るんじゃねえの?しらんけど
0263nobodyさん
2013/02/03(日) 22:03:32.85ID:/AHKrDea思ったより難しくて困難なことなんですね
ありがとうございます
0264nobodyさん
2013/02/03(日) 22:49:27.59ID:???この「初心者」とは少なくともPHPの基礎を済ましてからでお願いします。
0265nobodyさん
2013/02/04(月) 01:29:23.68ID:???まぁ初心者煽るだけだとなんにもならんからマジレスしとくと、
PHPではクラス名にハイフンが使えない。
CakePHPでは、テーブル名からモデルやコントローラーのクラス名が決まり、
それがURLにもなるという仕組みがあって、
example.com/conttollername/action/ という形で出来る。
これを自分でコードを書かなくてもCakePHPがやってくれるので、
フレームワークを使って楽をする部分。
ただし、URLをデフォルトの形から変えたいという要望は当然あるので、
そのためにConfig/routes.phpにルーティングを書く機能があるんだ。
URLにハイフンを使いたいという場合も、CakePHPではこれに当たる。
俺はURLにハイフンなんてむしろ入れたくない方だから良く分からんけど、
ルーティングを書くってのはそんな難しい事じゃないぞ。
0266nobodyさん
2013/02/04(月) 08:02:31.65ID:???0267nobodyさん
2013/02/04(月) 12:15:28.40ID:???PHPの基礎すらしらない初心者以下が使ってるからなんだな。
0268nobodyさん
2013/02/04(月) 12:17:50.34ID:???0269nobodyさん
2013/02/04(月) 17:35:50.15ID:zdC3MV9aFWは使った方がやっぱりいいですかね?
0270nobodyさん
2013/02/04(月) 17:37:55.34ID:???GKは不要でしょう。
なに求めてるかによるだろバーカ
0271nobodyさん
2013/02/04(月) 18:30:04.68ID:zdC3MV9a必要な機能のみ入ってる
0272nobodyさん
2013/02/04(月) 18:36:40.10ID:???0273256
2013/02/04(月) 20:58:13.66ID:Qd6LJB5gRouter::connectを使ったらできました
ありがとうございました
0274nobodyさん
2013/02/04(月) 22:35:24.25ID:???cakephp使わなかったらずっと気づかなかったかも知れないわ
0275nobodyさん
2013/02/05(火) 13:24:30.22ID:???$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:???既にUserというクラス作ってます…
0277nobodyさん
2013/02/05(火) 18:07:18.96ID:???http://tinyurl. com/9w97424
0278nobodyさん
2013/02/05(火) 18:08:39.14ID:???0279nobodyさん
2013/02/06(水) 14:01:53.99ID:???2が出てだいぶ時間がたってると思うのですが・・・
0280nobodyさん
2013/02/06(水) 14:23:12.45ID:mYFhq6tH順次増やしていく設計(システム)には、cakePHPはやっぱり使えないでしょうか?
T_100
T_101
T_102
T_***
構造
id / name
※膨大なレコード数が想定されれう為
同一構造のテーブルをを連番に順次作成していく
0282nobodyさん
2013/02/06(水) 14:40:44.22ID:mYFhq6tH>コントローラやモデルで対象のテーブルを切り替えられるから
どういう風に切り替えるのでしょうか?
基本的には、cakePHPをはじめとしたMVCフレームワークでは
テーブル名に対応したモデルクラス(***.php)を1つ作成しないと
いう認識でいたのですが。
0284nobodyさん
2013/02/06(水) 14:53:50.43ID:???>テーブル名に対応したモデルクラス(***.php)を1つ作成しないと
>いう認識でいたのですが。
ぜんぜん違う。
0285nobodyさん
2013/02/06(水) 15:03:38.35ID:mYFhq6tHパーテション?どいう事でしょうか?
0286nobodyさん
2013/02/06(水) 16:21:42.35ID:???一つのテーブルでレコードが膨大になるのが問題なんでしょ?
しかもそのテーブルのスキーマがかなり単純なものでしょ。
それなら複数のテーブルを作成するよりも、一つのテーブルでパーティショニングしたほうがいいよ。
データベース パーテイション
で調べてみて
0287nobodyさん
2013/02/06(水) 16:27:56.17ID:???一呼吸置いて5分でもいいから出てきた単語検索してみろ
しね
0289nobodyさん
2013/02/06(水) 16:56:50.65ID:???0290nobodyさん
2013/02/06(水) 17:02:14.00ID:DvysHyJ8変動IPも知らぬバカ
>>289 おまえ
0291nobodyさん
2013/02/06(水) 17:21:32.61ID:???0292nobodyさん
2013/02/06(水) 17:51:41.67ID:???0293nobodyさん
2013/02/06(水) 18:15:20.06ID:DvysHyJ80294nobodyさん
2013/02/06(水) 20:13:41.57ID:???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# 基本は 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:???もっと詳しく書かないと調べてあげる気に慣れないな
少なくともエラーの文言はまんまコピペしてくれないと
0300nobodyさん
2013/02/19(火) 14:00:15.60ID:???ごもっともでございます
出先なもんで詳細を確認できない&クドくならないようにはしょったので情報が足りませんでしたね
まだ出先ゆえ、詳細を確認できないのですが
後程、エラー全文をレスしますので
見ていただけると幸いです
0301nobodyさん
2013/02/19(火) 15:01:19.27ID:???0302nobodyさん
2013/02/19(火) 15:36:59.21ID:???サーチプラグインなんかで躓くなカス
0303nobodyさん
2013/02/19(火) 16:20:29.12ID:???>>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:???しねよバーカ
0305nobodyさん
2013/02/19(火) 16:57:59.43ID:???このエラーで言われている「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:???UsersControllerのindex()の最初に$this->User->validateSearch('User');を追加し
直後にdebug('here')を出そうとしても出ず、直前だと出るのでビヘイビアの設定に失敗しているようです・・・
モデルファイルの中で
public $actsAs = array('Search.Searchable');
を記述するだけですよね・・・
0308nobodyさん
2013/02/19(火) 17:54:08.78ID:???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:???0311nobodyさん
2013/02/20(水) 04:42:40.97ID:???そのメソッド名がなんかSQLに含まれる動きしたと思うから、
>>306
>>310
でFAな気がするけど。
0312nobodyさん
2013/02/20(水) 11:46:05.19ID:FGS5pG2ucake bake で作ったCRUDメソッドの中で
editがありますが、これのコントローラとビューを見ていて、どうも納得がいきません。
まず、コントローラ側からヴューへ既存データをセットしている行がありません。
なぜこれで既存データがビューのテキストフィールドへ収まった状態の画面が作れるのでしょうか。
0314nobodyさん
2013/02/26(火) 18:44:02.07ID:zQtNhxoC[message.txt]
私の名前は、山田太郎です。
趣味はバレーです。
という様な外部ファイルにデータとかhtmlタグを設定しておき
include させたいと思いますがどこに配置するのが定石でしょうか?
0316nobodyさん
2013/02/26(火) 19:54:39.42ID:zQtNhxoCテンプレート的な意味合いです。
0317nobodyさん
2013/02/26(火) 20:09:15.83ID:???0318nobodyさん
2013/02/27(水) 12:51:17.39ID:k7COWgMjというテーブルを作成し、そのテーブルを参照する為に
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:???じゃないのか?
0320nobodyさん
2013/02/27(水) 13:35:29.97ID:???mediumを英和辞書で検索しろよ人間のクズ
useTableに記述しろよ出来損ない
0321nobodyさん
2013/02/27(水) 13:37:44.87ID:???CategoryMedium モデル
0322nobodyさん
2013/02/27(水) 14:08:41.58ID:???0323nobodyさん
2013/02/27(水) 19:23:11.08ID:1uFU2JpT何とか解決しました。ありがとうございます。
>>322
そんな便利な機能もあったのですね。
cakeの得体のしれない命名規則に翻弄される手間が省けそうです。
0324nobodyさん
2013/02/27(水) 19:26:37.46ID:1uFU2JpT中 を表わすmedium が media として
テーブル定義しないといけないか謎><;
0325nobodyさん
2013/02/27(水) 20:57:48.81ID:???0326nobodyさん
2013/02/28(木) 01:25:04.41ID:???cakephp2を用いてSNSのようなものを作りたいと考えていて
html CSSはできるのですがphpはほぼ初めてで初心者でも参考になるようなサイトなどありませんか?
お願いします
0327nobodyさん
2013/02/28(木) 02:42:12.10ID:???http://dotinstall.com/
どないです?
0328nobodyさん
2013/02/28(木) 12:06:41.54ID:???Php cake mysqlとかいろいろあって勉強なりそうです
0329nobodyさん
2013/02/28(木) 16:49:01.14ID:???どこか別のところに置いて欲しい
0330nobodyさん
2013/02/28(木) 17:00:11.96ID:???0331nobodyさん
2013/02/28(木) 17:00:49.22ID:???0332nobodyさん
2013/02/28(木) 21:29:21.10ID:???放っておけばいいじゃん
0333nobodyさん
2013/03/02(土) 01:43:36.79ID:???0334nobodyさん
2013/03/02(土) 03:08:56.61ID:???0336nobodyさん
2013/03/02(土) 15:54:54.28ID:???■ このスレッドは過去ログ倉庫に格納されています