【PHP】フレームワーク CakePHP 12ホール目【笑】
>PEARとかのクラス名とCakeのコアクラスが衝突しちゃう場合 >どう対応してますか? PHPてnamespaceないんだっけか? なんちゅーダサい言語w
3 :
nobodyさん :2011/07/01(金) 18:07:43.44 ID:Hz/Fo+ud
前スレ990からのやつ Cake的にはConfigure::load()/read()じゃなくて?
携帯サイトとPCサイトをCakeで作るとき、 - routes.php Router::connect('/m/', array('controller' => 'home', 'action' => 'index', 'prefix' => 'mobile')); Router::connect('/m', array('controller' => 'home', 'action' => 'index', 'prefix' => 'mobile')); Router::connect('/m/:controller/:action/*', array('prefix' => 'mobile')); - app_controller.php function afterFilter() { if (!preg_match("/^m(\/)?/", $this->params['url']['url'])) { $this->redirect('/m/' . $this->params['url']['url']); } if ($this->isMobile) { $this->output = mb_convert_kana($this->output, 'k'); $this->output = mb_convert_encoding($this->output, 'SJIS', 'UTF-8'); } } こんな感じで振り分けたりしてるんだけど、 function show() { $this->set('abc', $this->Model->find('all')); } function mobile_show() { $this->set('abc', $this->Model->find('all')); } 上記のようにコントローラにPC用と携帯用で全く同じ処理なのに 別々のアクションを作らないといけない。 これはしょうがないのかな? もっとナイスな実装方法があれば助言お願いします
>>5 beforeFilter()かそれ以前で携帯か判定して
beforeRender()でviewを切り替えるComponentをつくる。
Controllerのactionは基本共通で場合によって処理も分けられる。
コントラが同一にできないのであれば、設計がどこかおかしいと思うぞ。
>>6-7 サンクス
いや、多分コントローラのアクション同一のものを使えると思う
>beforeRender()でviewを切り替える
なるほど。
処理が全て終わったあとで、
$this->render('mobile_' . 現在のaction名);
みたいな感じかな。
>beforeFilter()かそれ以前で携帯か判定して
これがちょっとわからない
beforeRender()のview切り替え時に携帯かどうか判断したらだめなの?
>>8 > >beforeFilter()かそれ以前で携帯か判定して
> これがちょっとわからない
> beforeRender()のview切り替え時に携帯かどうか判断したらだめなの?
actionの中身が完全に同一ならいいんだけど
たまに場合分けしたい部分もあるかと思ってね。
利用するModelも変わるかもしれないし。
>>9 なるほど
>>10 おお、テーマ便利だわ
テーマ使ったら
>>5 の方法みたいに
/m/ でアクセスする必要無くなったな
みなさんありがとう!
>>11 結局どうやったのかまとめて書いてくれるとありがたい。
>>12 - app_controller.php
function beforeFilter() {
$agent = Net_UserAgent_Mobile::factory();
// 携帯
if (!$agent->isNonMobile()) {
if ($agent->isDoCoMo()) {
ini_set('session.use_cookies', FALSE);
ini_set('session.use_only_cookies', FALSE);
ini_set('session.use_trans_sid', TRUE);
session_start();
}
$this->isMobile = true;
$this->layout = 'mobile';
$this->theme = 'mobile';
// PC
} else {
:
:
}
}
routes.php の携帯関係(/m/)のマッピングと、
afterFilter() の redirect の記述は全て消した
携帯でアクセスすると、テーマがmobileになるので、
mobileテーマを用意すると、それをrenderしてくれる
結局テーマでほぼ解決できた感じ
Cakeって結構便利なんだね
$this->data の中にあるデータ全てに置換処理をしたい場合どうしたらいいですか
foreachで出力してstr_replaceすればいいじゃん
再帰的っつーと、array_map_recursiveだかなんだかかな
置換するデータが決まってる場合は、再帰しなくても良いよ
>>19 どういうことですか?
mb関数を使って変換したいんですけど、できますか?
php5ならこれでどう? array_walk_recursive
>>22 $this->data覗いてみればわかるんじゃないの?
>>23 いろいろ試しているけど、バリデーションの仕組みがややこしすぎる・・・
allowEmpty と required ってどう違うんだろw
requiredをtrueにしても、通ったりするし
そういう時は、やりたい処理をシコシコ書いた方が読みやすくて保守しやすいよ。
CakePHPってAppControllerやAppModelにかなり手を入れないと 使い物にならないよね。 あと、標準のコンポーネントやヘルパーはホント使い物にならない。 特にFormヘルパーは心の底から使えない。 こんな屑フレームワークが何故こんなに持てはやされているのか謎。
>>24 required は「その項目の存在を必須とするか?」の設定で、 allowEmpty は「空の値を許容するか?」
分かりやすく言うと、
パスワードとかで、
required = false
allowEmpty = false
にすれば、
フィールドがある場合は、必須入力。
フィールドがない場合は、保存可能。
>>26 「みんなが使ってるから」
という日本人的な理由があるからです。
嫌なら自分でヘルパー作りましょう。
>>28 日本人的理由って言うか、
途中で誰もメンテしなくなったりプロジェクトが消えてしまったりするフレームワークをいろいろ見てると
やっぱ使ってる人数は多いほうが良いよ。
そもそもなんで使っている人が増えたかだよ。 最初から使用者が多かったわけではないのに 「みんなが使ってるから」は理由にならないと思う。 ちょっと、formヘルパーがなんで使えないか聞いてみたい。
それは「分かりやすいから」じゃないか? 俺はZendとかEthnaで挫折したけど、Cakeだと続けて来れた
>>27 なるほど。
わかりやすい説明ありがとうございました。
コントローラーやモデルは面倒だからそのまま使ってる カスタマイズに本気になる時間があったら俺俺作るわ ヘルパーが使えないには同意。使ったことない。
htmlヘルパーはほぼ使わないな ビューでaddScript書く時だけ使う。
htmlとかばりばり使うでしょ。urlとか決め打ちしてんの?
??? 普通に<a>タグ書けばいいじゃん
HTMLヘルパーで出力するHTMLをカスタマイズしようとすると 記述が煩雑になってありがたみが薄れるからなー。 簡単なelement書くか、変数展開だけで済ますかな。
routerでアドレス変更したときに、いちいち全ページ変更するんかい?
??? <?php echo Router::url('/') ?> とかしらないのか?
formヘルパーなんかDBの設定読み込んで、 maxlength自動で設定してくれたりして、便利だと思うけどなぁ。 (保守が楽) アソシエーションの設定をちゃんとしとけば saveallで一発で保存できるし。
まぁ、唯一気になるのが「name="data['User']['name']"」 となってしまう事だけど、これは仕方ないよな
42 :
nobodyさん :2011/07/07(木) 15:59:11.03 ID:zfJE1aJ1
嫌なら変えればいいんじゃない?
変える方法あるの?
>>39 ???
普通に<a>タグじゃないじゃん?
??? <a href="<?php echo Router::ulr('/')?>">URL</a> htmlヘルパー使わないんだから、こうなるよな
??? ulrってなんぞ?
そこは看過してやれよ。
打ち間違いぐらい許してくれよ・・・
Jsヘルパーって使ってますか? 複雑になるだけな気がするんですが、メリットがあったら教えてもらいたいです。
$this->Model->getLastInsertID() を使って他テーブルの外部IDを設定(ひもづけ)するのは危険かな? 例えばショッピングサイトで注文テーブルの注文IDを、注文内容テーブルの外部IDに設定するような場合。 処理の途中で別のINSERTが入った場合はどうなるんだろう・・・?
saveAllでできる トランザクション使うなら、InnoDBにしないといけないけど。
使い始めたばかりなのだけど、 ssh接続するサーバ上で開発する場合、開発環境はどんな選択肢があるんだろう?
うん?鯖上のエディタで直接コード書くんじゃないんだろ?
十分な速度があるなら、Eclipseでリモート・システム・エクスプローラーとか便利ですよ。
Eclipse xDebug このあたりの検索キーワードでリモートでデバッグ出来ますので、分かってしまえばかなり便利です。
>>51 奴らは街角で拉致られてタコ部屋に押し込められて強制労働させられてるのか?
自ら希望して派遣会社に登録したんじゃないのか?
まずそこをハッキリして貰いたいんだが。
なにそれこわい
saveAllでさぞ酷い目にあったのかな。。。
トランザクションの裏には凄い苦労が隠されているんだな・・・
軽々しくROLLBACKとかできない雰囲気だな。何人か犠牲になってるんだろ?
お前らってプログラミング初めて何年? 俺は勉強おろそかになってた時期も含むと、8,9年ぐらいになるんだけど ロールバックとかトランザクションとかDBの知識全くないわ
それってWeb系のプログラミング始めて何年かで違うよな。 ここ10年の間なら、Webプログラミング+DBってパターンが王道だし、 PHPとMySQLは、もっとも利用されている組み合わせだ。 なのに、PHPのみで8〜9年というのはおかしいな。 今までCSVのみでデータの読み書きをしていたのか?
>>63 いや、ずっとDBだけど大規模なサイトの開発しなかったら正直
ロールバックとかトランザクションなんて使わなくてもいいからな
PHPから接続して、CRUDできたら大抵のシステムは組めるでしょ?
俺的にもMySQLでトランザクションができるようになったのは最近。って感覚だな。 デフォルトだと今でもMyISAMだろうし。
この前MAMPからセットアップした時はInnoDBだったけどなー
PHP歴20年だけど質問ある?
>>67 こんな糞言語をよくそんなに使っていられますね(^^)
まぁ、MyISAMで良い場面とInnoDBで良い場面の想定が難しいからな。 月1000万PVあるポイントサイト運営してるけど、MyISAMだし、 それでデータが破壊されることは無い。 だから、この程度の規模だとトランザクションは必要ないのかもな。
昨日からCakePHPを勉強しようと思ってイロイロやってるんだけど
サンプルの中にある
cake\tests\lib\templates の
footer.php と header.php と menu.php から
ものすごい数のエラーが出てるんだけど
何か設定間違えたかな?
http://mergedoc.sourceforge.jp/ ここのEclipse3.6を一回更新して使ってるんだけど
>>69 トランザクションの有無は操作内容によるから規模関係ないかと。
あとInnoDBプラグイン以降はMyISAMの出番はないんじゃない?
小さめのDBならMyISAMのが良いこともあるけど、その規模なら誤差みたいなもんだし。
フルテキストインデックス使うならMyISAMだけどな。
>>71 ポイントサイトやってるから、毎秒100人ぐらいの
同時アクセスが発生するんだが、
DBの読み書きでトランザクションを使用してないので
どうなるかと運営当初は不安だったが、全然大したことなかったw
だから、どの程度の規模・アクセス・処理想定をすれば
InnoDBにしてトランザクションした方が良いかわからないんだよな。
同時アクセスとかあまり関係ない。 銀行口座AからBへ振り込み処理を行うとする。 1.UPDATEでAの残高を減らす 2.UPDATEでBの残高を増やす もし1の処理の後、エラーが起きて2が実行されなかったとする。 するとAの残高だけ減っているというデータの不整合が起きてしまう。 こうならないために、1と2をトランザクションで囲って、 エラーが起きた場合はロールバックして1の処理をキャンセルする。
同じ編集画面多重で開かれて 内容が戻るのを防ぐのもトランザクションでやるの?
あれ、
>>74 ってトランザクションか?
上手く言えないが、そう言う場面で使うもんじゃない気が・・・
>>74 はトランザクション処理だろ。
>>75 はトランザクションじゃないね。
DBでやるなら行ロックとか。
>>78 余裕でできる。
CakePHPでというよりMySQLで、だけど。
じゃ、コード書いてみて
>>77 行ロックってデッドロックの解決わからなくて実装してないなぁ
手動で解除できるようにしとくくらいなのか?
>>81 pconnect使わなければプログラム終了したらDB接続も勝手に切れる。
嫌ならロックやトランザクション使うときだけ明示的にconnectする。
>>80 AppModelかBehaviourに
$db =& ConnectionManager::getDataSource($this->useDbConfig);
return $db->begin($this);
こんなメソッド書くかんじ?
同じDB接続なら二回目以降は無視するとかcommit/rollbackをまとめて行うとかの工夫はほしいけど。
>>81 ロックする順番を銀行口座番号の昇順か降順にすれば
デットロックにはならないはず。
>>82 そのコード、もう標準で組み込んでくれよと思う
>>84 通常はsaveAllで事足りるはず。
MySQLならinnoDB使ってれば自動でトランザクションしてくれる。
2.0の正式版ていつごろなのかな? alpha版ためしたらエラーでまくりだった; Lithiumとどっちが先か・・・
>>85 通常の範囲せますぎやない?
クエリの間に判定や分岐をいれたいことって多々あるとおもう。
MySQLのストアドは弱いしね。
>>87 どんな時に使うの?
cakeではやった事無いよ。
更新って1つのテーブルだけじゃないからな。 例えば、会員情報を更新しようとして、一緒に プロフィールテーブルやポイントテーブルを更新する事は想定できるだろ。
流れ見てたら解るだろ
>>91 流れ見ててるからわからん。
>>87 saveallじゃ足らんって言ってて
>>88 具体的にどんな時に必要?
>>89 は
プロフィールテーブルやポイントテーブルを更新する事は想定できるだろ。
↑これはsaveallで足りるから、まさか
>>88 へのレスでは無いとは思うけど、
どうなんだろうって思ったから。
93 :
92 :2011/07/21(木) 19:15:12.79 ID:???
ポイントのプレゼント機能があったとして、 会員AからBにポイントを振る場合は、 トランザクション処理になるだろうけど、 cakePHPの場合、model->saveに渡す配列に ちゃんとデータを入れれば、 saveAll一発で済むし。
94 :
nobodyさん :2011/07/21(木) 19:18:17.61 ID:n5p3Ei1e
・ポイントが100以下のユーザーを抽出する ・ポイントをプラスする ・ポイントが500以上になったユーザーのプロフィールを更新する こういうのはSaveAllじゃダメだろ。 どんだけ単純なアプリ作ってるんだよ。
92よ・・・お前もう一度一からDB設計の勉強してこいよ 単純思考過ぎる。saveAll一発でいけたら苦労しない
tinyint(2) int(2) これって同じことなの?
97 :
nobodyさん :2011/07/22(金) 18:25:40.59 ID:8Fm0K952
>>96 MySQLでのテーブル定義時の話だよね?
TINYINTは-128から127 (符号無しの場合0から255)が保持可能
INTは-2147483648から2147483647 (符号無しの場合0から4294967295)が保持可能。
型の後ろのカッコは表示幅。(2)は2桁に満たない場合に0フィルしてくれるけど3桁だと
幅指定無視して3桁表示される。切り捨てたりするわけではない。INTだと4桁、5桁も
ありえるので、そういう値を扱うとき同じとはいえない
パスワードの入力エリア2つにして、一方を確認用にするって 仕様が良くあると思いますが、この場合のバリデーションってどうしてます?
ふつうに二つエリア有るだけだろ?
controller側で、パスワードA==パスワードBの場合true、そうでなければfalse で作ればいいだけでは?
>>101 コントローラでやる意味がわかんない。
普通にバリデーションルールつくるだけでしょ。
103 :
nobodyさん :2011/07/22(金) 21:25:49.24 ID:M3kIDpUH
Cake使ってもなおMVCを守らんとはやるな。
104 :
101 :2011/07/22(金) 21:31:07.20 ID:???
>>102 思い浮かばなかった。MVCでいうMに書くべきなんですね。
じゃ、パスワードの暗号化もmodelに書くの?
好きにしたらいいんじゃね。 おいらはAuthコンポーネント使うからコントローラで $this->Auth->password($hogehoge) かな。
それってさ、 if ($this->User->validates() { $this->data['User']['password'] = $this->Auth->password($this->data['User']['password']); $this->User->save($this->data, false); } てな感じで、一度バリデーションして 問題なければパスワード暗号化してそれからsaveするんだよね? 好きにしろって言われればそれまでだけど、他はどうしてるか気になってね
入力はpassword1, password2 にして password1 == password2のバリデーションをpassword1 に設定 コントローラで $this->data['User']['password'] = $this->Auth->password($this->data['User']['password1']); $this->User->save($this->data, true); みたいにしてる。定石かどうかは知らん。 ただ、入力をpasswordにするとAuthコンポーネントが 勝手にハッシュ化してめんどいことになる。
俺もそれだわ。勝手にハッシュ化されると困る時あるし。
くだらない事だけど、↓みたいにsave失敗した処理も入れてる? if ($this->User->save($this->data)) { save後の処理 } else { $this->set('error', '登録に失敗しました'); }
>>110 くだらなくない。商用コードでそれ抜くやつはほんと勘弁してほしい。
実際はModelでException投げるのがスマートかもね。
MVCて コントローラーに比重を大きくした方がよくね? 高速生産オンリー視点でいえばモデルに比重を大きくした方がいいけど モデルの比重が大きくなると 拡張や柔軟性が失われるデメリットがある。 大規模サイトに発展する可能性、またはアジャイル開発なら 高速生産と柔軟性のバランスを取った方が良いので コントローラの比重を大きくした方がよいと思う。
>>114 俺もそう思う。モデルにあれこれ書きすぎるのは汎用性が低くなる。
モデルはシンプルで、コントローラで色々操作する方が良い。
自演してまで馬鹿な考え広めなくていいよ
118 :
nobodyさん :2011/07/23(土) 20:28:29.38 ID:TdNTdShr
この前EC-CUBEをちょっと触ったけど、コントローラーにSQLとCSSが書いてあったよ。
EC-CUBEはスパゲティコード過ぎるからな
>>118 あっちはMVCの概念で作られてはいない。
ひどいごった煮だよ。
CakePHPもlayout使う場合、$title_for_layoutをコントローラでsetしないといけないよね。 あれってビューで設定できないの? CSSなら、 $html -> css('abc', null, array('inline' => false)); でできるんだけど、同じようにタイトルもできたらいいんだけど。
$this->set('title_for_layout', 'abc');
レンタルサーバーにアップする場合どこを設定するのかググってもさっぱりわからない。
んなもん、レンサバによるだろうに
>>125 メジャーなIaaSくらいは公式で手順を公開してほしいよな。
Azureとか。
>>125 PHPが動けば、最悪FTPでどうとでも出来る。
マニュアルに沿ってやれば特に難しいことは無いと思うけど。 ドキュメントルートの中にしか入れないレンサバなら「3.3.1 開発」のページ 一段上に上がれるレンサバなら「3.3.2 運用」を VPSとか好きにいじれる鯖なら、「3.3.3 応用インストール」を見て好きなところにコアを入れればいい。
てか、普通に /public_html └/cake で、いんじゃないの?
知ってるかどうか分からないけど、 マッチングサイトの「さぶみっと!」ってCakePHPで開発してるんですかね? ログインフォームを見ると、name="data[Customer][c_mail]" みたいになってました。
インデックスのつけ方わからん
自鯖 はい次の人
136 :
nobodyさん :2011/07/26(火) 15:45:29.74 ID:HGkMvVWC
今時無料で探すのは無理じゃないか? 月200円捻出してXREAでも借りた方がいいと思う
さすがに無料というのは虫が良すぎる話しだよなw 月100円でも出せば、ロリポップやさくらでも借りられるだろ。 それすら出せない奴がFWでどんなコンテンツ提供するって言うんだ?
バージョンアップキタ!! 2.0系を新規に使うのはまだ早いかな?
いや、俺が使ってみる
いやいや、俺が
どうぞどうぞどうぞ
フリーランスでWEBアプリを開発しています。 PG歴8年で、PHP歴は1年程度です。 フレームワークを使わないPHP開発は一通り経験しているつもりです。 まだcakeを紹介したサイトをいくつか読んだレベルなのですが、 「なぜcakeを使うのか?」がいまいちピンときていません。 開発スピードなら、既成ライブラリや私製ライブラリで十分な成果が出る気がします。 MVCがしたいなら、別にcakeをつかわなくてもできるんじゃ?と思います。 複数PGでの協業にcakeが威力を発揮するとも思えないのです。 みなさんはなぜcakeにかぎらず、PHPフレームワークをつかっているのでしょうか? みなさんのご経験された案件でcakeなりPHPフレームワークを使うことを決定した理由は なんなのでしょうか?差し支えなければ教えてください。
なんかセッションがすぐ切れるんだが core.php Configure::write('Session.timeout', '720'); Configure::write('Security.level', 'low'); こういう設定なのに、、、 ほかにセッション関連の設定ってあったっけ?
>>143 デザイナがいなくて画面を自分で作らなければいけない仕事をやってるんで、
scaffoldを吐き出してくれるのが一番助かってるかなあ。
あとはクエリパラメータを関数の引数にマップしてくれるので
どこでどのパラメータを使っているかわかりやすいとか。
フォームヘルパーみたいのも自作しなくてすむし。
ページングも楽だ。
まあ、単体で見るとたいしたことなくても、Railsがフルスタックフレームワーク
と言われていたように、オールインワンでそろってるのが楽なわけよ。
>>143 俺は単に「ネット上の情報が一番多い」事が理由だな
cakeに限らない場合、命名規則や開発方法が決められていると、
開発時の迷いが少なくなるというメリットがある。俺にはこれがでかい。
147 :
nobodyさん :2011/07/28(木) 09:35:44.21 ID:KTDSJqbk
なんとなく使ってる感じですかね、別にこれじゃなくてもなんでもいいです。 あと情報が多いのも理由ですね、ここもそうですが他のプログラマーの意見を見るのも参考になりいますし。
>>143 チーム開発してると合意というか統制がとりやすい。デザインパターンみたいなもん。
保守面でもFWのバグやセキュリティフィックスの作業が軽減できる。
Cake1.x自体は構造が古くてクソだけど。
標準Authコンポーネント使って管理ページ作ってるんですが、SSLにするのが普通ですか。
>>144 これなんだけど、
ログイン情報を Session->write() で書き込んで
>>144 のような設定なのに数時間ぐらいで切れる
だれかエスパーして
>>150 数時間どころじゃなかった
1時間か、それ以下で切れる><
php.iniの設定は? セッションファイルは本当に削除されてるか?
153 :
143 :2011/07/28(木) 19:26:15.08 ID:???
>>145 >>146 >>147 >>148 なるほど。
参考になります。
と同時に自分の浅はかさを露呈したと赤面の限りです。
もうちょっと勉強してでなおしてきます。
みなさまご丁寧に返信有難うございました。
※2chでこのようにまともに
返信いただけることも少ないもので。
それはまともな質問できてないからだよ
>>153 いきなり長文で余計な情報いっぱいの質問しても、
普通は回答なんてこないよ。
要点を手短に、具体的に。
あなたの質問なら
>「なぜcakeを使うのか?」
この1文以外は余計な情報じゃないですか。
156 :
nobodyさん :2011/07/28(木) 20:55:36.17 ID:2K/biVGO
なぜcakeを使うのか?
個人的にはcakeのプロジェクトに関わるはめになっただけ そうでなきゃPHPなんか使う気がせん
memcached 日本語でなんていうの?
間違いだとわかっていても頭の中では常にメムキャッシュド
プログラマーのために IT用語かな読み辞典を作ろうと思うけど どうですか?
結構です
あ、そういうアプリがあれば、無料なら入れてみるかも
>>158 最後のdは過去形ではなく、
デーモンのdだから
メモ(メム)キャッシュディー
でいいんじゃないか
166 :
160 :2011/07/31(日) 15:09:43.71 ID:???
口頭ベースの仕様書なしアジャイル開発が主流になってきてるから memcached これ日本語で統一されてないと 時間ロスになるじゃん。 だから プログラマーのためのIT用語かな辞典が欲しいのであります。
え…アジャイルって仕様書作らないの?
このフレームワークMySQLにクエリ投げすぎじゃね? ページ表示すると、CakeSqlLogが84行とかあるんだけど。。。 あえて可視化されて、多く感じるだけで、 他のフレームワークや、普通のシステムもこれぐらい投げてるものなのかな?
余計な処理が多いというのは俺も感じる。 2系でそういうの無くなればいいが、おそらく無くならないだろう・・・
SHOW FULL COLUMNS みたいのはデバッグ時だけだからそういうのは差し引いていいよ。
insertしたあとに勝手にlastinsertidしたりというのはあるな。 しかもその後自分でlastinsertidしようとすると、またクエリ投げるし。 キャッシュ効いてるから対したロスではないんだろうけども、気になる。
CakePHPで掲示板つくって運営してるけど、 さくらインターネットからプログラム見なおせゴルアとお叱りうけて、 同時接続数制限かかりました
>>172 プログラムに問題が?
ユーザーが増えただけ?
>>172 ここに書いたということはcakePHPが原因だったの?
>>173 VPSはセキュリティとかがめんどくさいし、
値段対スペックもそれほどよくないんじゃないかな
>>174 スタンダードです
>>175 ,176
ユーザーが増えたのもあるけど、
やっぱプログラムもあると思う
キャッシュ機構使ってないからな
単にリクエスト数が増えたのが原因ならプログラム見なおせっていう言い方はされないんじゃないかな。 掲示板でそんな重い処理をしてるとも思えないから、インデックスがあたってないとか slow quelyが多すぎるってことなんじゃないだろうか。
>>177 いや、俺が実際、あんたと同じような状況で
さくらレン鯖→さくらVPSに乗り換えてるから。
鯖のパフォーマンスは全く違うよ。値段も月980円だし。
ま、スタンダードプランと比べたら高いけどw
>>179 まじか
ビジネスにしたわ
VPSは他で使ってるけど、最初の設定が面倒
一概にDBとは限らないしslowqueryくらいは潰してるだろうから まっとうにxhprofなんかでプロファイリングするのが一番だよ。
いや、俺は単にサーバの問題だと思うけどね
さくらのレン鯖のDBはゴミなんでしょ?
そうだよ
なぜ?
さくらレン鯖DBは容量無制限だからバイナリ置きまくり
InnoDB使えないのが痛い。 それだけでVPSという選択肢になる。
ビューキャッシュの考え方について質問です。 例えば野球の選手データのように、毎日内容が変わるものがあるとします。 新しいデータを入れたらキャッシュを削除して再キャッシュすると思うのですが、 選手データのような、種類が多くて大量データの場合もそう言う考え方なのでしょうか?
オイラ、野球ぜんぜん見てないから選手データというのが毎日変わるというのは知らなかったんだけどさ、アクセスされるたびに更新するもんじゃなくて、1日ごとに更新する、でいいんじゃね? というか、そういう更新するとこって、最終更新日とかタイムスタンプついてるところもある気がする。
野球の選手データなら、試合をして結果が出たとき以外には変わらないだろうし、 試合があったらその都度、攻撃とか守備とかのデータを追加して、選手ページのキャッシュ更新すればいいんじゃね? 俺も野球見ないからこんな仕様でいいのか自信ないけど
野球の選手データはあくまで例題なんですが、 そういう頻繁に更新するキャッシュ管理はどうするのかな?と思いまして。 毎日、何百のデータを一括削除してまたキャッシュし直すって 動作的にどうなのかな?と。そう言う疑問があります。
>毎日、何百のデータを一括削除してまたキャッシュし直すって それはバッチ処理。そういうのをする場合もあるが、普通のwebアプリで普通にCakePHPのキャッシュというと、アクセスしたらキャッシュするだけであって、何日も更新されない(アクセス来ないからそのまま)データもあれば、頻繁にキャッシュ更新される場合だってあるよ。 そこらへんのバランスとかどの方法がいいか?とかは一概に言えなくて、あくまでその部分を作る奴のバランス感覚とかセンスの問題だな
>CakePHPのキャッシュというと、アクセスしたらキャッシュするだけであって、 >何日も更新されない(アクセス来ないからそのまま)データもあれば、頻繁にキャッシュ更新される場合だってあるよ。 これで納得しました。キャッシュってそういうもんなんですね。 例えバッチ処理であれ、大量のファイルを削除→再キャッシュすれば 時間がかかるだろうから、どうするのかな?って疑問に思っていたんです。 誰もアクセスしないファイルはそのままですか。納得です。
最近、CakePHPはじめた者です。 hasManyとか定義するとfindしたら強制的に関連テーブルひっぱってくるSQLが走りますよね。 パフォーマンス上げるためにunbindModelってするのが1つの方法だけど、 ・hasManyの定義がたくさんあったら、1つ1つunbindModelするのもしんどい。 ・そもそも何かのテーブルに1つhasMany追加したら、findしてる既存のコード全部に影響が出る。 ちょっとありえないかなと・・・ そこで自分のアプローチとしては、以下のようにしようかと思います。 ・hasManyとかは一切定義しない ・bindModelTable1()みたいなfunction定義 ・その中で動的にhasManyを定義 ・findを呼ぶ前に関連テーブルをひっぱってきたいときだけ、bindModel*()を呼ぶ これ以外に良い方法ありますかね。
>>195 hasManyしないモデルを作る、ってのは?
別にテーブル名以外のモデルも作れるんだし。
>>196 うーん。たとえば、
・Model1にhasManyが10個定義されている
・Model2はhasManyを何も定義しない
・両方共同じテーブルを扱う
としますよね。
そうすると、hasManyのうち1つだけとか2つだけとかしたい時に、やっぱり面倒かなって。
みんなどうしてるのかな。
必要なときに必要なものだけひっぱるのがいいとおもうのだけど。
Railsはfind(:all, :include => [reviews, users])
みたいに必要なときに必要なものをって設計になってますよね。
ちょっとCakeの設計は解せないです・・・
>・Model1にhasManyが10個定義されている この時点で設計が間違ってる。 みんなどうしてるのかな → 設計を見直してる
>>195 本質的にhasManyって、用途によって切り替えるものじゃないと思う。
モデルって普遍的なものだから、もしも本当に切り替えが必要なのだとすると、
そもそもそのモデルに定義しているリレーション自体が適当なのか?ということも検討しないと。
Containableで絞り込めばいいんじゃないの
10個は物のたとえです。hasMany,hasOneとかあわせて5くらいは可能性としてありますよね? みんな必要なくてもhasManyとかでひっぱってくるがままにやってるのかな。 パフォーマンスとか気にし過ぎなのだろうか。 気になるのはモデルにhasManyを1つ追加しただけで、 既存のfind呼び出しの挙動が変わる可能性があるということ。 本番運用してると結構怖い気がするのだけど・・・
recursiveで対応できるところはして できないところはbindModel, unbindModelかな。 それでもだめなときは、joins使うな。おいらなら。
204 :
195 :2011/08/04(木) 14:53:18.58 ID:???
俺はパフォーマンスを気にするなら、hasManyを一切使わないで開発してる 必要な時のみ自分でJOINする 結局手間暇考える時間トータルでこれは一番効率良かった
秀和システムの本を丸移ししてるのですが、エラーが出ます。 Call to a member function event() on a non-object どこがおかしいのでしょうか。 <?php echo $html->script('prototype',array('inline'=>false)); ?> <?php $script =<<< EOL function testFunc(str){ alert("you clicked \""+str+"\"!"); } EOL; echo $html->scriptBlock($script,array('inline'=>false)); echo $html->div(null,'Event Test!', array('id'=>'click_div','style'=> 'background-color:#aaffaa')); echo $javascript->event('click_div','click', 'testFunc("click_div")',array('inline'=>true)); ?>
>>206 まずエラーメッセージを読もう。
「メンバ関数event()とか呼べねえよ」
関数event()が無いの?
スペルミスで呼び出せない?
それともオブジェクト(のインスタンス)が無いの?
というように調べて行って下さい。
ここまではPHPの基礎的な事。
じゃあ、この場面でオブジェクトを使えるようにするのはどうするの?
てのがcakePHPの話。
せっかくの夏休みだからちょっと考えてみて。
$script =<<< EOL function testFunc(str){ alert("you clicked \""+str+"\"!"); } EOL; それより、このコーディング思想てどうなの?
$javascriptヘルパーの動作のお勉強ならいいんじゃないの? つってももうdeprecatedだけど。
modelのsaveメソッドで保存した時、saveの戻り値の配列にinsertされたidを入れて欲しいんだけど・・・ ビヘイビアとかでやってくるのないかな。
こんな感じ? 動かしてないけど function save($data = null, $validate = true, $fieldList = array()) { if (parent::save($data, $validate, $fieldList)) { return $this->id; } return false; }
afterSave()で。Behaviorで。 <?php class InsertIdBehavior extends ModelBeavior { public function afterSave($model, created = false) { if ($created) { $model->data[$model->alias][$model->primaryKey] = $model->getInsertID(); } } } これぐらい自作しなさいよ。
>>212 すみません・・・助かります。
まだソースハックしきれてなくて、そういう小回り聞いたコードが書けないので。
ビューの共通関数はヘルパー コントローラの共通関数はコンポーネント モデルの共通関数はビヘイビア じゃあビューとコントローラとモデル全部共通で使いたい関数はどこに置けばおkですか?
>>214 オレオレならlib
他の誰かが作ったモノならvendors
それは正しい分け方なの?
>>215 app/libsはどういう使い方(クラスの名前・読み込み方法)するんですか?
>>215 ,216
マニュアルとか全然読まないの?
はい
はいじゃないが
____ / \ / ─ ─\ / ,(●) (●)、\ | (__人__) | はい、マニュアルは全然読みません。 \ ` ⌒´ / わからないことは、もっぱら2ちゃんで聞きます。 ,,.....イ.ヽヽ、___ ーーノ゙-、. : | '; \_____ ノ.| ヽ i | \/゙(__)\,| i | > ヽ. ハ | ||
聞いてもいいけど、そういう人にシステムを触って欲しくない
そんな固い頭の奴にこそ触ってほしくねーわ。 マニュアル読んでなかったら「マニュアルに書いてるよ」 って言えば良いだけだろ。コミュ力0かよ
マニュアル読むより、他人に聞いた方が大抵効率が良い 仕事は効率良くやるべきもの
*聞かれた方の効率は含みません
>224 そんなこたぁないぜ。 基本が出来てないと、同じようなことを何度も聞く事になる。 仕事を頼んでる方からすると、同じような事を何度もお願いしてるのに、その度に同じことを掲示板で聞いてるような奴には頼みたくないと思うが。
>>225-226 お前、会社で部下を持った事無いだろ?
それは単にお前が「教えてるだけ」だからだ。
だから教えられた方も身になってないし、自分も何も得られない。
普通、何度も同じ質問してこないような教え方をするし、
質問してきたという事はその事が「わかりづらい・難しい」わけだから、
どうやって伝えたら相手は理解するのか?という自分自身の勉強にも成り。
仕事でやってるならお客さんに対する説明の時とかな。
そこまで考えずに単に「教えてるだけ」なら、お互い何も得る物ねーわ
2ちゃんでも度々スレ立てた奴がテンプレ修正してるだろ?
そいつは同じ質問されるのが面倒だという思いもあるだろうが、
スレを始めて見た人にわかりやすく解説するためにそうしてるんだろ。
それでも質問してくる奴がいるのは確かだが、
その時は、「
>>1 に書いてるよ」とひと言いえば良いだけ。
それがコミュニケーションだろ。
>>226 みたいなのは自分よがりすぎる。
なんだこいつら
230 :
225 :2011/08/14(日) 13:50:36.60 ID:???
マニュアルに書いてあることなのに読まず、人に質問して教えてもらったほうが効率がいいってこと・・・? よくわからんな・・・
>>その時は、「
>>1 に書いてるよ」とひと言いえば良いだけ。
つまり、「マニュアルに書いてあるよ」とひと言いえば言いだけか。
>>230 お前何で「マニュアルに書いてる」って前提で話してるんだ?
それはお前が書いてるのを知ってるからわかるわけで、
それを知らない奴にとっては、書かれている事はわからないだろ。
で、マニュアルに書いてないと思った・あるいは見てないから質問するわけで、
だったら「マニュアルに書いてるよ」と、ひと言いえば済むだけ。
何をそんな疑問に思うか全く分からん。
>>232 じゃぁ、お前はなんで「
>>1 に書いてある」って前提で話してるんだ?
それはお前が書いてるのを知ってるからわかるわけで、
それを知らない奴にとっては、書かれている事はわからないだろ。
で、
>>1 に書いてないと思った・あるいは見てないから質問するわけで、
だったら「
>>1 に書いてるよ」と、ひと言いえば済むだけ。
何をそんな疑問に思うか全く分からん。
たいそうなもんでもないし先にCookbookぐらいは読むもんだろ、こういうの。 FWの作法・流儀にそった実装をして、共通認識を崩さないよう開発をするもんでしょ。。 あと読み流すだけでいいからクラス一覧も。 元主は質問してくれたんだから俺的にはセーフです。
だから「こうしてるはず!」という固定概念を無くせよ
質問に分かる奴がいれば答えれば良いし、分からなければ無視しろ。
マニュアルや
>>1 にあるなら教えればいいし、そうじゃなければggrksでいい。
なにを数レスまでごちゃごちゃ言ってるか俺には理解できない
____ / \ / ─ ─\ / ,(●) (●)、\ | (__人__) | 仕事って教えてもらうものですよね。 \ ` ⌒´ / 自分で勉強しろとか上司の役割果たして無いと思うんです。 ,,.....イ.ヽヽ、___ ーーノ゙-、. : | '; \_____ ノ.| ヽ i | \/゙(__)\,| i | > ヽ. ハ | ||
すみません、フルボッコされるの承知でどうか 教えて下さい。 簡単なフォームを作って確認の上、DBに登録 させる仕組みを作ったのですが、layoutデータ の画像がリンク切れを起こします。 フォームのあるviewフォルダの中には、index、 kakunin、touroku、kanryouの4つのファイルが あり、controllerで毎回layoutを再読み込みする のですが、layoutのデータがちゃんと適用 されるのがindexのみでした。 他のファイルは/〇〇/kakuninのようにルートが 変わってしまうので、Router::url()を使って 変更するのだろうと思い試してみたのですが 上手くいきません。 とりあえず、Routerクラスあたりをあたって いますが、詳しい方、どうか、無知な私に 教えていただけないでしょうか? cakephpは、1.3を使っております。 よろしくお願い致します。
>>238 HTMLヘルパー使っての話しか?試しに↓したらどうだ?
<img src="<?php echo Router::url('/img/test.jpg');?>" />
>>239 今、試してみました!
出来ました!
有難うございます!
有難うございます!
今日一日、一体、何をやってたんだと情けない
ほど凹んでました。
本当に有難うございます!
リンクも同様に出来ました!
本当に、本当に、有難うございました!
まさか
>>239 で解決するとは思わなかったぜw
悩んだら何でも最小限にして試してみる事だよ。
どこが問題になっているか分かりやすいからな。
CakePHPのSessionおかしくないか? ログインのフラグとして利用してるんだけど、すぐ切れる(無くなる) core.phpの設定いじりまくってるが改善されん
Cakeのセッションはおかしいよ、昔から 知らないと使おうとしちゃうよね、結局皆自作してる
ローカルでのテスト環境は挙動が違うから、環境によって変わるのかな?
Sessionといえば、cookie_lifetimeも変だよね ブラウザを閉じたら、セッションも切れて欲しい
Smarty View Classが見つからないんで 誰かくれませんかね?
Smartyなんて使うなよ
Smartyはオワコン
HTMLコーダにPHP打たせたくない環境とかもあるのだよ。
そりゃそうだが、だから何だと言いたいんだ?
CakePHPのデフォルトのテンプレート機能だと、PHPで何でもかけてしまうけど、 Smartyだと禁止できる、というだけの話。 あと、これは自分の知識不足かもだけど、 CakePHPのデフォルトのテンプレートだと文字力出力すべてに 自動でHTMLエスケープとかできないような?
テンプレは他にもあるのになんでよりによってSmartyなのか まあ有名だけど使う理由あるか?
255 :
253 :2011/08/22(月) 20:28:19.32 ID:???
>>254 その他のいいやつを是非教えて欲しい。
ちゃかしてるわけじゃなく。
<?php if($condition): ?> <h1><?= $title ?></h1> <?php endif; ?> こういうテンプレートがある
>>256 フレームワークを使っているにもかかわらず
わざわざHTML内にPHPタグを書く面倒臭さを解消する程度の
知識も技術力もありませんっていう自己紹介ですか?w
一番有名なテンプレ使う ってのも立派な採用理由だと思うが。
>>257 いや、PHP自体テンプレート言語だし、
新たに1つ別の仕様頭に入れる必要性を感じない
プログラマから見ればそれでいいんだろうが、コードを実行しないまま表示させようとするとデザインとか狂うし、Javascriptも確かめて見る事出来ないんよ まぁ、JavascriptはSmarty使ったところで一緒だがな。 デザイナでも受け入れられるテンプレートっつーと、PHPTalとかKwartsくらいか。 プログラマの方が一歩譲ってデザイン分かるようにしとるんだから、デザイナの方もPHPくらい分かれよ、って話は無い事も無いとは思うが。
なぜ?多数のレビュー受けてるって事だよ? 情報も多いし。
マジで言ってるの? それはプラスだけど、決定的な理由にはならんだろ
いやそりゃちゃんと評価しなきゃいけないのは分かるけど 採用理由の一つにはなるだろ?ならない?
まあこれは何度も出ている話題だとは思うけど、 基本的にviwsの中身は触ってほしくないと思ってる。 単純に、例えば記事を$kiji配列でviewに渡して viewの中で$kiji['tilte']とかを配置してく程度のお仕事ならいいけどさ。 cakeの機能を使えば使うほど、それだけでは無理が出てくる。 helperの仕様や中身まで熟知してもらわなきゃならなくなるからね。
マジレスすると、一番有名でも使いにくいからSmartyは使いたくない。 プログラマにもデザイナにも使いにくい。 重さは許容範囲なんだが…。
素のPHPにSmarty使うのは良いんだよ。 問題は、CakeにSMarty使う事だ。 Cakeのテンプレや書き方があるんだから。 だから、Cake採用しているシステムは PG以外にテンプレ触らせないようにすればいい。
Cake + SmartyはCakeの良さもSmartyの良さも消しさってしまう恐ろしい組み合わせ
だ か ら 別のテンプレ使えば良いだろw
Smarty以外にもテンプレは沢山あるんだから。PHPにはすげえ沢山あるぞ。
何故か
>>255 なんかは知らないみたいだけど。
情弱にはなりたくないもんだな。
せっかくMVCと分けてんのに、Vをデザイナ(HTMLコーダー)に振れないって意味わかんないw
>>269 言ってることには同意なんだけど、
じゃあ実際に何を使ってるのか具体的に名前を上げて欲しい
確かに個人製作みたいなライブラリがPHPにはすげえ沢山あるけど、
そのうちのほとんどがクソ品質だと思うんだが、使えそうなものっていくつあるの?
>>270 俺はHTML_Template_Sigmaを使ってるよ。
これのいいところは形式がほぼhtmlそのままであること。
ブロックの指定は
<!-- BEGIN AAA_BLOCK -->
xxxxxx
<!-- END AAA_BLOCK -->
にようにコメントで行うので、そのままブラウザで開いても(PHPを実行しなくても)ある程度表示確認ができる。
変数には$がつかず、{hage}などと挿入するだけ。
複雑な関数はいくらでも自作でき、html内にfunc_xxxx(引数)
これでなんでもできる。
テンプレ内にPHPのコードが一切出てこないため、プログラマ以外でも編集しやすい。
パフォーマンスも悪くない(Smartyと同程度)のでオススメ。
HTML_Template_Sigmaって、PHP3時代のPHPLibについてきたテンプレートエンジンっぽい奴じゃなかったっけ? ループがプログラム側に来ているのが気に入らんかったかな。 といってもまぁ、Smartyに慣れる前はSmartyのテンプレート側でループしちまうってのが気持ち悪かったもんだから、そこは慣れなんだろうな。
>>271 >パフォーマンスも悪くない(Smartyと同程度)のでオススメ。
ならSmartyで良いんじゃないか?
無名のテンプレなんてオレオレと変わらんだろ。
そもそもテンプレートエンジン使うのが
「他人がわかりやすく編集するため」なんだし。
このスレにはつい突っ込みたくなるアホが多いな。 Smartyが使いにくいから嫌だって言って、他のを進めてるんじゃないの。 なのに重さが同じならSmartyでいいじゃんってw あとお前が知らなければ無名なのかwどうせ他に1つも知らないんだろ?
SmartyもSmarty以外も同じ。Cakeと合わせて使う価値なし。
damedakorya
>>274 だから狭い範囲で語るなってw
よっぽどSmartyに恨みあるのか知らんが
お前がこの世の中心じゃねーんだよ
いや、俺はSmartyを叩いていた人物じゃないぞw
使わないのがベストって結論だろ
えー、俺はPHPとテンプレ分離したいぞ
混乱してるな。大まかに ・Smartyを使う理由はない派 ・Smartyを使う理由はあるけど他にもっといいのあるよ派 ・Smartyはいいものだ
・Smartyを知らずに批判している派
・自分の知らない分野は糞くらえ派
mediaプラグインについて教えてください。 1.3ではバージョンファイルの削除は プラグイン側ではやってくれないようになったのでしょうか? 0.6ではbeforeDeleteでtransferとバージョンファイル両方消してくれてましたが、 1.3ではtransferしか消してくれてないようなんですが。
月曜からSmartyの話題で持ちきりだな…Smarty知らんけど。
フレーム使って左右にページを分けて使ってるんだけどさー 左に各ページに飛ぶボタン、右に各ページを作ってるわけさー で、ログイン処理行ってて、左にログアウトボタンをつけて echo $form->create('MUser',array('action'=>'logout','target'=>'_top')); echo $form->end('logout'); でちゃんとログイン画面に戻るんだけど タイムアウトの場合、左のボタンを押したら 右側だけがログイン画面にいっちゃう で、ログインしようとすると、フレームが増える(左左右みたいに) タイムアウトの場合も1画面のログイン画面に戻したいんだけど 何か良い案はないですかね?
いまどき、フレーム使ってサイト作成ってすごいな
そういえば最近フレーム使うサイト見ないなー どうやってんのかサッパリだわ。
俺はマニュアル作る時フレーム使うよ
tableタグとかcenterとか 使ってそうだな
tabelは非推奨タグじゃないから別に使ってもいいんじゃね? tableでレイアウト作るような奴とは仕事したくないけど、 表を作るならtableタグを使うべきだと思うけど。
なんか最近、表すらtableタグを使うなと言う空気が漂ってる
>>290 tableタグはいいだろ
きちんと表につかってんなら。
うちはサイドバーにしたな。 ヘッダー、左サイドバー、右本ページ サイドバーでのセッションの挙動でちょっと迷ったけど、 普通にCake側のpage_name/1で仕様を満たした。
>>286 無理やりなんとかするならJavaScriptで状況解析して全画面リロードかな。
うちもメニュー固定ならフレーム使うことあるけどな。
ページ遷移ないから操作楽だし。
そのウィンドウからシステムの外に出ない限りは何の問題もない。
>>286 AuthコンポーネントのlogoutRedirectにtargetまで含めてURL指定してやれば?
297 :
296 :2011/08/27(土) 14:23:23.85 ID:???
ああ読み違えてた。loginActionの方かな。
redirectのurlにtargetがつくわけないだろ・・・ ログイン画面にjavascriptで左フレームの中身見て適宜リロードさせるとかそんな感じでおk
フォームをelement化して、1ページに2カ所以上で呼び出すと、フォームのIDが重複してしまって HTML的に良くないけど、みんなどうしてる? サーチとかログインフォームなんかは、1ページ上に2カ所以上で表示させる必要があることがあると思うんだけど。
フォーム名わけたら? form1、form2とか
app/config/database.phpを以下のように記述し Postgresもちゃんと起動しているのに、 index.phpをブラウザ上で見るとDBに接続できていない、という黄色の帯が表示されます。 PostgreSQLはVer9です。 class DATABASE_CONFIG { var $default = array( 'driver' => 'postgres', 'connect' => 'pg_connect', 'persistent' => false, 'host' => 'localhost', 'port' => '5432', 'login' => 'postgres', 'password' => 'パスワード'', 'database' => 'postgres', 'prefix' => '', ); } 他には何が設定が必要なのでしょうか?よろしくお願いします。
まずはコマンドラインからその設定で接続できるか確認だな
なんか初歩的な所ではまってしまった Authでログイン処理をしていて、ログインできるユーザー管理部分を作ってるんだけど 会員情報モデルでパスワードの文字数をバリデーションしていると 暗号化された後のパスワードでバリデーションされてしまい、文字数制限にひっかかってしまいうまくいかない あと会員情報を編集すると、暗号化されたパスワードをさらに暗号化してしまいパスワードが変わってしまう これらを回避する定番的な方法ってどうやるの? 結構ぐぐったけど案外出てこない… この辺が以前出ていた、Auth使い物にならないから使わないと言われる理由なのかな?
おれおまw Authではまり中。 暗号化(ryはbeforefilterで後暗号化とか書いてあったな。 普通のユーザのAuthと、管理者のAuthと分けるにはゴリゴリ書くしかないのかorzz...
コントローラーで質問 AppControllerを継承したControllerでは、AppControllerで定義したusesとかcomponentsとか使えるんだけど AppController->共通Controller->個別Controllerと継承したい時があって それをやると、個別Controller内でAppControllerのusesやcomponentsが未定義になる。 これはこういう仕様で、やりたければ何か決まったやり方があるのでしょうか? 最近触ってるけど、Cakeって結構常識的にできてなくてびっくり。
ケーキ使いの皆さま、教えてくださいませ
oresama_controller.phpにて、
class OresamaController extends AppController {
むにゃむにゃ
}
としてます。
んで、
http://example.com/oresama/ というディレクトリがある場合、処理がコントローラーに渡らずに
Forbiddenになってしまいます
どうしたらいいでしょう?
>>309 かぶらない名前にするか、routesでURLのマッピング変える
>>307 サンプルコードがないのでわからないのだが、
>Baseの$usesとBaseBarの$extra_usesをマージ
というのはどこでやればいいの?BaseBarのコンストラクタにarray_mergeとか書くの?
現在検索機能をつくっていて、 検索条件のフォームをGETで送るとpaginateがうまく働かないので <?php $paginator->options(array('url' => $this->params['url'])); ?> のようにしてパラメータを明示的にURLに付け足しているんだけど、 1ページ目は、パラメータが$this->params['url']に入っていて、 2ページ目には、$this->passedArgsに入っているという統一感のない実装になってしまっています。 ?test1=123&test2=456 のようにアクセスした値を受け取る $this->params['url']と、 /test1:123/test2:456 のようにアクセスして値を受け取る $this->passedArgs を変換するような関数って用意されてないのかな?
BASIC認証使いたくてセキュリティコンポーネント導入したら、 GETを使ってるフォームにまでご丁寧にトークン放り込んでくれちゃったんですが、 GETの場合はトークンいれないとかはできないんでしょうか?
ここ以外に、どこか質問するのに良さそうな掲示板ないでしょうか
はてな
知恵袋
だいたいその辺がヒットするけど1.2な罠。 1.2がいちばん盛り上がったみたいだよね。1.2で作ったほうが早いのかもw
>>314 CakePHP フォーラムはどうでしょうか?
結構、詳しい方がフォローしてくれそうな感じ
がするのですが・・・
ただ、私はこちらで親切に教えていただいた
おかげで1週間近く悩んでいた問題が解決
できました。
これからフレームワーク勉強しようと思うのですが、 CakePHPからLithiumはすんなり入れるでしょうか? もし入れるならドキュメントが多いCakePHPでまずは勉強しようと思うのですが、 全くの別物のようならいきなりLithiumから頑張ってみようと思います。
構造の異なるユーザーの種類が複数ある場合はやっぱそれぞれのユーザー用に別アプリとして開発したほうがいいのかな? 例えばショッピングモール作ると、 同じModelに対してエンドユーザー・店舗・システム管理者と、三種類のユーザーそれぞれに別の画面が必要でーみたいな。 今まで別アプリとして作ってきたんだけど、Modelとかが結構同じ構造なのでもっとDRYにできないかなぁ
cookbook1.3を印刷したいんだけどなんか楽な方法無いかな 買う以外で
学校会社レーザープリンター。 あとは自分で書き写したら内容を完全に覚えられるからいいと思う。
とある事情でサーバーを変えてサイトを見ていたら SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to とかエラーが出ていた データベースとの接続はできているしなんだろうと思っていたんだが 関数がうまく呼び出せてないっぽい get_classでModelを表示させようとしたら表示がAppModelとかなってたんだけど 同じような現象になった方いませんか? 開発環境では何の問題もなく動くしget_classでModel名がちゃんと表示されるしわからん
>>310 routeで
Router::connect('/oresama', array('controller' => 'oresamakun', 'action' => 'index'));
とやっても、やっぱりForbiddenになってしまいます。。。
>>324 すごい適当だけど、PHPのバージョンが4系統とか
>>324 俺も見当付かないんだけど、データベースサーバー側のエラーと思えるから、データベース名 + 1064で検索するとか、エラーナンバーから詳細を引ける方法を調べてみると何か分かるんでないかな?
(まさかとは思うが、1064ってのは1064文字目って意味じゃぁないだろうなぁ)
>>326 えー!今時まだPHP4なんてあるの!!
結構あるよ
10年くらいちゃんと動いてるし、4のままで触りたくない。
>>326 サーバーはロリポップでPHPのバージョンは5.3.5で開発環境と一緒なんだ
しかしそうか
PHPの設定の違いを疑ってみるべきだったな
ありがとう!
>>327 違うページではAn Internal Error Has Occurredってエラーが出るから
データベースサーバー側かもしくは設定ミスってるのかなぁ
設定ファイルは最初に完璧であることを確認できたし考えにくいんだよな…
いろいろ調べてもわからなくて…
なぜオブジェクトがAppModelに…って考えてしまう…
>>331 訳わからん挙動に悩んだ際のうっかり系チェックリストを当てずっぽうで書いてみる。
どっかで文字コードが違うファイルが混入してるとかは?
あるいはBOMが入り込んでたりとか。
ver.1.xならば、ファイル名に大文字小文字が入り交じっていないか。
そのエラーが出るページと出ないページがあるのなら、
両者でどこが違うのかを切り分けてみてはどうだろう。
>>332 >ver.1.xならば、ファイル名に大文字小文字が入り交じっていないか。
これってやばいの?
俺modelのファイル名は大文字小文字使ってるよ
半日ぐらい悩んで、ただのスペルミスだったってことよくあるorz...
>>333 んや、ごめん、大文字小文字の件はCakeとは関係なかたかもしれん。
大文字小文字のポリシーが一貫していない状態でも、
windows開発環境だと動いてしまう。
Unix/Linux運用サーバーに投入した途端に呼び出し廻りで不整合が出だす、
ていうのがあるのかなとオモタ。
336 :
324 :2011/09/07(水) 22:55:24.13 ID:???
>>335 なるほど
xamppで動かしていたんでたしかにありそうだ
ちょっと見てみる
ありがとう
テーブル使ってなくてもModelが使えないって変だよな
なぜ普通のModelをインスタンス化したものがAppModelになるのか…
多分じっくり考えないと無理そうなんで土日に頑張ってみます
337 :
324 :2011/09/08(木) 21:01:46.10 ID:???
解決しました
Modelの一番最初の文字が大文字のCになってました
どうもお騒がせしました
>>335 ありがとう!
みんなsimpletestつかってる?
使ってません。テストツールって便利なようで結局手動の方が良いんだよね
テスト書かないと罪悪感に駆られる
今まで手動でやってたけどエンバグが怖くなってきたので次から使おうかと。
自動テストってどうしていいかわからないんだけど最初に読むのにいい記事ないかな
どこにも属さない汎用のヘルプ関数みたいのを書いた場合、どこに置くのがセオリーでしょうか?
>>342 自動テストって、Jenkinsみたいな事してみたいんかい?
昔の名前のHudsonでなら、PHPの自動テスト化の記事があった気がする。
>>343 CakeBookでもはっきりとココ、っていう事書いてないんだよね。
bootstrapあたりが無難じゃないかな。
機能分けして大きくなる予定ならvendor配下に入れておいて、app_controllerでimportしておくとか。
345 :
296 :2011/09/09(金) 22:13:08.07 ID:???
libsに入れたものは自動的にどのファイルからも使えるように出来ないかな
webroot/imgなんかの下のファイルを、ログインして正しいハッシュを付加していないと アクセスできないようにしたいんだけど、どうすればできますか
controller内でdefaultのdatabase名を取得する方法を教えてください
>>347 画像は不可視ディレクトリに入れておいて、Imageモデルとか作って動的に画像吐き出す感じじゃない?
>>347 使った事は無いんで詳しく語れないんだが、media viewというのがあるらしい
CakePHPを勉強してみようと思っているのですが、勉強に適した書籍はありませんか?
CakePHP辞典買えばいいよ
辞典が勉強に向いてるとはすげえ話だな
>>352 オンラインのcookbook。
これが一番為になった。
>>356 CakePHP辞典はリファレンス本だから
354のいうとおり、1冊目に読む本では無いと思うぞ
webrootをアプリケーションディレクトリの外に出して使ってるんですが、 コンソールアプリからWWW_ROOTを参照すると、 アプリケーションディレクトリ配下のwebrootが返ってきてしまいます。 web画面からアクセスした場合は、ちゃんと設定した通りのパスが返ってきています。 コンソールアプリからはWWW_ROOT参照できないというような制約でもあるんでしょうか?
PHPだったらdefineでもってるんだと思う。
確かにdefineで保持されてはいるんですが、 それがあらぬところを指し示してしまっているため困っています。 defineなので上書きも効かず。
361 :
nobodyさん :2011/09/14(水) 05:25:27.50 ID:MD6DgTpS
/images/view/12345?height=135 このようにアクセスして、imagesコントローラのviewアクションで サムネイルを生成して画像を表示させているんだけど、 なぜかCakePHPを介してこのようにアクセスすると、ファイルサイズが小さくならない。 viewアクションの動きは、上記を例にすると、 12345.jpgを縦135pxのサイズでimgejpg()を使って表示させる(横幅は比率維持)というものです。 /images/view/12345?height=1 このようにアクセスすると、縦幅1ピクセルの小さい画像が生成されるんですが、 ファイルサイズは17KBとかになってしまいます。 アクションの中身をそっくりそのままphpファイルにして、CakePHPとは無関係の場所でアクセスすると、 ファイルサイズも縮小分小さく(700Bぐらい)なっている。 誰か原因教えてくださいorz
orz
引数のheightは正しく受け取れてるの?
>>361 cakeの作法に従うなら、
/images/view/12345/135
かなー。
Controller側 function index(){ $hoge = 0; $this->set('hoge',$hoge); } function ajax(){ $this->autoRender = false; $this->uses = null; Configure::write('debug',0); $hoge = $hoge + 1; $this->set('hoge',$hoge); } view側 <div id="div"> echo "$hoge"; </div> <?php echo $ajax->link('ajax',ajax,array('update'=>'div')); ?> ってやるとajaxで「$hoge空っぽなんだけど^^;」って言われるんですけど ビュー側からコントローラー側へ変数を渡すにはどのようにすればよろしいのでせうか?
366 :
358 :2011/09/14(水) 13:04:29.36 ID:???
自己解決しました。 コンソールアプリの場合、web画面からのアクセスとは異なり、 WWW_ROOTはcake.phpで定義されており、 アプリケーションディレクトリ配下のwebrootが指定されてました 。 cakebooksの応用インストール手順片手落ちじゃん。 それともcakeのバグなのかな? どっちにしてもorz
>>361 debug ONになってて画像の後ろにデバッグ情報がくっついてるとかは?
369 :
365 :2011/09/14(水) 14:20:00.53 ID:???
最後間違えてた
<?php echo $ajax->link('ajax',null,array('update'=>'div','url'=>'ajax')); ?>
です
ここに書いたのは簡略化してるけど、ページネーションしたいだけなんです。
でもSQLが命名規則に適してないから$this->Dammy->query("$sql");みたいに直打ち
で、直打ちしたらページネーションが使えなくなった
だから何とか再現したいと、とりあえずAjaxでカウントアップ作ろう
って事になりました。
function indexで入れた$sqlと
ページ数出してる$nowpageさえ取り出せればいいんですけどね。
>>368 「Ajax使え」と、お上からのお達しやでぇ…
370 :
368 :2011/09/14(水) 14:40:37.39 ID:???
>>369 後半はどうでもいいけど、
一旦Ajaxの事は忘れて、普通のリンク($html->link)でコントローラーの$hogeに値を入れる方法を考えて。
どういうURLを渡したら$hogeに値が入るか。
それがわかったらviewの$html->linkの所を$ajax->linkにすればいい。
371 :
361 :2011/09/14(水) 14:47:07.01 ID:MD6DgTpS
>>363 ,364
すいません、今は問題をシンプルにしようと、引数は受け取っていないのでした。
http://phpspot.org/blog/archives/2007/02/phpphpthumbnail.html これを使って、
$tn_image = new Thumbnail("sample.jpg", 0, 1, 0);
$tn_image->show();
こういうサイズ・画像を決め打ちにしています。
ちなみに最初は上記のクラスライブラリを使わずに自分のコードでサムネイルを作っていました。
自分で書いたコードのせいかと思い、上記のライブラリを使ったのですが、結果は変わらずです。
上記の単純なコードをphpファイルとして単純にアクセスすると
サムネイルが表示され、ファイルサイズも小さくなってくれます。
このことからコードは正しく動いていると思います。
なぜかCakePHPのコントローラにするとファイルサイズが小さくならないのです。
>>371 出てきた画像をバイナリエディタで覗いて比べてみれば?
373 :
365 :2011/09/14(水) 15:09:54.34 ID:???
>>370 わからんっ
なるほど、自分の場合は基礎ができてないんだな
いきなりCakePHPから入るんじゃなくて
ちゃんとPHPから勉強する事にする
374 :
361 :2011/09/14(水) 15:10:19.72 ID:MD6DgTpS
>>372 おおおお!!
Cakeで生成した画像にCake の出すエラーのビューHTMLが含まれていました!
ありがとうございます!!!!
こんなバイナリでも見た目は全く正常な画像出してくれるんですね。。。ややこしい。。
htmlヘルパーのlink項目全然載ってないわ さすが秀和… 変数の受け渡しなんて全くと言っていいほど出てこない ギブアップ 答えください
秀和w
ネットでも探してるけど ビューからコントローラへの受け渡しって無くない? HTMLヘルパー使う記述なんて全然出てこないわ
ひでかずちゃんとしろよw
「しゅうわ」だろ? みんなどんな本読んでんの?
SQLServerのストアドを使いたいのですが、Cakeから使えますか? サンプル探そうと検索したんですが出てこないし・・・ 出来れば使い方も教えてもらえると助かります。
説明下手だなぁ
>>380 の説明通りやると
<?php echo $ajax->link('ajax',null,array('update'=>'div','url'=>"ajax/$hoge")); ?>
function ajax($hoge){ echo "$hoge"; }
これで$hogeの内容が出力される
こうなる
↓ビューの一部 <?php echo $ajax->link('ajax',null,array('update'=>'div','url'=>"ajax/$hoge")); ?> ↓コントローラーの一部 function ajax($hoge){ echo "$hoge"; } だろJK
設計の相談があります。 ■usersテーブル(会員データを保存) id、name、created ■photosテーブル(会員が投稿した写真を保存) id、user_id、name こういうテーブル構成になっているとします。 users→photosはbeLongsToの関係です。 Authでログインした後、$this->Auth->user();を参照しても 結合しているphotosのデータが取得されません。 どうしたらいいのでしょうか?
User->find()
>>387 全テーブルに年月日を保持するcreated、modifiedを作った方がトラブル時に確認しやすいよ。
>>387 photosテーブルのuser_idにキーを宣言し忘れとか
単純なミスじゃないの?
あと全テーブルにcreated、modifiedをいれるって。。
余計なカラムをいれると負荷かかるじゃん
トラブル時の解決はqueryログ追え
>>390 入れ忘れじゃないです。
Authのログインだとアソシエーションが反映されないようで、
ログインを手動にして、認証後に
>>388 してセッションに保存しています。
しかし、なにか違和感があるので、他に出来ないかと思い、質問しました
うん、だから $this->Auth->user() したあとに $this->Photo->find()
違和感があるのはAuthから引っ張ろうとしてるからだよ。
なんか習作作ろうと思うんだけど、何がいいだろうか?
俺習作でソーシャルゲームつくって、今モバゲーで公開してるよ
え、cake関係なくね
>>387 そもそも認証系にテーブル結合するような設計が間違いと思う。
認証系て
■userテーブル
ID
名前
ログイン時間
登録時間
でいいじゃん。
photosテーブルてカラム内容からして
認証と関係なさそうだし。
一度認証したら
memchachedでIDと名前をもたせとけばいい
認証系にテーブル結合する意味がないし
セキュリティ的にも負荷的にもよくない
>>397 >そもそも認証系にテーブル結合するような設計が間違いと思う。
と言う事は、あとから必要になったら
その都度findしてデータを持ってくるのが正しいやり方なんですね。
Cake使う前も認証時には画像(プロフィール画像とか)を
ログイン時に保存していました。毎回参照する物なので。
でも、やり方が間違っていたのだと気づきました。
みなさん、アドバイスありがとうございます。
>>387 そもそも
users->photosがhasOneで
photos->usersがbelongsTo
>>398 いや、やりかたは間違ってるとは思わないよ。
ただAuthコンポーネントは結合されたテーブルの中身は
持ってこないというのが現状の仕様だからとしか言いようがない。
Authコンポーネントはリクエスト毎に呼び出されるから
結合させると重くなるとかが理由じゃないかな。
CakePHP初心者で勉強しています。レイアウト機能で質問があります。 左右2カラムのサイトを作成時、左側のカラムが固定で特に変更しなくて良い場合に レイアウト機能でうまく対応できないでしょうか? 入門書には以下のように書かれていますが <body> <?php echo $content_for_layout; ?> </body> たとえば以下の、左カラムにユーザ作成のコンテンツを表示できるでしょうか? <div id="leftcolumn"> <?php echo $???????????; ?> </div> <div id="rightcolumn"> <?php echo $content_for_layout; ?> </div>
固定だったらそのままその???の部分にHTMLを書けばいいんじゃないか?
>>403 しつれいしました。 固定といってもログインユーザのユーザ名など少しはDB情報を表示します。
度々すみませんが、教えて下さい。 cakephpでフォームからデータベースに保存と 同時にメール送信をしたいと考えてます。 テストでビュー、コントローラー、モデル、 それからコンポーネントにQdmailを入れてみて 起動させてみたのですが、メール送信ができて いません。 去年、自作でphpを書いたときは、PCのphp.iniを いじって送信が出来たのですが、今回はそれでも 上手くいきません。 どなたか、フォームからデータベースに保存と 同時にメール送信するサンプルプログラムなど をご存知の方は見えませんでしょうか? 私自身、プログラムの知識はかじった程度で 今も手探りで作っております。 プログラムひとつまともに動かせない情けない 人間ですが、どうか、お願い致します。
まずは問題点の切り分けできるところはやろうぜ CakePHPじゃなかったらメール送信できてるの?
>>406 cakephpを入れる前の自作メールは上手くいきました。
mb_send_mailでヘッダー情報などと一緒に
送っていました。
ただ、今はこちらも動きません。
元々htmlのフォームからphpプログラムにゆく
形でした。
cakephpを入れるとルートがおかしいのか、MVC
の形にしてないのが問題かわかりませんが
「そのhtmlコントローラーが無い」とエラーに
なって確認が出来ません。
もちろん、サーバにアップしてテストしたよね?
.htaccess入って変わったとかではないの?
>>408 しました。
プライベートアドレスはスパムばっかり来る
ためメールソフトが使えなかったので、web上で
確認できるYahooとGmailでテストしました。
php.iniをいじったのは、Yahooで受信する設定
をするためmail functionの項目SMTPサーバーの
設定をするためだったと思います。
>web上で確認できるYahooとGmailでテストしました。 「サーバにアップしてテストした」の意味が違くね? >Yahooで受信する設定 >をするためmail functionの項目SMTPサーバーの >設定をするためだったと思います。 Yahooのサーバーで、CakePHPという意味でサーバにアップしてテスト・・・という意味だと思うのだが。
>>405 Qdmailはバグが多いから俺つかってない。
テストとしてmail()関数でやってみれば?
>>411 すみません、しっかりと書いておりませんでした。
YahooやGmailを使って上手くいったのは、自作
phpプログラムの方です。
cakephpでのメール送信のテストはまだしておりません。
localでテストした段階までのところです。
一度、サーバーに上げて試してみます。
申し訳ありません。
表示されるエラーがあるならコピペしてみ?パスとかの部分は削って良いからさ
サーバーに上げて試して見ました。 localでやっていたものそのままで、フォーム→ 確認→データベース保存・メール送信→完了 画面の順に移行する内容です。 エラーは無く、データベースに保存(日本語文字 化け)されてメールは送信されてません。 コントローラーのメール送信のプログラムに 問題があるのでしょうか?
CakePHPのSQL操作って面倒くさいよね。結合とか。
CakePHPのバグがテーブルの中身全部消してしまう被害に遭遇した 状況次第でDELETE xxxx WHERE 1=1というSQLを発行する、恐ろしいバグがあるなんて… お前らも気を付けろよ、新しいVerでは直ってるらしいが
SQL文を直接書きつつpaginateってできないのかな。 元々JSPとかで直接書きだったから独自の書き方が非常に面倒くさい。
?
>>417 それよくあるね。
怖すぎだわ。
一度、本番のデータ死んで、
おれも死のうかと思ったけど、
バクアッブから復元して、
うやむやにしてまだバレてないわ、。
DELETE * where 1=1; みたいに「全消し」が動作する場合は何か確認が欲しいよね
確かに、商用システムとかでそれやられちゃ洒落にならんだ炉 ものすごいバグじゃね?もっと騒がれても良いはずなんだが
こええ…
delete table where 1=1 rm -rf /
商用システムならバックアップ取ってるだろうけど だから問題ないって話じゃないな 前代未聞の糞フレームワーク
こういうのがあると、フレームワーク自体オワコンに感じるな・・・ オレオレだと最低限、自分で把握してるから、こういうミスは無いけども
cakephpは廃れてきてるよな 今のバージョンsmartyの対応もしてないんだぜ?
そんな事言ったらSmartyはオワコン厨がくるぞー
Smartyはオワコン
smartyと聞いて smartyはどう見てもオワコンだろ
Smartyはオワコン!Smartyはオワコン! Smartyはオワコンったらオワコン! うわああああああああああああああ
Smartyがオワコンなら、別のテンプレートエンジンを使ってるの? それともテンプレートエンジン自体がオワコンなのか?
またその話題かよ
>>433 テンプレートエンジン自体がオワコンなんじゃね
>>435 じゃ、仕事で「自分でテンプレの文章変更したい」
とかクライアントが言い出したらどうするの?
変更させないようにするの?
それともブログみたいに一部のみにするのか?
SmartyっていうかCakePHPがオワコン クエリでテーブル渡すという機能がありながら ページネーションは規則に沿わないといけないとか page(SQLで取り出したテーブル,項目数)とかそんなシンプルなんでいいんだYO
あはは、悔しいの?
CakePHPはテーブル全消しの罪によりオワコン刑になりました 悔しいです
オワートコントローラ
結局、その会社・開発者ごとのオレオレで良いんじゃないかと思えてきた。 オレオレの仕様を覚えるのって、そんなに時間かからないだろうし。 一人で作ってる奴なら別にFW意識しなくても良いだろうしな。
そらそうだよ、オレオレが一番良い 作る時間がないから仕方なくFW使ってるだけ 作れるならオレオレが一番良い
あとCakeはそれほど良いFWではないってのも確か なんか使用者多そうだから使ってみたけど、どうやらそうでもないし バグはあるし、使いにくいし 昔の自分にアドバイス送れるなら、Cakeはやめとけ、と言う
でも、Cakeの記述って分かりやすいんだよね だから、オレオレでもCake風のコーディングが出来るように作ってるし。
どのへんが?
CakePHPと俺俺フレームワークのダメな部分だけを合成するとか メンテナによほど恨みがあるらしいな
>>445 配列で各部分が。findの結果を連想配列で取得できるけど
俺にはこれがわかりやすい。どのテーブルのデータか判断付くし。
配列で各部分が→配列で書く部分が
SQLの命名規則のせいで汎用性が悪くなってるのは明らか 他のシステムで使ってたテーブルがそのままじゃ使えないって不便すぎる
その命名規則は守らなくても良いでしょ。 モデルで変更できるんだし。
Zend→Cake→CI→Yii と使用してきたけどCakeだけは2度と使わないだろうと思う。 余計なおせっかいが多すぎ 使いこなせたら強力なんだろうけど
なんでここにいるの・・・
ぐぐっても1.2の情報ばかり出てくるって話あったけど 要は使ってる人が減ってるって事だろ、だから新しい情報がないと どの程度のものなんじゃね 俺は、まあ、これで作っちゃったシステムがあるから仕方なくそのまま使ってる
どの程度の→その程度の
455 :
nobodyさん :2011/09/22(木) 19:34:23.65 ID:WQS0mmbw
ケイタイとPCを判別するのにlayoutのctpに require_once('Net/UserAgent/Mobile.php'); $agent = Net_UserAgent_Mobile::singleton(); と書いて、switchで case ($agent->isDoCoMo()): $carrer = 'docomo'; というふうにやったんですが、 これを書いたファイル内では$carrerは使えるんですが、 このlayoutを利用しているviews側のctpファイルでは$carrerが未定義ってなってしまいます どうやったら利用できますでしょうか ご教示くださいますようよろしくお願いいたします
456 :
455 :2011/09/22(木) 20:44:02.48 ID:WQS0mmbw
webrootにphpファイルで作っておいて各ページから呼ぶようにしました お騒がせしました
ここはアンチスレですか? 誰も擁護しないw
好きで使っている人なんていないってことだ
Yii使ったらCakeには戻れないよ。
よし、じゃあおれ、Yiiの勉強始める
>>460 いっその事PHPなんて使うのやめようぜ
こんな後付け拡張言語選ぶ必要ないだろ
そうだそうだ!ブレインファックで十分じゃないか!
463 :
nobodyさん :2011/09/24(土) 02:54:17.08 ID:eksj+xv1
Yii使ったらCakePHPには戻れない。これは自分も同じです。 でもCakePHPのが日本語情報多いですし、仕事も多いです。
多いか?
使いこなせる人が少ないから、いつまで経っても募集しているっていうのもあるぞ。 COBOLとか年中募集している。
あれはまた別の理由な気が…
日本語情報が多くて、一応それなりに実績があるからCakeが採用されることが多いと思うよ。
日本語情報多いか? 初心者向けの本が多く出てるってこと?
検索してみると、ブログとかのネタで取り上げてる事多いよ。 なにかつまったら、検索してみると大抵、同じところで詰まってた人のブログから解決方法が見つかる。
そうそう。俺もそれで採用した。あと、日本製のプラグインも多いし。
上でも言われてるけど、それらって古い情報が多くない? 俺はそれで困った
今年2月〜4月で開発してて、 1.2系の、1.3系には使えないネタが多くてちょっと苦労した。
確かに、古い情報が多いってのはあるねぇ。 テンプレートの拡張子が違うのに気づかなかった事あったし。 でもまぁ、「こういう風にする、こういう風にしたい」ってゆーか、あやふやだが、そういった雰囲気がつかめればあとはマニュアルとブログを交互ににらめっこしてればなんとか分かるっつーもん・・・かな。
マニュアルが充実してればまだなんとかなるんだがな…
実際使ってみて困った問題は、他人のブログなどを頼りにせざるを得ないね
回数は少ないが、このスレで助けられたこともある
海外の掲示板に頼ったこともあった
ひとまずCakeに関しては、
>>417 のバグでテーブル全部消された恨みは一生忘れん
お客様根性丸出しのやつがOSSを使うとこうなるの例
度々すみません。 メール送信プログラムですが、シンプルにして もどうも上手くいきません。 orz コントローラーのプログラム内容が間違って いるのは確実なのですが、どのように直したら よいのかわかっていません。 公開処刑を覚悟でその部分のコードを書きます ので、愚かな私に、どうか、お知恵を貸して いただけないでしょうか? よろしくお願いします。
viewのフォームからcontrollerのfunction soushin に渡してメールを送信する形です。 プログラム部分はcakephpでない自作phpプログラム で上手くいったときのものを入れました。 以下、問題と思うプログラム部分です。 どうか、お力をお貸しいただけますよう、お願いします。
--controllerコード (メール送信部分L31〜L58)-- function soushin(){ //文字コード設定 mb_language("ja"); mb_Internal_encoding("UTF-8"); //件名 $subject = "お問い合わせ"; //宛先 $to = "〇〇〇〇@yahoo.co.jp"; //POST受取 //差出人メールアドレス $header = "From:".$_POST["mailaddress"]; //本文 $body. = "名前:".$_POST["name"]."\n"; $body. = "内容:".$_POST["naiyou"]."\n"; if(mb_send_mail($to,$subject,$body,$header)){ echo "メール送信成功しました。"; }else{ echo "メール送信失敗しました。"; } $this->redirect("./index"); }
--webでのエラー内容-- Undefined index: mailaddress[app/controller/〇〇_controller.php,line45] Undefined index: name[app/controller/〇〇_controller.php,line47] Undefined variable: body[app/controller/〇〇_controller.php,line48] Undefined index: naiyou[app/controller/〇〇_controller.php,line48] メール送信成功しました。(文字化け) cannot modify header information - headers already sent by 〜 [CORE/cake/libs/controller/controller.php,line744] ------------------ L743〜L745 function header($status){ header($status); } この程度のプログラムが組めない情けない人間 ですが、どうか、お力をお貸し下さいますよう お願いします。
>>479 Undefined ??は変数未定義。前レスくらい読め。
cannot modify header information - headers already sent by 〜
はredirectの前に文字が出力されている(Undefinedの表示)ので
redirectできないっていう意味。これもググれば頻出の現象。
mb_send_mailはtrueを返しているんだから
引数が間違ってるか、送信先のメールアドレスで弾かれているとか。
引数の$to,$subject,$body,$headerくらいはvar_dumpして狙いどおりの
値が入っているか追ってみろ。
よくあるのは、Fromとサーバのドメイン違いで迷惑メール扱いされるパターンとか。
Yiiではベースモデル、フロントエンドモデル、バックエンドモデルと分けられるんですが CakePHPではみなさんどのようにしていますか? 今のところ1個のモデルにフロントエンド、バックエンドのメソッドなどが一緒くたになっていてモデルが膨れ上がりつつあって困っています
Cakeはモデルが膨れ上がるような規模で使うFMじゃないと思う
モデルビューコントローラーの ビューとコントローラーは表示と処理的な物ってわかるけど モデルがよくわかんない MySQLのテーブル名が規則に反してる時にしか使ってない
ええっ なにかしら損してるぞおまえ
モデルはオブジェクト指向で言うところのクラスみたいなもので、コントローラーはビュー(GUI)とモデルの橋渡しをさせるだけ。 ロジックをモデルに書くのは、つまりクラスと同じでデータのふるまい(型)を定義したものがモデルだから。 …と解釈してる。
テキストボックスに入れた文字列を、同じページの下部にどんどん追加していく 画面を作りのたいのだけど、どうすればいいですか? 今ビューテンプレート内に <? PHP $form->text(); $ajax->submit("追加"); という感じにAjaxのサブミットボタンを用意したのですが、入口としてはこれであっていますか?
>>484 2/3しか使ってないから損してるのはわかるけど
勉強してる本に載ってるモデルの使い方がそれしかなかった
秀和システムの「CakePHP1.3によるWebアプリケーション開発」って本
別の本教会に行ってくる
どこの教会ですか?
「今日買いに行ってくる」だよ!!ワザとだよ!!ついだよ!! 無宗教だよ!!先祖の墓に行っても「なまんだー」だよ!!
>>489 俺もその本で勉強したけど、嘘つけ
バリデーションや入力値チェックメソッドの例あったろうが
そういうのを全部モデルに押し込んでいかないと、コントローラーが肥っちまうんだよ
>>492 なぜRailsを先に学ぶべきなのか、詳しく教えていただけると助かります
>>484 モデルというのは一般的にはビジネスロジックと言われてるヤツだ
と言っても分からんだろうから
受け取ったデータを処理する部分
とでも思ってくれ。
プログラムの本質はデータ処理であって、表示などの見かけは勝手にやってくれってこった
>>494 cakephpがRailsを参考に作られたからだと推察する
>>488 submitにupdateを指定しないと。
でも今から勉強するならAjaxヘルパーじゃなくてJsヘルパーにしましょう。
2.0が待ちきれない! 1.3の時は2週間ごとにRC更新して、RC4の次が正式版リリースだったけど、今回も同じパターンだろうか 2.0は9/5にRC1、9/19にRC2と来たから、10/2にRC3、10/16にRC4、10/30に正式版リリース!
うむ… 期待していいのだろうか…
>>496 そんなん知ってるよ
それとcakeを後回しにしてでもrailsってのが繋がらなくて
Railsのほうが簡単なの? Rubyなんて全然知らないんだけど
PHPにもRailsみたいな定番のフレームワークがあっても良いんだけどね 今んところまだまだいろいろさまよってる感じですねぇ
>>497 ありがとうございます。
$js からボタンって出せるのでしたか?
$table = $this->Shin->query("$sql"); と、SQLからデータを持ってきて($sqlにはStringでSQL文が入力されています) for($i = 0;$i < count($table);$i++){ $arr = $table[$i]; echo "<tr>"; echo "<td nowrap>{$arr['shin']['NO']}</td>"; echo "</tr>"; } という感じでテーブルを出力してるのですが、 データの項目が多くなってくると表示する量が多くなるので 5件ずつ出力したいと思っています。 ページネーションを使って$tableの中身を5件ずつ出力するには どうすればいいのでしょうか、ご教授お願いします。
cakebookより面白サイトっってあんの
cookbookね。料理書。
>>480 >>481 お礼が遅くなって、申し訳ありません。
改めて、有難うございました。
いろいろと試行錯誤の上、メール送信は
とりあえず送れたのですが、迷惑メール扱いと
文字化けと送るべきフォームの内容が入って
いませんでした。
orz
var_dumpして確認したとき、既に入ってなかった
ので、私の引数のいれ方が間違っているの
だろうと思います。
cannot modify 〜 はまだ出ますので、問題の
あるcake/libs/controller/controller.phpを
いじってみようと思います。
また行き詰まってしまったらご相談に来るかも
しれません。
しばらく自力でトライしてみますので、どうか、
よろしくお願いします。
いやcake/libs/の中は触っちゃあかんで 問題はそこには無いぞw
>>505 読みつつ無い頭でウンウン考えて
$table = $this->Shin->query("$sql");
$table = $this->paginate();
for($i = 0;$i < count($table);$i++){
$arr = $table[$i];
echo "<tr>";
echo "<td nowrap>{$arr['Shin']['NO']}</td>";
echo "</tr>";
}
とすれば表示件数がページネーションで指定した件数になりましたが、
$sqlのSQL文が反映されていないようです。
>>504 の方法ではテーブル名が「shin」でよかった(MySQLのテーブル名)のに対し、
この方法で実行すると「Shin」(modelで設定した名前)になってしまいます。
>>510 $this->Shin->query("$sql") の後に$this->paginate(); やっても意味無いっしょ。
2回クエリを発行してる。
基本的な$this->Model->find()の使い方とかわかってますか?
paginate()はfind()に毛が生えたようなものなので、find()と同じように条件を与えればいい。
どうしても$this->Model->query()を使うなら、
データを持ってくる範囲のLIMITの計算とかORDERとか、最後まで面倒みるつもりで。
Cakeから既存のWebサービスを呼び出して使いたいのですが、参考になるサイトありますか? そのWebサービスにはint型を渡さなくてはいけません。 その後の返り値をCakeのビュー内に表示するということをやりたいのです。
>>511 >基本的な$this->Model->find()の使い方とかわかってますか?
わかってない…です。
SQL文を直接書いて、ページネーションはできないという事でしょうか?
>>513 ちょ、おま・・・
何のためにCake使ってんだよ
SQL直接もできるけど、パスってなんですか?って聞いてくる自称サッカー選手にオフサイド教えるようなもん
>>514 PHPに触れた事がない状態で
「CakePHP使ってコレ(Webページ)作って」と言われたからです。
JSPならわかるんですけど、同じようなものだと思って受けてしまいました。
どうやら野球選手にサッカーのスタメン入りが発表されたようですね
>>512 相手方のインターフェイスにもよるけど単純にRESTとかなら
ライブラリのHttpSocketのマニュアル見ればいい
>>515 よく引き受けたな。会社なら上司からの指令かもしれないけど、
それにしたって全く触った事がないんじゃ、敷居が高すぎるぞ。
>>518 「PHP触った事ないです」とは伝えたんですけどね、
「わからなかったら調べながらやって」とポケットリファレンスだけ渡されまして。
ここ1週間ほどページネーションでずっと詰まってます。
ビュー側で条件の入力をテキストボックスやチェックボックスで行って
それをサブミットしてコントローラ側で受け、if文でSQLの条件式を追加していく
そのSQL文を実行して、得た内容をテーブルに表示。
という感じで作ってみたものの、
表示件数が多くなるとそれだけ1ページの表示量も増えてしまう、
かといってページネーションを使おうとするとSQL文が使えなくなってしまう。
という状態です。
>>519 Cakeの機能は使わずにプレーンなSQLでやるにしてもページ数とか今見てるページに合わせて
SQL中のLIMITとか設定すればいいだけで難しくは無いことでしょ。
ただそれを簡単にするためのフレームワークなんだから本末転倒だけどw
やっぱ本家のcookbookのブログチュートリアルぐらいはやっておいた方がいいかと。
すげーかわいそう 上司が
言われた事(一覧を表示。条件を入力して抽出する) はできてるので、後は自己満足の世界なんです。 本版環境でどれだけのデータが入るのかわからないので、 できる事はやっておいた方が良いかなと
>>521 可哀想か?519にやらせる事自体が無謀だろ。
他に書いてるけど、スポーツが得意だからって、
野球選手にサッカーの試合でろって言ってるのと同じだ。
他の奴はどうか知らんが、PHPで5年開発してる俺でも
ネットで調べたり、ロジックに長考したりするのに、
全く経験無い奴が出来るはず無いだろ。
Cakeで外部のウェブサービスから情報をXML形式で取ってくるということをやりたいのですが、 経験のあるかたいらっしゃいますか? int型の引数をウェブサービスから渡し、帰り値をString型のXMLで受け取る格好です。 どうかよろしくお願いします。
しょうじき
上司の頭がかわいそうだなw
時間があるなら、訳分からなくてもいいから、ひととおりCookbook見てからやった方がいいぞ
他のフレームワークと比べて、CakePHPは癖が強いから
>>524 まず、「ウェブサービスとは何か?」を理解してから質問したら?
ちょっとだけ補足するとGETかPOSTで数値を投げて結果を受け取るだけです。 勉強し直せと言いたくなるのは分かるがw
上司が「フレームワークで能率10倍!」みたいな記事を読んで、それを真に受けて1からやらせてるに100ペリカ
>>515 JSPもわかってないでしょ。
O/RマッピングやMVCが理解できてなさそうだし。
Webアプリ開発の初歩からやり直したほうがよさそう。
繰り返しのことを聞くようで、すみません。 メール送信のプログラムで、どうしても上手く いきません。 頭がこんがらがってきました。 orz もし、よろしければご理解のある方、お力を お貸しいただけないでしょうか? 毎回、教えて君で、自分自身情けなく思って おります。 ただ、どうしてメール送信が上手くいかないの か、どうプログラムを組めば上手くいくのか 解決がなかなか導けません。 どうか、お願い申し上げます。
そんな人ばっかりだなw マニュアル読む。チュートリアルを自分の手を動かしてやってみる。 ぐらいはやったんだろうね?
--controllerのメール送信部分-- function soushin(){ //文字コードの部分は省略します //件名 $subject = "お問い合わせ"; var_dump($subject); //宛先 $to = "〇〇〇〇@yahoo.co.jp"; var_dump($to); //Undefined 〜 を回避するため引数を初期化 $mailaddress = ""; $name = ""; $naiyou = ""; $header = ""; $body = ""; //フォームからデータを受け取り extract($this->params["form"]); $this->data = array("モデル名" => array()); $this->data["モデル名"]["mailaddress"] = $mailaddress; $this->data["モデル名"]["name"] = $name; $this->data["モデル名"]["naiyou"] = $naiyou; //差出人メールアドレス $header = "From:"."$mailaddress"; //本文 $body. = "名前:"."$name"."\n"; $body. = "内容:"."$naiyou"."\n"; //確認 var_dump($header); var_dump($body); }
--web上の表示-- "お問い合わせ""〇〇〇〇@yahoo.co.jp""From:""名前:""内容:" 本来、「:」の後にフォームのデータが入るように 考えたのですが、全く入ってません。 Undefined回避のための初期化した段階で全て 無しになったのでしょうか? フォームから引数に渡す際、 $mailaddress = $this->data["モデル名"]["mailaddress"]; とした方が良いのかも?と思いやってみたの ですが、これだとUndefined 〜 が表示されて エラーになります。 Undefined〜を表示させない他の方法で、php .iniに、 error_reporting(E_ALL & ~E_NOTICE); を設定すれば良いという話があったのですが、 既にサーバー側には指定されており、 function soushin(){ 直後に書いても変わりませんでした。 私のプログラムの書き方が間違っているから 上手くいかないのはわかりますが、現在、 どこを直せば上手くいくのかわかりません。 どうか、お力をお貸し下さい。 お願い致します。
そのレベルのことでつまずいていて、なおかつ社内で誰もサポートしてくれないのなら、 他のまともな会社か別業界に転職した方がいいだろ どうしてもCakePHPでメール送信のコードを書きたいというのなら、まずはPHP入門本を一冊読んでから始めた方がいい
がんばって勉強すれば、一年後ぐらいにはできるようになるよ GOOD LUCK
>>534 >>535 失礼しました。
一度、cakephpから離れてもう一度、phpから
勉強し直します。
メール送信は、まだ、解決してませんが、
少し時間がかかっても、なんとか自力で解決
方法を探してみます。
お時間とらせてすみませんでした。
ご返事、有難うございました。
誰かSet::のベストプラクティスのまとめをくれ どの関数を使えばいいか整理がつかない
エディタ何使ってる? Dreamweaverだとしっくりこない
俺もDW使ってるけど、しっくりくるとかこないのレベルじゃないと思うが。 コードでエディタなんてどれも大差ないだろ。
フレームワーク使う場合はIDEじゃないとさすがにやる気でない
>>538 Eclipse プレアデス All in One
SoupClientからウェブサービスを呼ぶと、返り値がstdClassというクラスとして返って来てしまいます。 これをXMLのテキストとして受け取る方法はあるのでしょうか? よろしくお願いします。
おいしそうなクライアントだな。
vim。 cakehtmlのプラグインでシンタックスもインデントもある程度満足。
おいらはEclipse
NetBeans
おれも eclipse pleiadesall in one
ただのVim
不便だとは思うが、今更切り替える気になれないので
>>544 でも導入してみるか
bakesaleを導入したいと思っています 公式から解凍したフォルダを既存サイトのフォルダにいれると競合したファイルがあったりするんですがやり方が間違っているのでしょうか ご教示下さいますようお願い致します
550 :
nobodyさん :2011/10/01(土) 15:51:28.83 ID:jK5skCaA
Cakeで複雑なSQLを発行しようとすると、とたんにめんどうになるな groupやjoinなどを使ったときのページングとかどうしてる?
>>550 複雑なSQLになるようなら
Model内で直接SQL書いてる。
2.0.0の正式版はいつくらいに出るんだろうねぇ・・・
まあ年度末くらいじゃないの
質問失礼します ローカル上ではリクエスト・レスポンスの速度は問題無いのですが、レンタルサーバーにアップすると反応が10秒以上かかります フレームワーク本体のソースは特に変更はしていません 同様の構成で、同じ様な事象の方がいましたら、問題点や解決方法を教えていただけませんか? version 1.3.12 サーバー ロリポップ
>>554 データベース周りとかじゃないのかな
デバッグONにしてSQLログ見てみたら?
>>555 >>554 です
回答ありがとうございます
Javaがメインの為、詳しい事が分から無いので、これから調べてみます
>>554 です
ひとまずの遅い箇所の特定が出来ました
dispatcher.php の _invoke 一行目
$controller->constructClasses()
$this->log での時間になりますが、上記の処理を通過する度に約三秒かかる事が分かりました(サーバー)
ローカルでは一秒未満です
調べたところ、コントローラーに必要なモデルを読み込むとありますが、
自身の各コントローラーで利用しているモデルは二つ以下です
何か設定の間違いや、チューニングの余地はあるのでしょうか?
複合主キーをサポしてないって…まどか☆マジか…
サイトのURLや管理者のメールアドレスをDBに保存して システム設定として読み込めるようにしています。 ページ推移する毎に何度もfindでデータを取ってくるのではなく、 ファイルに書き出してファイルをincludeする方法があったと思うのですが、 どういうやり方だったか失念しました。 ご存じの方は教えて下さい。よろしくお願いします。
>>560 bootstrap.phpで、
dbから設定を読み込んでConfigure::storeでキャッシュに書き込んでおくと
各コントローラー等からはConfigure::readで読み出せるようになる。
すでにconfigureファイルのキャッシュがあるときはdbから読み出しはスルーする。
設定変更時にはキャッシュをクリアする。
と言った感じで俺はやってます。
>>561 それってcookbookにやり方書いてますかね?
設計図が想像出来ないので、どうググって良いかわかりません・・・
csvファイルをCakeのモデルのデータソースにしてDBと同じように(当然読み込みのみだが)使う方法があると聞いたんだけど やり方わかる人いますか 本当に成功する?
特にりさーちもしてないけど、MySQLのCSVエンジンでなんとかならないかな
せめてSQLiteの方がまだ安全だと思うけどな〜 CSVなんて何書いてあるかなんてまったく保証できないし
railsとどちらが作業効率はいいですか?
rails はい次
railsとphp どちらが仕事ありますか?
PHP はい次
railsにしか出来ないことがあれば革命が起きた事になるので その時はrailsの仕事が増える。 以前のperl vs phpのときは phpの方が明らかに生産性と可読性が高く phpを選ぶ理由が沢山あった。 rubyの場合はwebに特化した言語という思想ではなく 気持ちよくプログラミングするという思想なので HTMLにどう吐き出のが便利とか JavaScriptと連携するには、どうしたら便利とか Flashと連携するには、どうした便利とか ruby開発者(松本)は、そこまで考えてはくれない。
cakephpとrails どちらが安全性は高いですか? どちらがプラグインやソースは情報豊富ですか?
はい、次
Cakeの弱点はスピード面だと思う。 不要なファイルを全て読み込み、classを保持するから重い。 逆にこれを改善できれば(あるいは開発者が指定できれば) Cakeが一番のFWになると思っているのですが、違いますか?
表示に10秒かかるページがあり、他のすぐに表示されるようなページまで、 その10秒かかるページが表示されるまで表示されないんだけど、なぜこうなるの? cakePHP使わずにやれば表示されるし DBかファイルがロックされてるのかと思って調べたけどよくわからなかった。 テーブルが被らず、ビューキャッシュされてるページでもダメだった。 php初めて一ヶ月だから勘違いかもしれないが。 ver1.3.7
>>576 2.0は不要なファイルは読み込まないようになったんじゃなかったっけ?
ただそれだけで他のフレームワーク比で軽くなるとも思えないけど
>>578 余計なファイル読まない・実行しないなら
内部メモリも使用しないから、軽くなりそうなんだけどな。
2.0の情報が少ないから、
どの程度まで改善されているのか分からないのが不安だ
2.0はまだほとんど見てないけど CakePHPは、やりたい事を見た目楽にできる、クールに記述できる、ということにコードの行数を割いてるから、そんな早くもならないt思うよ よーするに、規約が複雑になりすぎたんだな そのお陰で、他のフレームワークと比べてメソッドが肥大化している
>>563 csvファイル読み込む方式はメモリ食いつくしてサーバーダウンするからやめとけ
csvデータをキャッシュで維持させると、さらに簡単にサーバーは死ねる
>>559 複合主キーをサポしてないってことは
ソーシャルゲームで友達テーブルとかつくったら
ORマッピングで実装できんなw
友達テーブル
----------------------
自分ID(PK) 相手ID(PK)
プロフィールテーブル
----------------------
自分ID(PK) 名前
友達とプロフィールテーブル結合して
名前を出すなら、ベタsqlで実装せんとあかんなw
>>583 モデル同士関連づけておけば勝手にとってきてくれるよ
CakePHPの悪い点 sql負荷について軽視しすぎてる 革命を起こすなら アソシエーション に フルスキャンデバッグ機能や カーディナリティデバッグ機能を付ければよい 要は実行計画の自動化
俺はひそかに テーブルの正規化を自動でしてくれるツールを作ろうと思ってる。 DB設計を最適化するツール phpMyadminに組み込めば面白いことになる。
あとphpMyadminにテーブル構成のER図をcsvで吐き出す機能を組み込む予定
CakePHPの悪い点 よくわからんバグが多い APCと一緒に使うとセッションがバグって使えなかったり 散々な目に遭った
CakePHPの悪い点
配列重視なところ。 モデルでやりとりさせてよ。。
2.0でそこは緩和されてるな
railsとcakephp学ぶならどちら? 工数 大規模アクセス前提で
>>592 rails人口は、まだ少ないので
一手が欲しくなったときが致命的
プログラムを極めたいなら rails
webで挑戦して手っ取り早く稼ぎたいなら php
>>590 そこがすごい直感的じゃないし
分かりにくいよね
なんでrailsみたいにオブジェクトにしなかったんだろ
>>593 同じものを作るときの工数についてはどうですか?
セキュリティー面も含め
セキュリティ面も含めたら話しにならない
>>595 どのフレームワークも慣れれば工数の違いは、ほとんどない。
railsの場合は1からライブラリを作る機会が多いと思う。
Cakephpの場合は使いたいライブラリーは、ぐぐったら、その辺に転がってることが多い。
CakePHP 使えるものは、使わせてもらう
rails 使えるものがないから、自分で作る
この差が工数として影響がでる。
セキュリティー面はどんなフレームワークでも
自身で対策コードを書くしかない。
>>597 ありがとう。覚えやすさはどちらかな?
CakePHPで一番有名な認証系(ログイン、サインアップ、メールでのアクティベート)プラグインって何になりますか?
さすがにそれぐらいは自分で調べろよ・・・
でもRailsを触ったことがない自分としては、CakePHPとの比較は、ありがたい あと確認画面等がついているAuth関連のプラグインも知りたいよ。ログイン以外全部自分で作るのはけっこう大変なんだ
そんなに大変じゃないと思う
CakeのAuthがうまく動かなくて大変だった
>>594 symfonyやYiiなんかは基本オブジェクトなんだよな。
やっぱりCakeは合わない。
>>604 これ見ると、俺も”オレオレ”ではエンティティ方式で書いてた。
けど、この書き方だと統一感無いので配列の方が良いと思って今に至る。
人それぞれ好みがあるんだな。
cakeは良くも悪くもPHPらしいフレームワークということで配列主義なんじゃなかったっけ
>>604 basuke氏って今PHPやってるんだ。昔からのMacユーザーならノメモバスターには世話になったはず
CakePHPの悪い点 ユーザーが少ない 昔は多かったのかな、2009年あたりのブログ記事はいっぱい引っかかるね
>>609 日本のみでやってみろよ。明らかにCakeが一番だ
つまりはそういうことだ。
みんな配列きらいなんだな。逆におれは配列が扱いやすくてCakeから離れられん。
結局、どこでどういう配列を扱っているか覚えないといけないからな オブジェクト指向に慣れると面倒臭いだろ
そんなに大差ないと思うけどな
えーぜんぜん違う。 オブジェクトのほうが柔軟に対応できるし、DRYにしやすい。 まあ結局は好みなのか。
柔軟に対応できる分、規則性が無いよ。
みなさん管理画面ってどうやって作ってます? 一つ一つコードを書いていくのか、プラグインなど利用しているのか。
専用の管理画面作ってるよ。appも分けて。
appを分けるってことは、CakePHPのappディレクトリを複数持つということですか?
>>618 その手があったか
ソッチの方がシンプルに実装できそうだな
俺はわざわざprefixとか利用してadmin_indexみたいな形でやってたわ
ほー。そいや、俺もsymfonyでは複数のapp作って管理画面と分けてたわ。よーするにフロントコントローラをもひとつって事な。 すっかりCakePHPの流儀に染まって忘れてた。
>>609 Yiiって海外では人気なんだな
なんで日本で流行らんのかわからん
日本語の情報が少ないからでしょ
Railsでいうオブジェクト指向の認識なんだけど、 同じデータベースのテーブルを扱うにしても そのテーブルにあえて違うオブジェクト名を用途別につけてあげて、 それぞれの用途でそのオブジェクト(テーブル)を操作していく。 そんな認識であってるのかな?
オブジェクトとして考えるなら、テーブルの事は一旦忘れた方がいいべ 別に、RDBのテーブルだけじゃなくて、LDAPのデータを取りに行く(っつーか、 データを保持っつーかアクセスする)もんもオブジェクトとして考えられるし、 アクセスする方法があるのなら、ブックマークにアクセスしてオブジェクトとして扱うブックマークオブジェクトも考えられる。 たまたま、RDBのテーブルの内容が、オブジェクトとして扱えるだけ、ってーことなんよ (まぁ、「たまたま」じゃなくて、そういう風に設計してるからなんだけどな)
肝心なとこ忘れた >そのテーブルにあえて違うオブジェクト名を用途別につけてあげて、 >それぞれの用途でそのオブジェクト(テーブル)を操作していく。 同じテーブルでも、抽出の仕方や、扱い方で別物として分けた方が分かりやすい、という場合に違う名前のオブジェクトになる、ってーことで、「あえて」じゃないかな 例えば、ユーザーテーブルを、パスワードとの照合も合わせた機能を認証Objectとして扱う場合、とか。
ヘルパー使ってて思うんだけど、 本来、ヘルパーの使用ってコントローラーでやるべきじゃね? 出来るためビューにPHPのコード書かないのが望ましい気がする。
誤字すまん 出来るためビューに → 出来るだけビューに
どのヘルパーによるか?もあるんだが、確かにヘルパーに寄せるべきでない機能なんじゃないか?というのはある。 だが、例えばHTMLとして出力するときと、CSVとして出力する時はエスケープの仕方が違うので、最低限そういった処理をヘルパーとしてviewでしているのは正しい。
例えばビューで if ($data['User']['status'] == 1) { echo '公開'; } みたいな書き方するけど、こういうのってビューで書くのおかしいと思う。
ビュー側は <? echo $model->getStatus(); ?> みたいにしたい。 getStatusの中で分岐。
よくわらかんが、たとえばlayouts/default.ctpのビューで <?php if (!$this->Session->check('Auth.User')): ?> <a href="<?php echo Router::url('/users/register'); ?>">新規登録</a> <?php endif; ?> こういうのもあなた的にはおかしいんですか?
ビューを「デザインする場所」だと思えばおかしいかも知れんけど、
「表示を司るプログラムを書く場所」だと思えばいいんじゃないの
>>631 elementからrequestActionを投げるのがそれに近いのでは。
>>633 そうすると、どう考えてもビューをデザイナーがいじる事は無理だよね。
CMSでよくある、管理画面からテンプレート(ビュー)を編集とかも。
632のようにビューで分岐させるのは、ありだと思う ケースバイケースだけど これは、デザイナーよりの分岐なので デザイナーに編集してもらった方が楽 これくらいの分岐条件ならデザイナーでも、わかると思う。 これを関数で処理するとなれば、HTMLタグを関数内に入れる事になる 要は新規登録のリンクをヘルパーとして扱うのは、効率的に悪い。 新規登録のリンクは、関数として何度も使うことが無い。 新規登録、会員登録の分岐は、それ用にビューをつくっておいて メインのビューから読み込ませればよい
たしかにケースバイケースだな。 効率と保守性の問題。
俺的にはビューはデザイナに任せるから、PHPのコードが書いてあるなんてありえんのだが みんなよくやるね
というかデザイナーが仕上げた後にphpコードをプログラマが埋め込む。 phpコードを埋め込んだビューにデザイナが手を付けることはない。 デザイン出来上がり ↓ プログラム組み込み
自分で書いたSQL文をページネーションしたい場合どうしたらいい?
ちょっとしたデータをphpの配列に書いてあってincludeして使いたい場合、どのフォルダに置く?
Configureに読み込ませればいいんでね?
ぶーつとらっぷ
>>641 configフォルダのこと?
>>642 bootstrapだと全ファイルにincludeされて重くならないかな
気にするほどではない?ファイルサイズは100KBないぐらい
俺は「common」ってフォルダ作って、その中にファイル置いてる。 で、bootstrap.phpでincludeしている。 この方が自分が見た目でも分かりやすし、管理しやすいよ。
vendorsフォルダに入れて、使いたいときにApp::importするとか
>>643 Configureクラスに、必要に応じて設定を読み込ませられるメソッドがあった、ってーこと。なんだったかな。。。
そいつを使うと、確かconfigフォルダにファイルを置いておけば、ファイル名渡してやると必要に応じて読み込めたよーな。
設計について相談です。 mypageというコントローラーがあって、 日記の表示なら/mypage/diary_list、編集なら/mypage/diary_edit というアクションにしているのですが、 これをするとmypage_controller.phpのソースが長くなります。 皆さんはどうしていますか?diary_controller.phpを作って そこでindexとかeditのアクションを作っていくパターンでしょうか?
>>647 mypageとdiaryのテーブル構造ってどうなってます?
質問です 言語というフォルダがあるとして 1.Japanese 2.English 3.Spanish 4.Chinese とレコードがあるとしたら リレーションキーとなるフィールドは別途数字フィールドを用意したほうがいいですか? それとも JAN ENG ESP CHN のように省略系の入った文字列フィールドで繋ぐのはありですか? 後者のほうが頭に入れておきやすいのですが
訂正。 フォルダと書きましたが テーブルでした。
>>649 languagesテーブルはレコードが4行のみ?これから増える場合とかありますか?
>>647 いくつか方法思いついたけど、根源の「listとeditだけで気になるほどソースが長くなる」症状がどういうものかが分からんからなんとも言えん。
確か、CakePHPを使う人が勘違いするパターンとかいう話であったが、本当はモデルに実装するべき処理をコントローラーに置いてしまっていないか?見てみるといいかも
>>649 何のために言語分けるのか分からんのだけど、localeは使わないん?
653 :
647 :2011/10/10(月) 20:56:02.88 ID:???
>>648 mypageというテーブルがあるのではなく、
mypageと言うのは、マイページ=会員専用のページという意味です。
diaryはタイトルとか内容がある、普通の日記です。(例として出しました)
>>652 findを書くだけでも1つのコントローラーに書いていけば長くなりませんか?
あと、652さんのレスを見ると、私の質問でいうと
「diary_list」とか「diary_edit」にするのが一般的なのでしょうか?
ソースが長くなっても視認性は劣りますが、
「みんなそうしてるよ。気にするな」であれば良いのですが・・。
そもそもfindを組み立てるのはモデルでやって 結果をコントロールで受け取って、ビューに渡す [HogeModel] public function latestComments{ return $this->find('all', array(...)); } [HogesController] public function index() { $this->set('models', $this->Hoge->latestComments()) } みたいな。
最初はbakeで焼いてみればいいのに。 基本的にはこんな感じなんだな。ってのがbakeで生成されたコードみればだいたいわかるしょ。
なんでうちのエンジニアbakeつかわねぇんだろ。
658 :
647 :2011/10/11(火) 02:55:12.36 ID:???
>>654-655 findの書き方は別として、私が悩んでいるのは
>「diary_list」とか「diary_edit」にするのが一般的なのでしょうか?
という部分であったりもします。
>>655 さんのレスを見ると、diary_list・diary_editみたいなアクションを
コントローラーに作成していくパターンで良いのかもしれませんが、
普通は、「機能名_動作」というアクションにするので、
ここに違和感があるわけです。
この部分に関して言及されていないので、
気にしなくても良いのかもしれませんが、
気にしないとURLが変わるので、私としては気になります。
659 :
647 :2011/10/11(火) 03:01:25.43 ID:???
すみません。上記の文が変なので書き直します。
----------
>>654-655 findの書き方は別として、私が悩んでいるのは
>「diary_list」とか「diary_edit」にするのが一般的なのでしょうか?
という部分です。
>>655 さんのレスを見ると、diary_listやdiary_editみたいなアクションを
コントローラーに作成していくパターンで良いのかもしれませんが、
普通は、「機能・コンテンツ名=コントローラー」「動作=アクション」になるので、
diary_listみたいに1つのアクションにするのは違和感があります。
この部分に関して言及されていないので、
気にしなくても良いのかもしれませんが、
気にしないとURLが変わるので、私としては気になっています。
CakePHP2使ってる人いる?
3なら使ってるよ
ページを移動するたびにSQLを発行して読みに行ってるのですが function内で設定した内容を次回に持ち越す というような事をするにはどうすればよいのでせうか? ▲保存されたデータがあるか ┃保存されたデータの呼出し ╋━━━━ ┃SQLの発行 ┃呼び出したデータの保存 ▼ みたいな
663 :
nobodyさん :2011/10/11(火) 14:41:18.46 ID:vJdgBzio
1.3 で質問なんですが、 例えば Test1 テーブルと Test2 テーブルがあったとして、 この2つのテーブルから Test1, Test2 それぞれでなく、 あわせて新着順に10個の項目を取得する方法はありますでしょうか?
結合して時間をキーに降順かけてから10個取り出せば良いんじゃないの
参照(SELECT)だけなら2つのテーブルのviewを作った方がすっきりすると思う。
>>662 cache
普通はよくアクセスするページの保存に使うが、sqlの結果そのものを保存する場合にも使っちまおう、というのも見かけた事がある。ADOdbの確かメソッド名のどこかにcacheとか名前ついてるやつ。
だがまぁ、ふつうは次回に持ち越すなどと考えないでpagenationを使うもんだ
自分が考えた流れ図通りに作れないとモチベーション一気に下がるよね
>>667 Aを表示(SQL読み込み)→B表示→ページ移動→A表示(再読み込み)
って流れになってるから
Aを表示(テーブル保存)→B表示→ページ移動→A表示(保存したテーブルから読み込み)
っていうのをやりたい
モデルにfindを書いているのですが、 コントローラーからfindの結果を取得して それをpaginateにしてビューに渡すと言った事が出来るのでしょうか? もし出来る場合はソースの書き方を教えて下さい。
function index(){ $data = $this->paginate(); $this->set('data',$data); }
自分はこう書きます function index(){ $this->paginate = $this->ModelName->methodName(); $this->set('data', $this->paginate()); }
>>671-672 それは普通にコントローラーでpaginateしてるだけですよね?
そうではなくて、findの箇所はモデル内で作成しています。
それを取得してpaginateのfind箇所を置き換えられないかと思い質問しました。
#test_controller
$list = $this->Test->getFind($options);
$this->set('test_list', $this->paginate($list));
こういうイメージです。(もちろんこれでは動きませんが...)
>>673 モデルの中で自己流でfindをオーバーライドしてるなら
_findAll,_findCount,_findFirstあたりもきちっとつくらねばならん。
この辺はPagenateがどういう動きをしてるか、Modelクラスのソース追って下さい。
流れ図は思い浮かぶんだけど表現する方法がないのがもどかしいぉー ずーっとJavaやってたからJavaベースで思い浮かぶのがそもそもの敗因
規模が大きくなると、ビューだけでもlayoutやelement数が増えるよね。 1つのファイルにif入れたり、コントローラーからsetするのも限界があるし。 (ソースが汚くなって見づらいから、ファイルを分けた方が視認性が良くなる
>>673 672を書いたものですけど、勘違いされてるようなのでもう少し詳しく書くと
モデル :
function methodName($user_id)
{
return array(
'fields' => array('...'),
'conditions' => array('ModelName.user_id' => $user_id),
'order' => array('Hoge.id DESC'),
);
}
コントローラ :
function index(){
$this->paginate = $this->ModelName->methodName($this->Auth->user('id'));
$this->set('data', $this->paginate());
}
みたいな感じです
あなたがいうモデルでfind組み立てて、コントローラでpaginateに代入し、ビューに渡すという流れです
>>680 せっかく説明していただいたのに申し訳ないのですが、希望は違います。
findだけで済む箇所とpaginateまで生成したい箇所があるので、
コントローラーでそれを操作したいと思い、
>>670 のように質問しました。
680さんのは基本的なオプション指定だけをモデルに書いて
それをpaginateに渡すイメージですが、そうではありません。
なるほど。こちらの勘違いでした。すみません。 以下が妥当かと。 モデル: public function getFind($paginate=true) { $criteria = array( 'fields' => array(...), 'order' => 'Word.id DESC', ); if ($paginate) return $criteria; else return $this->find('all', $criteria); } コントローラ: public function ページネーションするアクション() { $this->paginate = $this->ModelName->getFind(); $this->set('models', $this->paginate()); } public function ページネーションしないアクション() { $models = $this->ModelName->getFind(false); $this->set(compact('models')); }
>>682 ありがとうございます。ぜひ参考にさせていただきます。
viewとcontrollerで共通の処理はどこに置けばいいのかね? 今はhelperに書いてcontrollerからも読み込むようにしてるけど普通?
>>684 興味なのだが、viewとcontroller共通の処理って何?
その2つで共通なら、逆にmodelに書くべきと思うが。
cakephp初心者です。 コントローラクラス内で各メソッドがデータを共有操作できるメンバー変数のようなものはもてないでしょうか? 例えば、indexが呼ばれるたびに1加算されて表示されるようなことがしたいです。以下の方法はダメでした public $ii = 0; fanction index() { echo $ii; $ii++; } $iiのデータが共有されるのは全ユーザではなく、ユーザ単位である必要があります。
厳密には共通の処理じゃなくて、viewでpackしたものをcontrollerでunpackするような処理なんだけどな modelも違うかな…そもそも設計間違ってるのか
>685 質問元と違うが、controllerの方でパンくずリストを登録して、viewの方で表示する場合など
・画像が投稿されているか否か調べる ・投稿されていたらその画像を表示。そうでなければno_image.gifを表示 という2つの処理をするだけでもviewに書いていくと汚くなるんだよな・・・ だからヘルパー作るかコントローラーでfind後に再処理する方が良いと思う
フォームで送信された値を参照するときにつかう $this->data と $this->paramsの違いがよくわかりません。 これらは違いがあるのでしょうか?
リクエストがPOST → $this->data リクエストがGET → $this->params
え、POSTだけどparams使ってるわ 間違いなの?
ヘルパーってビューがプログラムで汚れそうなときに使えるのか ifとか
URLの コントローラー名/アクション名/引数 の引数の部分にファイル名を渡したら、.jpgなどの部分だけ削除されてコントローラーが受け取ってしまう どうすれば拡張子の部分も受け取れますか?URLエンコードしても同じだった
>>690 そういうのはafterFindでいいんじゃね?
>693 bakeしてみたコントローラ見てみるとif ($this->data) などという風に使われている。「出来るから間違いじゃない」という意味では間違いじゃないんだろうが、CakePHPの規約としてはdata使うようになってるみたいだね。 (cookbookだかチュートリアルのどこかにフォームのデータを一元化する為にdataを使うのが正しい、というような事が書いてあった希ガス)
>>697 696じゃないけど、viewに渡すデータ自体の画像の部分をno_image.gifに置き換えちゃうってことじゃないの?
そうすればデータには必ず画像が入ってるからviewはすっきりする。
ただ、MVCの役割を考えるとそこでやるべきかどうかは考えた方がいいかもね。
>>664 なんですが、
>>665 で言われてる結合する、というのがよくわからないんです。
find の第2引数で 'joins' というのがありますが、
これだと 'conditions' でそれぞれのテーブルの対応するフィールドの値を入れてやって関連づけを行わないといけないですよね?
SQL はほとんどわからないので、的外れなことを言ってるかもしれませんが、
2つのテーブルを関連性などなしで単純に全て混ぜてしまって作成日で降順をかける、なんてことは可能でしょうか?
詳しく解説などされているサイトなど教えてもらえると助かります。
今からやるなら1.3と2.0どっちがいいですか?
>>700 そういうつもりならなおさら、DB側でViewを定義したほうがいいと思う。
英語マニュアルとAPI見ながら勉強するのに抵抗無ければ2.0でいいと思うよ まあどのバージョンでも同じ話ではあるけど。
>>701 まだ1.3。
後々2.0がはやってくるとは思うけど、RC止まりなので勉強以上の事はまだ時期尚早。
>>699 なるほど。そう言う意味か。
俺はafterFind使わずに全てviewでやってるな。
日付のフォーマット変更する時もヘルパー作って。
でも、ヘルパーで対応するのは限界があるし、ifが増えて困ってたんだ。
afterFindを使いこなしてviewの内容を簡素にするのも有りだな
706 :
700 :2011/10/15(土) 02:13:04.18 ID:???
>>702 もう少し詳しく教えてもらえますか?
DB 側で View を定義っていうのは具体的にはどういうことでしょうか?
>>706 すんごいヒント与えてもらってるんだから、あとは使ってるDBのマニュアル見た方がよろしいのでは
すんごいヒントっつーか、答えそのものだと思うけど。 ビューの作り方はデータベース名 view とかビューとかで調べればすぐ分かるよ。 (データベースによって細かいとこ違った気がするから、自分で調べた方がいい) 要件に合ってるか分からんけどな。
MVCのVとごっちゃになってるのでは?
710 :
700 :2011/10/15(土) 18:45:56.65 ID:???
>>709 まさにそうでした。
MySQL に View という機能があるということなのですね。
今調べ始めましたが、MySQL文はちんぷんかんぷんなので苦戦中です。
View を作ってそこからデータを取ればいいということは理解しました。
みなさんありがとうございました。
711 :
nobodyさん :2011/10/16(日) 10:45:57.40 ID:85Bgp1nu
CakePHPは、Ruby on Railsの概念の多くを取り入れた、フレームワークです とありますが、それはすなわち、Ruby開発者 まつもとゆきひろ がいなかったら Cake phpは生まれなかった? ということですか。
Railsの開発にはまつもと氏は関わっていない。 というよりむしろ、Rubyがここまで広まったのはRailsがあったから、って事だったんじゃないかなぁ。
714 :
nobodyさん :2011/10/16(日) 11:09:56.42 ID:85Bgp1nu
>>712 かかわっていですけど、CakePHPが影響をうけた
Ruby on Rails は まつもとゆきひろがいなかったら
生まれてなかったわけですよね。
RubyがなかったらPHP on Railsなんかが生まれてただけでしょ PHPの部分は好きな言語に変えろや
>>713 確か拡張子が $this->params->url['ext'] とか、そんなとこに入ってたかと。
たとえば hoge/test.jpg で $this->params->url を debug したら、
Array(
'ext' => 'jpg'
url'' => hoge/test
)
こんな感じになってる。
だからコントローラーで拡張子の有無を調べてやるといいと思う。
了解。ありがとう!
こちらのスレは親切な人が多いのに どうしてRuby on railsのスレは冷たい人間が多いの? 選択するFWでこんなにも平均的な人間性に優劣がつくもんなの?
マジレスすると、いい人と悪い人の数が少ないだけかと。 だから悪い奴のレスが目立つのであって、いい人もいるだろ。 ただし、悪いレスが多いスレにいい人が書き込むかは疑問だが。
マニュアル読んで来いクソ!みたいなのは別に冷たいわけじゃなくてLinuxとかOSS流の親切だろ。 一所懸命マニュアル書いた奴がいるんだから一所懸命マニュアル読め。ってのは間違ってない。
マニュアル嫁はよーするに、レベルが低すぎる質問しとる、みたいな感じじゃね? おみゃーさんだってたとえば、三角関数の授業してる時に乗算の話が分かりません!なんて奴居たら追い出したくなるだろ? まぁ問題は、大抵、質問してる奴は、自分がレベル低すぎってーのを分からないし認めたくないってー所にあるんだよな。
function detail($id){ $data = $this->User->findById($id); if (!empty($data)) { $this->set('data', ); } else { $this->redirect('/user/error'); } } function delete($id){ // detailと同じ内容 if ($this->data) { // 削除用のソース } } こんな感じのuser_controller.phpがあるとします。 削除(delete)する際に登録されているデータを表示して 「このデータを削除しても良いですか?」という画面を表示したいのですが、 deleteアクションにdetailと同じソースを書いてるので違和感があります。 何か良い書き方は無いでしょうか?
>「このデータを削除しても良いですか?」という画面を表示したいのですが、 標準で出てなかったっけ? Javascriptでダイアログが出ると思ってたんだけど。 それじゃなくて、わざわざ削除してもいいですか画面だしたいのなら、削除してもいいですかアクションを作るか、状態を記録して、フラッシュで表示してやるとかなんとかだろうなぁ。
725 :
nobodyさん :2011/10/16(日) 21:15:43.58 ID:85Bgp1nu
cakephpで吐き出されるコード?は、 smarty式ですか? php直書き式ですか?
昔はセキュリティーの関連からわざと javascriptをオフにしてるユーザーが多いでしたけど 現在はどうなんでしょ? そこらへんも考えて開発すべき?
>>726 ajaxと付くものは総じてjavascript有りきの機能です。
よほどのひねくれ者以外、javascriptをOFFにしていたら、Googleすら不便に感じる時代です。
ONにしていると考えてよいです。
クロスブラウザ設計を考えて、jqueryなどのjavascript用FWを導入するのを強くおすすめします。
728 :
723 :2011/10/16(日) 23:38:10.16 ID:???
>>724 いや、そう言う質問じゃなくて、
>>723 のようなソースを書くと、
「詳細画面」以外にも同じようなコードを書く必要があるので、
どうにか簡略化できないものか?と思っての質問です。
あと、javascriptではなくて、確認画面を出したいのです。
730 :
723 :2011/10/17(月) 01:01:02.78 ID:???
>>729 ↓こうするという事ですか?
function delete($id){
$this->detail($id);
if ($this->data) {
$this->User->deleteAll(array('User.id' => $id));
}
}
これでも問題ないと思うのですが、、後々困らないか心配・・・
>>730 729はこういうことを言いたかったんだと思う。
function detail($id){
$this->_common($id);
}
function delete($id){
$this->_common($id);
if ($this->data) {
// 削除用のソース
}
}
function _commonl($id){
$data = $this->User->findById($id);
if (!empty($data)) {
$this->set('data', );
} else {
$this->redirect('/user/error');
}
}
なんつうか・・・cakeとか以前の話ばっかだなw プログラムやってなくていきなりCakeから入っちゃう人が多いの?
2.0.0 Stable!
RCから早かったね。
2.0でbakeしようと思ったらエラー出まくりなんだが・・・ なんなんだよこれ・・・
>>736 タイムゾーンがどうのって注意はされたけど普通に焼けたよ。
でも既存サイトを移行すんのは結構手間っぽいな。
>>737 あれ?
Notice: Undefined index: text みたいのが出まくるんだが・・・
ディレクトリ構成とか、だいぶ変わってるねぇ
ま、2.0が実用化されるまであと1年はかかるだろうな
paginatorで質問なんですが、例えば、1ページ10件表示設定で結果が15件あるときに、 2ページ目になぜか10件表示されるんですが、これを5件にする方法ありますか?
表示されないんだが
自分のやりかたに問題があると みじんも思ってないとこが怖い
cakephp1.3.11 , Flash(as3.0)を使用してログイン制のwebコンテンツを作成しています。 特別な処理をした時にセッションが切れてしまうのですが、わかる人がいれば教えていただけないでしょうか? やっているのは、Flashで簡単なバイナリデータ(画像)を作成し、それをpostしてファイルとしてサーバ側で保存しています。 サーバ側はAuthコンポーネントでログイン管理を行っています。 さらに不思議で、PC起動後1回目に上記の現象が発生するのですが、もう一度ログインするとセッションは切れません。
ローカルかネット上のサーバか教えて下さい
745 :
743 :2011/10/18(火) 14:33:00.58 ID:???
そのバイナリデータの保存先であるURLと ログインしているURLが異なる事はありませんか?
747 :
743 :2011/10/18(火) 15:58:06.45 ID:???
>>747 後学の為に、クッキーモンスターについて知っておくと良いかも
たぶん、cookie http クッキーモンスターで検索すると詳細見つかるよ
今さらながら、テーマ機能が便利だと知った
結局cakeも4捨てるのかw
メンテナンスすら3年前に止まってるんだから当然じゃないかな むしろやっとという感
4対応とか悪でしかないもんな
750にはいまさら4にこだわる理由を聞きたい。 レンサバだってほどんど5対応してるし。
4より5.1が切られているほうが影響大きそうだけど
5系でもう切っちゃうのが出るのか。そりゃ厳しい。
5.1なんてIE7並に中途半端バージョンだから切ってもいいよ 今やWordPressだって5.2以降だ
やっぱsql直打ちのが複雑な参照は楽に感じる 1テーブルへの保存は素直にモデル使う方のが楽だけど
>>757 SQL直打ちでページネーションできるようになれば使いやすいんだがなぁ・・・
case whenを使うSQL出したい時は 直書きするしかないだろうか
UPDATE hoge SET count=count+1 みたいにするとき、SQL直書きしちゃうな。
updateAll()とはなんだったのか
結局内部でSQL文発行してページネーション作ってるんだから 簡単に実装できそうな気がするんだけどな なんでできないんだろ
連想配列を渡すだけで簡単にpaginate出来れば良いんだけどな。
$this->Auth->user()の中身で特定のものを削除するには どうしたら良いんでしょうか?username, emailのみ残したいんですが。
$model['User']['username'] = $this->Auth->user('username'); $model['User']['email'] = $this->Auth->user('email'); これだとちょっと無駄な気がしまして。。
>>763 ArraySource使えば一瞬だろうに
>>764 array_intersect_key($user, array_flip(array('hoge', 'fuga', ...)))
>>766 的外れだと思う。
というかずっとカスタムページネーションをモデルで実装することがなんで今までほとんど
話題に挙がってないか不思議すぎる。
>767 的外れだと思う。 >というかずっとカスタムページネーションをモデルで実装することがなんで今までほとんど 話題に挙がってないか不思議すぎる。 何言っているのか分からない。 モデルを作ると半ば自動的にページネーションを使えるようになっているわけだが、「モデルで実装することがなんで今までほとんど話題に挙がってないか」の意味は、どういう意図なのでしょうか? かなり昔にいじっていたsymfonyのページネーションだと、全体件数のsqlやら、ソートしなおす場合のsqlのテンプレートやら、カスタムsqlだとかなり色々いじる必要があったが、そこらへん理解できますか?
スマン。ひとつ忘れてた。 モデルとRDBを結び付けてたみたいだけど、モデルってRDB以外にもデータソース割り振れるんよ。RDBばっか使ってるから忘れてる事多いけど。 探せばRDB以外でもページネーションしてるの見つかると思うからそれ参考にすりゃ、作れると思うよ。 っつか、そもそもSQLでかたつくもんなら、そんな面倒な事考えないでRDB側でビュー作っちまうのが手っ取り早いな。
一つのモデルに複数のモデルをHABTMで関連づけた時に、 どうdataを形成したらうまく保存できるか分からないのですが、 教えていただけませんか?
>>768-769 なんでsymfonyが出てくるの
そもそも「カスタムページネーション」が示すのがわかってない?
paginate()とpaginateCount()をモデルで実装するということを指している。
あとデータソースレベルで解決できるならRDB以外でページネーションする場合もモデル
のコードは変わらんのだけど。。
>>770 $data['Tag']
or
$data['Tag']['Tag']
に入れれば、っていう話ではない?
1.2の頃から、普通にSQL直打ちでページネーションできるんだが...
参考ソース書いて下さい。お願いします
>771 おまいさんの目は節穴か?答え書いてあるじゃん。
>>775 俺は答えが書いてないなんて言ってないよ。。
何回も話がループしてる中でなんでその答えを指し示さないの?って思っただけだよ。
それをしないで謎の方向で議論が進んでるからおかしいなと。
というか、こういう行間の読み合いって不毛すぎるよね。やめよう。
同じことで騒いでるのは一人だろ。 マニュアルやらいろんな方向性を教えてもらって結構時間経ってるのにまだ解決方法を求めてるとか、 プログラムとか全くできない人だろ。
ヒデカズもう少しちゃんと解説して欲しかった 詰まったところを公式のマニュアル見て理解するって場面が数カ所あったし
Lithium、0.10以降音沙汰無いけど、 頓挫しちゃったの?? すごい期待してるのに・・・
そんな貴方に2.0ケーキ
2.0は名前空間とか使ってないし、 いろいろと中途半端なかんじ・・・
2.0はディレクトリ名がキャメルケースになってcdしづらくなった
>>753 え???ナニ言ってるの?俺がいつこだわった?
もともとこだわってたのはcake開発陣だろwww
Bbs→User→Profile 「掲示板に投稿しているユーザのプロフィールを表示」 ってな用途で利用しようと、上記の流れでアソシエーション(belongTo) を組んでいるが、難しすぎるな・・。思うようにデータが取れない。 素直にjoinsオプション付けてfindした方がいい気がしてきた
recursive=2じゃだめなん?
>>785 俺の場合、afterFind入れてるからか、なぜかエラーになる。
エラーを解決する方法もわからないので、
>>784 の考えに至った。
contain使えば簡単だ
「指定会員が投稿した日記の記事」みたいな条件の時、URLが /diary/detail/1/10 みたいになるんだが、非常に違和感を感じるのは俺だけか? 一応、/diary/1/detail/10 みたいにルーティングしているけど・・・
Aというモデルをページネーションで検索をかけたい B belongsTo A 、C belongsTo A B HABTM D、C HABTM E 以上の構成で、D、Eのカラムを検索条件にする時、どう検索したら良いでしょうか? よろしくお願いします。
>>789 Linkableを使う。
もしくはSearchプラグインでfilterを頑張る。
query()でSQLを直接実行できますが、 これをpaginateするにはどうすればいいのでしょうか? もし参考サイトをご存じの場合は教えてください。
>>788 俺なら日記の記事ページのURLは、user_idを飛ばして/diaries/view/10にするか、
ユーザーネーム使って/(user_name)/diary/10か/diary/(user_name)/10にする
user_idをURLに含めるのはダサい
どうしてもユーザーID入れたいならnamedパラメータ使って/diary/view/user_id:1/diary_id:10とかだな
>>792 user_nameってログイン時のIDだろ?
それを公にするってのもな・・。
顧客が超新しい物好きで、Cake2のリリースを知ってから『うちのもあたらしーのにならんの?』と連呼してくる。 まあ1.2系のままだから1.3にはしておいてもいいだろうけど、ファイル名のパターンからディレクトリ構造まで大幅に変わってて簡単にアップグレードできんわな(´・ω・`)
ああ、ごめん。日記を例に出したから、 ブログのアカウント的な感覚でuser_nameと言ったのか。 ま、それなら道理はわかるんだけどな。 user_idをURLに含めるのは確かにダサいんだが、 ユーザ専用ページを作成している場合は仕方ないんだよな。 mixiでもuser_idがURLに付加されているし。
>>791 は釣りなのか?
最近同じ質問が連発してる気がするんだが。
>>794 システム的には大きく変わってないのに、ファイル構造は大きく変わったよね
規約にPSR-0を起用したせいだろうけど、なんだか慣れないせいか気持ち悪い
>>795 基本的にdiary_idがわかればuser_idも引っ張ってこれるんだからdiary_idさえあれば問題ないと思うけどね
urlにuser_idが含まれていても、そのIDが有効かどうかのチェックは必要だし
どちらにせよ何かしらの事情でuser_idがURLに含ませたいのなら
>>792 の最後の案だな
>>790 ありがとうございます
linkable試してみます
find で hasAndBelongsToMany で関連付けられたデータの有無を絞り込む方法はないでしょうか? Post hasAndBelongsToMany Tag として、タグが設定されていない投稿を取得したいんです。
$paginator->options ってコントローラーで指定できませんよね?
何でディレクトリ名キャメルケースになっちゃったの? 何か理由があるのかね?
キャメルって頭文字が大文字のことをいうの?
モデルのアソシエーション先の afterFind について質問なんですが、 処理した内容を return で返してもデータが反映されず困ってます。 試しに return を null にしてもちゃんとデータを引っ張ってきてしまいます。 afterFind メソッドは叩かれてるようなんですが、戻り値を使っていないという感じです。 ちなみに直接 Find するとちゃんと戻り値が反映されます。 解決方法はありますでしょうか?
どういうafterFind書いてるかソース出してみ
>>805 ソースというか、それ以前なんです・・・。
上の質問で試したソースです。
よろしくお願いします。
class Post extends AppModel {
var $hasMany = array(
'Postmeta' => array(
'className' => 'Postmeta',
'foreignKey' => 'post_id'
)
);
}
class Postmeta extends AppModel {
function afterFind($results, $primary) {
return null;
}
}
これで Post->find('all') すると return null してるから Postmeta は空、と思ってるんですが反映されません。
hasManyだからじゃね?
>>807 やっぱり hasMany はだめなんですか?
たしかに HABTM だとちゃんと意図した通りになるんです。
それで hasMany でも同じだと思ってたんですが・・・。
>>803 まちがってるね。
最初が大文字はPascal(パスカル) 形式
最初が小文字がCamel(キャメル) 形式
UpperCamelCase = Pascal lowerCamelCase
CakePHPって何がいいの
>>811 小規模の開発なら手軽だよ。
他にいいPHPフレームワークあるかい?
SNS作ってるんだけど、どうしても規模が大きくなるから ディレクトリ構造が複雑になって辛い・・・
Paginator使ってるページで、URLに「limit:1000」とかパラメータを埋め込まれると controllerで設定したlimitを上書きしちゃうんだけど、URLからのパラメータ指定を 無効にするにはどうしたらいいの?
>>812 小規模ってどれくらいまでが小規模ですか
ECサイトくらいだと小規模かな
>>814 たしか2.0から無効になるパラメータがあったはず。
1.3以前なら無理だと思う。素直に自分で上限付けるべき。
>>816 ありがとう。2.0の変更内容を見ていてはじめて、URLパラメータでlimitが任意で指定できることを知った。
limitに1000000とか指定されても迷惑なので、paginateのwhitelistにきちんと値を設定することにするよ。
818 :
nobodyさん :2011/10/28(金) 03:53:00.84 ID:0WPYyAnp
スマホアプリ用のJSON返すだけの画面のないWeb APIで CakePHP2.0使おうかと思ってるんだけどどうっすかね? Web APIの数は数十本くらいになると思うんだけど その程度でCakePHPはやめとけとか他のフレームワークの方がいいよとか 意見聞かせてください。
データベース結果からJSON返すの楽だし止める理由は無いです
>>817 それ、設計がおかしくないか?
セレクトメニューから件数選ぶのが定石だと思うが。
>>820 言葉が足りなかった。件数の設定をやめさせる、というわけではないよ。
コントローラでlimitをパラメータから取得して、paginateのオプションに
明示的に設定してから、paginateを実行する。
823 :
nobodyさん :2011/10/28(金) 11:33:30.55 ID:k+uCwlGG
Amazon SimpleDB用のデータソースを作った人いる?
>>818 実際やってるけど楽です
管理画面も同時に作ってます
>>821 使ってます
recursiveとjoinsと組み合わせて
Containable使わないとか有り得ない程度には思ってる
俺も。 時々Containableでは賄いきれなくてbindModelとか使うはめになるとチッって思う。
俺はもうjoinsを中心に使ってる。 色々付けたり外したりしてると、わけわからんようになってくるしw
Containableって要はなんなの? わかりやすく説明して賢い人!
ボクもContainableしりたい
>>831 関連付けってアソシエイションのことだよね?
関連付けたモデルを取得しないってのは
recursiveでやるじゃなかったっけ?
モデルの関連づけがいまいちわからないのですけどいいサイトあったらおしえてください
結局cookbook以外は断片的な情報集めるしかない気がする
実開発でもそうだった。 検索して、ヒットしたブログ記事を参考に実装してた。
>>832 recursiveでもできるよ。
だけど、containableを使うともっと細かく制御できる。
例えば、
usersテーブルに
hasOneでprofilesテーブルと
postsテーブルが
関連付けされててusersとprofilesだけ欲しい場合
$this->Users->find('all', array('contain' => 'Profile'));で取れる。
838 :
837 :2011/10/28(金) 23:20:05.03 ID:???
さらに、ProfileにState(都道府県)を関連づけしてる場合 $this->Users->find('all', array( 'contain' => array( 'Profile' => array('State') ) )); で取れる。
>>833 誰かこれどう?1.3以上の人試してくれない?
コントローラの設定で、
var $paginate = array(
'Model' => array(
'group' => 'Model.id',
'order' => 'Model.id DESC',
'limit' => 5,
)
);
としてみるだけでいい
ページネーションのページ数が1になる
(ページ数(pageCount)が入っている配列はView内で $paginator->params() で取得可能)
>>839 ・paginateメソッドがgroupに対応するとより複雑なグルーピングなどに対応できないなどの
拘束が生まれるので仕様
・バグじゃないから直らない
・記事の通りコールバック書け
>>838 都道府県にはprefを使って欲しい。
stateじゃアメリカ合衆国の州をイメージする
>>840 まだ直ってないのか・・・
バグというより非対応って考えなきゃいけないのか
CakePHPで画像のサムネイルをリアルタイム(アクセス毎)で生成してるんだけど、
40画像ぐらい表示させると、表示しない画像がちらほら出てくる・・・
実装としては、大きな画像をサーバ上に置いて、
・<img src="<?php echo $html->url('/thumbnails/view/1234'); " />
のようにimgタグでコントローラにリクエスト
・渡されたIDをもとに画像のパスが保存されてるテーブルをfind()
・その画像からサムネイルを生成して返す
という感じ。
1人がアクセスするたびに、40個画像があれば、
CakePHPが40個起動するのはやっぱりこの実装は問題ありなのかな?
同時接続数にひっかかってる気もする
ちなみに ZOZOTOWN(
http://zozo.jp )はCakePHPではないと思うけど、
上記のような感じでアクセスされて生成している模様
ZOZOTOWNみたいなアクセスの多いサイトがアクセスの度にサムネイルを生成してるわけがない。 実装に問題あり。
サムネイルは本画像保存時に同時に作成するのが普通では?
さすがに40個を毎回作成してたら不具合出るわw
>>846 だな
サムネイルキャッシュは公開ディレクトリに置くか、tmpディレクトリに生成して生PHPで読みに行かせるのがいいと思う
PHP通すなら、HTTPヘッダでブラウザにキャッシュさせることも考えたほうがいい。 Mediaビューが便利。
850 :
844 :2011/10/31(月) 06:30:50.20 ID:???
結局グランドデザインまで関わる設計の問題だろう。 後は自分で考えなさいな。CakePHPはそこまでお世話できないよ。
>>850 そりゃ、サイズを入力したらそのサイズで表示(生成)されるよ。
でも、基本的にはショッピングサイトの画像サイズなんて決まってるから、
サイトで使用する画像だけ先に生成されるようにしてるんだろ。
だから、1アクセスで全ての画像を作成するんじゃないと思うよ。
キャッシュしてなかったら即死だろ
joins に関して質問なんですが、 User が複数の Item を持っているという仮定で、以下のようにすると Apple か Orange のいずれかをもつユーザーが抽出されます。 $options['joins'] = array( array( 'table' => 'items', 'alias' => 'Item', 'type' => 'INNER', 'conditions' => array( "Item.user_id = User.id" ) ) ); $options['conditions'] = array( 'OR' => array( 'Item.name = "Apple"', 'Item.name = "Orange"', ) ); $users = $this->User->find('all', $options); これを Apple と Orange 両方持つユーザーを抽出したい場合どうしたらいいでしょうか? MySQL のクエリは素人同然ですが、なにかヒントなどでもありましたらアドバイス下さい。
cakephp2.0正式版がでたら勉強しようと思うのですが いつごろでるか予定は発表されてますか?
stableもう出てるよ
いまCodeIgniterを使っているんですけどCakePHPに乗り換えたいと思います cakephpのライセンス情報はどこに載ってますか?
クライアントに出力するビューからコメントを全部取り除いてくれるプラグイン有りませんか
Formヘルパーのinput('date')でフォーマットをYのみにするとDBに値が入らないんです。 YMDとかDMYとか年月日全て指定すれば値が入るんですが。 今beforeValidateで無理矢理データを整形してるんですけど皆さんどうしてます?
>>856 stableというのは正式ばんなんでしょうか
>>862 正式ばんってなんだ
stable = 安定版だけど
安定板というのをつかうのがふつうなんですか
質問に答えろカス
10年前の2chみたいだ
CakePHPがphpのフレームワークでいちばんもりあがってるというのは本当ですか
はい
ありがと
CakeDCのTagsPluginをダウンロードしようとして3ドル支払いしてもダウンロードできねーぞ 金返せやゴルァ
872 :
nobodyさん :2011/11/01(火) 13:19:26.19 ID:mfdF/wRx
なんでも一個ぐらいサイト作ってみて、 こういうサイトならこれだな。っていうのを見つけとけばいいだけの話じゃ。
smartyで書いてって言われれば誰が書いても同じようなコーディングになるのがメリット php自体がテンプレートだから不要という意見もあるが、自由すぎて書く人によってコードの質が代わってくる そこを埋めてくれるのがsmarty 一人しか開発に携わらないならフレームワーク+smartyなんて時間がかかるだけだよ
自分の言葉で正直に言えば納得するよ
標準は開発者側の楽をしたいための甘え 前者のほうがみやすい
Cake2.0で、定数「APP_PATH」って消えた?
>>876 ユーザー名とサイトのパスが被らないように一段掘り下げて users から始めたい
社内アプリなんで user_name でURLを永続化させる意味がない
とか理由があるんでしょ?なぜ他人に聞く
クライアントに出力するビューからコメントを全部取り除いてくれるプラグイン有りませんか
>>881 そんなもん、afterFilterで正規表現で置換すればいいじゃん
pearでamazonの情報ゲットするみたいな処理は複数のコントローラから呼び出しいんですけど cakephpのコンポーネントに書くのがふつうですか?
webroot にある files って何が入るの?
公開したい画像やCSS
いわゆる /var/www/html直下だよ。
おまえらちゃんと質問にこたえてください
>>888 すまん。883なんだ。ありがとうございます
>>850 亀だけどphpThumb使ってんじゃねーの?
Cake関係ないけどさ。
>>880 ありがとうございます
user/user_name で妥協してもらえるようにします
どこかの外部サイトから、自分のサイトにリンクで飛んできた場合、 どのようにして、リンク元のアドレスを知ることを出来るでしょうか?
view内のJavaScriptを全部Minifiedしてくれるプラグインありませんか
ありません
ないのかよ
cakephpつかってる有名なサイトはありますか
あります
アソシエーションされたモデルのbehaviorのafterFindが動かないのは仕様? ググってもこれといった情報なくてtriggerで強制的に叩いてるんだけどみんなどうしてる?
902 :
844 :2011/11/02(水) 20:57:27.21 ID:???
>>891 え、使ってますけど、なにかあるんですか?
mozilla developperなんちゃらってサイトはまだcake製だっけか?
cakephpでgreeとかクックパッドみたいなでかいサイトあるの
nanapi
nanapiで使ってるんだ。すごい
908 :
nobodyさん :2011/11/03(木) 02:47:51.32 ID:BQfojvD+
CakePHP2.0の情報がほとんど無くて困る。 Cookbookもまだ英語だし。ブログとかでも情報皆無だし。 これから開発で使いたいんだけどどうすればいい?
翻訳の人も一所懸命進めてる途中っぽいけど、 待ってたってどうにもならんから英語で読めばいいんじゃないすかね 英語ドキュメント恐怖症を直せば自分のためにもなるし読める情報も増えるし一石二鳥。
>>908 わからなくなったらソースを読めば良いよ。
他人の書いたソースを解析するくらいなら自分で書いた方が速いな
CakePHPのCookieおかしくない? あとSessionも
Sessionおかしいと思う だましだまし使ってるけど
やだ…
>>912 のコードリーディング能力低すぎ…!?
翻訳手伝いたいけど、長期的に関わる気にもなれないし、気が向いたときに1ページ位ずつ翻訳できないかな
CakePHP2.0でController/AppController.phpを置いておいても読み込んでくれないのでしょうか なかみを呼ぼうとするとPHP Fatal error: Call to undefined method がでちゃうんですけど
>>917 Controllerの下に置いてるのなら読むはずだよ
確かappの下に置いてるとダメになったけど
>>918 おいてるんだけどAppController.phpの中にあるbeforeFilterとか読まれてない気がするんだ
hoge()みたいに適当に書くとコントローラからアクセスできているんだけどなんでだろ
>>919 他のアクションは読まれてるのにbeforeFilterだけがダメなら何かそこの書き方が間違ってるような気がするな
beforeRenderとかafterFilterは動いてるの?
今1.3.10使ってるんだけど、新しいmodel追加してもキャッシュがなぜか更新されないせいでエラーが発生してしまうバグってあるよね。 あれってもう解決されてるんだろうか?
もう2.0.2出てるのか 早いな
923 :
粕屋 :2011/11/04(金) 04:05:53.65 ID:NGbuW+zf
相関関数
2.0になって何がよくなったのか
それがいまいちわからない
じゃあ1.3でもいいのかな
2.0で小さなサイトを一つ作ったけど、今の時点では1.3系を使うのが正解だと思う 2.0.1で変なバグ出てるし、まだstableな感じがしない
>>921 本番環境ならmodelのキャッシュ全部削除しないとダメだよ
2.0は細かい仕様変更が多すぎて、既存アプリの移行にくじけてしまいこう。
933 :
921 :2011/11/04(金) 23:27:50.26 ID:ME+KtoRu
>>932 app/tmp/cache/models/の下を削除すればおkだったはず。
権限とオーナーに注意だけど。
よし、Yiiに移行するわ 詳しく見てないが、物凄い高評価だから お前らまたな! これまで作ったサイトはCakePHPだからまたお世話になるかもしれんが!
俺漏れも Cake今までありがとうさようなら
残ったケーキは俺がおいしく頂くから問題無い。さよならー
ちょっと見てきたけど、Cakeとあんまり変わらない気がするんだが・・・>Yii
>>928 今後2.0系がメインになっていくってのに
1.3系で作る意味が分からん。
939 :
nobodyさん :2011/11/05(土) 09:59:13.49 ID:0mRDiQ7r
新しくこれから作るなら2.0だろ。 1.3から移すのが糞面倒なだけだと思うぜ。
業務で使うなら実績のある1.3が無難って話だろ。
2.0は何が変わったの? 無知な私に教えてくださいまし
>>941 まずモデル。
モデルの construction process は made lighterで、モデルの associations are now lazy loaded, applications with lots of models and associations will see great time reductions in the bootstrap processだよ。
で、 models won’t require a database connection in the construction process. The database will be accessed for the first time only when a find operation is issued or information for one of the columns is required
というわけ。
ビューは
View will now always have the last rendered content (view or layout) accessible through $this->output. In helpers you can use $this->_View->outputなの。
Modifying this property will change the content that comes out of the view renderingってことさ。
あと20レスぐらい使うけどいいかい?
ちょっとアクセスあるサイトをCakePHPで作るとCakeの重さに気づくわ
>>942 リファレンスそのまま使うならせめて訳すてん
>>942 それ読んだら今すぐ2.0に変えたくなってきたわ
いかに今までムダが多かったことかわかってゲンナリ
php.iniでエラー設定を厳しく設定してますが CakePHP2.0はphp5.3にしっかり対応してますか? 1.x系みたいにhtaccessでエラー設定を変更しなくても問題ないですか?
なんでですか 1.3をよくする為に2.0が誕生したんじゃないのですか
949 :
nobodyさん :2011/11/05(土) 16:16:01.53 ID:0mRDiQ7r
>>948 お前厨房か?
生まれたての赤ん坊がいきなり立って歩けるわけないだろ。
まだまだ成長して安定するのはこれからであって、実戦投入には向かないってこった。
生まれたときから巨人の肩に乗っているとは思われる。 しかし自分で立つにはまだ未熟 そんな感じ。
951 :
951 :2011/11/05(土) 16:23:54.54 ID:???
>>949 だって1.3を改善したからバージョンが上がって2.0なったんですよね
おかしくないですか
Windows XPからVistaにバージョンアップしたときのことを思い出せ
>>951 幼稚園や小学校の頃は神童とか天才児とか言われてたのに
中学校に入ってみたら周りが頭よくて全然ついて行けなくなったりするだろ。
そして高校に入ったらだいたいボッチで、大学に行ったら便所飯。
大人になるってのはそういうことなんだよ。
Apacheにもプロセスの1.3系とスレッドの2.0系が平行していた時期があってな
「数字が大きい方がすごい」というのはスカウターシステムによる弊害
956 :
956 :2011/11/05(土) 19:25:56.45 ID:???
だったら2.0なんてつけんじゃねえよks
皆、親切に答えてるが、ここはプログラムをあつかう板なんだし
そんな板で
>>938 みたいなレスをする奴に分からせるには
懇切丁寧な説明が必要だと思うぞ。相手するだけ無駄だと思う。
要はchromeとchromiumみたいもんだろ
それは別ブランチでちょっと違う。
今の彼女と惰性つきあい続けても、いずれダメになりそうなら 新しくもっといい彼女作るのが前向きな姿勢ってもんだろ? でも新しい彼女とすぐにオマンコできるわけじゃないし、とりあえずは 前の彼女とオマンコしつつ、新しい彼女との関係をよくしていくわけだ。 正式に新しい彼女とつきあうことになったという時点で乗り換えてもいいけど、 まだオマンコできるかどうかわからないような状態であれば、前の彼女との関係は 切らずにおいた方が得策と言うことだよ。
962 :
962 :2011/11/05(土) 22:47:11.09 ID:???
これちゃんと説明できる人いないね ちなみに某大手を受けたときにこの質問出た
963 :
961 :2011/11/05(土) 22:58:29.52 ID:???
963が今のところベストな説明 某大手を受けた962はさぞかし素晴らしい説明ができるんだろう。期待
>>961 まて、これがバレて俺はちょっと大変なことになったからな
そういう場面に備えて他のフレームワークの使い方も覚えておいた方がいい。
アソシエーション先(User)のアソシエーションしている箇所(Profile) を取得しようとすれば、$data['User']['Profile']['image'] みたいな連想配列になるんだが・・・ どうして、$data['Profile']['image']じゃないんだろ?
>>965 そもそもの前提が良くない。
彼女は一人だけという先入観にとらわれてないか?
状況と目的によって彼女は付き合い分けるべきだ。
童貞の
>>962 にもわかるように例えると、ドラクエ3あるだろ?
あれで魔法使いが賢者に転職するようなもんだよ。
魔法使いと、魔法使い2.0とも言える賢者を比べたら、賢者の方が優れてるけど、
まだレベルが低いんだよ。
次の段階に踏み出すには、また1からやり直さなきゃいけないんだよ。
悔しかったんだね
>>966 アソシエーション間違ってない?
JOINして取得できる分については$data['Profile']['image']みたいな配列で、
2つアソシエーション先のものとかJOINしないで個別にSQL発行して取得するものは
$data['User']['Profile']['image']になるはず
userとprofileなら普通にJOINして取れるはずだし
>>970 2つ先の物を取ろうとしたんだよ。
過去レスで似たようなのがあった(
>>784 )けどさ。
Cakeの仕様上、仕方ないとは言え、
モデルのモデル・・・みたいな多次元配列は少々違和感あってね。
972 :
nobodyさん :2011/11/06(日) 03:20:32.95 ID:Zi3yb96E
つか1.3と2.0は仕様的に別系統だよな。 命名規則や記法まで変わってるわけだし。 アップグレード目的と言うよりはおそらくほぼ0ベース開発なのかと。 まあなんだかんだ言って2.0がもう少し安定したら俺も乗り換えるな。 面倒で複雑だが、慣れてしまえばなかなか便利なFWだし、他に乗り換え手段も殆ど無い。
そこでYiiですよ
もう、Cake以外のFW覚えるなら、オレオレを極めた方が良いと思う
なんだかんだでオレオレを作り上げるのも手間なんだよなー
オレオレの場合、設計と命名規則で悩むんだよな・・・ もの凄く細かい部分でも意味が通じない時になって仕方ない
オレオレをゼロから作ると書くコードが多すぎて手が疲れて挫折 コピペ駆使してもこれだもんなあ 車輪の再発明みたいなことしたくないわ
うーんcakeではここはどうやってるんだろうな?ちょっと参考にしてみよう ↓ まあこの部分はcakeから丸ごと貰ってこよう。後でちょっとオレ流に直せばいいや。 ↓ はっ!最初からcake食ってれば
>>977 全くのPHP初心者ならそうなるだろうが、
大抵の人は自分なりにライブラリを作成してないか?
>>979 今までJavaしか使ってなかったからPHPの資産なんてない俺みたいなのも
そんなにレアケースではないと思うが
そんな奴がいきなりフレームワーク使おうとするの?
>>982 よほどの素人以外、PHPをフレームワーク無しで使おうとか思わんだろう。
>>983 そんな事はないと思うが。
ググって適当にプログラム系のブログでも見てみたら?
FW使っている絶対数の方が少ないから。
>>984 偶然だな。君と同じ意見だ。
・よほどの素人 →ifとかforeachとかPHPの基礎から勉強 ・基礎を学んでいるプログラマ →自分で関数やクラスを作ってるからオレオレを作る ・オレオレだとコードに統一感がないからフレームワークを使う →過去の経験を踏まえてCake用のヘルパーやコンポーネントを作る こんな感じじゃねーの。よほどの初心者〜そこそこの経験者で オレオレが作れないレベルの奴っていないと思うが。
アソシエーションについておしえてください。 ModelにhasManyとbelongsToの関係を書いてます。 いまの書き方だとJOINが Post`.`user_id` = `User`.`id`になってしまいます。 これを`Post`.`user_id` = `User`.`user_id`にしたいと思っています。 勝手にidとJOINされてしまうはなんとかならないのでしょうか。 User.phpに public $hasMany = array( 'Post' => array( 'className' => 'Post', 'foreignKey' => 'post_id', ) ) Post.phpに public $belongsTo = array( 'User' => array( 'className' => 'User', 'foreignKey' => 'user_id', ) )
>>987 Userテーブルにidとuser_idの2つがあるの?主キーはどっち?
>>987 適当だけど、UserモデルのprimaryKeyをuser_idに設定したらいいんじゃね
>>988-989 primaryKeyをuser_idにしてみたらできるようになりました。
ありがとうございます
992 :
nobodyさん :2011/11/07(月) 23:14:45.14 ID:sCxF7RNS
CakePHP2.0系のヘルパーでビューオブジェクトを取得する方法を 教えてください。1.3系のように以下の方法では取れませんでした。 $view = ClassRegistry::getObject('view');
そーなのかー
「自分が登録している以外のデータを一覧表示する」 と言う条件って、INを使うのでしょうか? そうだとして、INをCakeで使う場合、 $this->find('all', Array('conditions' => Array('id' => $conditions))); みたいに、$conditions部分の配列を生成(一旦findで取得?) する方法しかないのでしょうか?
>>992 $this->_Viewに入ってるよ。移行ガイドぐらい見ましょう
>>994 $conditions = array(
'user_id !=' => $jibun_no_id // $this->Auth->user('id')
);
「自分が登録してる」の設計がわからんが多分こういうこと?
>>995 $options = array('conditions' => array('>Bookmark.user_id' => $user_id));
$this->Bookmark->find('all', $options);
みたいなので、「自分が登録しているブックマーク」を取得できます。
ブックマークの内容は何でも良いんですが、
例えばポータルサイトのお店を登録しているとします。
その前提で、「自分が登録しているお店以外の一覧を表示したい」
という条件を実現させる場合はどうするのかな?と思いまして。
INというか、NOT INですかね。
NOT INなら $conditions = array( 'NOT' => array( 'hoge_id' => $fugaList ) )
そんなことより次スレよろしく。
CakePHPで会員登録用のプラグインって出てますか? メールでリンククリック認証で、 忘れたときは再発行できる機能がついてたりするのがあればいいんですが。
せんまさお
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。