【PHP】フレームワーク CakePHP 10ホール目【v1.3】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2010/11/01(月) 21:43:26ID:???CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※sage推奨
※質問時もsageること
※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
0159nobodyさん
2010/11/16(火) 14:28:02ID:???0165nobodyさん
2010/11/16(火) 17:40:29ID:???もっと前もいたのかもしれないけど
0166nobodyさん
2010/11/16(火) 19:27:53ID:???カスタマイズしなければ出来ませんかね?
DBやCakeのテンプレート以外のファイルを取得し、
変数に入れて出力したいです。
0167nobodyさん
2010/11/16(火) 19:31:49ID:???変数に入れて出力?なにそれ
0169nobodyさん
2010/11/16(火) 19:51:39ID:???0171nobodyさん
2010/11/16(火) 20:32:28ID:???renderの出力(のために使用するテンプレート)を(ctp)ファイル以外にしたいのですが、
カスタマイズしなければ出来ませんかね?
DB(の格納値)や(、)Cakeのテンプレート以外のファイルを(テンプレートとして)取得し、
変数(をそれ)に入れて出力したいです。
0172166
2010/11/16(火) 20:36:51ID:???1:テンプレート変数(例えば<{OUTPUT}>)が書いたビューを用意
2:↓で変数に保持
$this->autoRender = false;
$this->render('output')
$view_data = $this->output;
3:DBで取得してきたデータを変数に入れる
4:1のテンプレート変数にstr_replaceで置換
$output = str_replace('<{OUTPUT}>', $db_data, $view_data);
5:echoで出力
なのですが、Cakeの機能だけで
>>166のようなことが出来るのかと思い、質問しました。
0174nobodyさん
2010/11/16(火) 20:41:21ID:???よろしい
ならば答えよう
他の形式で出力することは機能として備わっている
呼び出した拡張子に寄って出力フォーマットを切り替えるなんてことも可能
マニュアルでリクエストハンドリングとか調べてみて
0175nobodyさん
2010/11/16(火) 20:57:17ID:???<?php echo $content_for_layout; ?>
だけのlayutファイル、
<?php echo $content?>
だけのviewファイルを用意しておき、コントローラで最終的に
$this->set('content',$data);
を呼びさえすれば、「$data」をどう作るかなんて自由にやりたい放題だと思うが。
0179nobodyさん
2010/11/17(水) 00:08:32ID:???0180nobodyさん
2010/11/17(水) 00:16:05ID:???0181nobodyさん
2010/11/17(水) 00:39:16ID:???/webroot
└/images
└/top
みたいにするか、
/webroot
└/top
└/images
みたいにまとめるか悩みます。
0182nobodyさん
2010/11/17(水) 00:54:51ID:???0183nobodyさん
2010/11/17(水) 01:17:15ID:???普通のWebサイトは後者が多く、自分も今までは後者で作っていました。
とりあえず、Cakeの作法に合わせたいので、前者にします。
0184nobodyさん
2010/11/17(水) 01:30:20ID:???どこ統計?圧倒的に前者が多い印象だけど
0185nobodyさん
2010/11/17(水) 01:53:13ID:???0186nobodyさん
2010/11/17(水) 13:29:15ID:???悩む時あるよな。webrootにprefix用のディレクトリ作成するとエラーになるし。
$html->linkやRouter::urlでの表示とか
0187nobodyさん
2010/11/17(水) 15:15:11ID:???以下のようなformHelperを使った記述を、
「フォームを追加」ボタンを押せばJqueryで同じフォームが増えていくと
いったことがしたいです。
echo '<div class="newForm">';
echo $form->select('Alert',$menuOptions["area"]);
echo '</div>';
グーグルアラートのアラートを追加するボタンみたいな感じでやりたいです。
この場合、formHelperを使っているので、Jqueryと連携するにはどうすればよいものでしょうか?
0188nobodyさん
2010/11/17(水) 15:52:34ID:???手順のヒントを書くと
1)ボタンを押す
2)jQueryのajax機能で、指定コントローラーのアクションにPOST
3)そのアクション内で>>187のビューを出力
4)ajaxで受け取ったデータをページの指定箇所に反映
var add_form_fields = $("addFormFields").html();// 以前のHTMLを保存
$("addFormFields").html(add_form_fields + data);// 3を結合して出力
(試してないからコードはおかしい可能性有り)
0189nobodyさん
2010/11/18(木) 17:15:13ID:???ビューやPHPファイルは全てUTF-8で作成し、
出力時はmb_convert_encodingでSJIS-winに変換しています。
そして、ビューに$html->charset('Shift_JIS')を追加しています。
絵文字を使いたいので過去スレを調べたところ、
「Ktai Library」というツールが良いと聞いたので使っているのですが、
絵文字がどうしても文字化けします。(?という表示になります)
元ファイルはUTF-8なのに、レンダリング時にはShift_JISになるから
なのかもしれませんが、どうやっても解決できません・・。
Ktai Libraryを使用されてて、私と同じように出力をShift_JISにされている方は
設置に対するヒントを教えていただけないでしょうか?よろしくお願いします
0190nobodyさん
2010/11/18(木) 17:24:42ID:???0191nobodyさん
2010/11/18(木) 17:38:13ID:???0193nobodyさん
2010/11/18(木) 17:44:32ID:???このあたり?
0194nobodyさん
2010/11/18(木) 20:33:55ID:???http://libemoji.com/
0195nobodyさん
2010/11/18(木) 22:32:26ID:???これってキャリア分の絵文字を配列に代入して切り替えてるだけですよね?
ちょっと使いましたが、効率悪い気がするんですよね・・。
Ktai Libraryは作者の方が意欲的ですし、利用している人も多いと思って
質問したのですが、文字コードの扱いに難があるようですね。
ググったらそういう注意事項がありました。
何とかしたいのですが、無理なら>>194を使うか自作します。
0197nobodyさん
2010/11/19(金) 12:44:56ID:???http://www.1x1.jp/blog/2010/11/cakephp_security_component_vulnerability.html
0198nobodyさん
2010/11/19(金) 13:06:15ID:+0BO3EaIもしかしてみなさん本家のブログ記事とか読んでいらっしゃらないわけですか?
まさかね。
僕が騒いでいる様子を探せていなかっただけですよね。
0199nobodyさん
2010/11/19(金) 13:35:52ID:???俺もCSRF対策は独自に開発して使ってるし。
0200nobodyさん
2010/11/19(金) 14:10:15ID:???0201nobodyさん
2010/11/19(金) 14:18:35ID:???0202nobodyさん
2010/11/19(金) 15:35:43ID:???0203nobodyさん
2010/11/19(金) 15:49:02ID:???0204nobodyさん
2010/11/19(金) 17:01:49ID:???シリアライズした設定値をrot13変換・・・可逆すぎワロタ
要は自前実装でワンタイムトークン発行しろってことで、たいていの用途にはおk?
0205nobodyさん
2010/11/19(金) 17:15:49ID:???考えてみろ。第三者が可逆されるって、鯖をハッキングされるか
内部流出しかないけど、そうなるとパスワードうんぬんどころじゃねーぞ。
0207底辺
2010/11/19(金) 20:32:33ID:???セキュリティセキュリティって、言ってる人って、ハッキングされた経験でもあるの?俺はさほどセキュリティに気を使ってないけど、この10年何ら問題が起きてない。泥棒に入られるかもと思って家に防犯カメラつけたりするような物だよね。
0208nobodyさん
2010/11/19(金) 20:44:57ID:???0209nobodyさん
2010/11/19(金) 21:21:21ID:???205じゃないけど、前にくだ質の人に質問したら
「ハッキングより内部流出の為にパスワードをハッシュ化する」
て言ってた。正しいかどうかは知らん。
0210nobodyさん
2010/11/19(金) 23:21:14ID:???0211nobodyさん
2010/11/20(土) 00:29:30ID:NISeDnL6これプロジェクトでappフォルダコピーしたがうまく表示されないな
やっぱEclipseぐらいしかないのかね?
0214nobodyさん
2010/11/20(土) 19:22:07ID:???0215nobodyさん
2010/11/20(土) 23:06:30ID:???デザインプレビューはほとんど使わないけど、なんか管理しやすい。
0216211
2010/11/20(土) 23:52:59ID:NISeDnL6DWって何とかドロワーってやつ?少し聞いたぐらいしか無いけど
コード保管とか関数一覧機能有るなら試してみようかな
PHPエディタのスタンドアロン版を今使ってるけどemエディタみたいにタブだったらいいのになー
0217216
2010/11/21(日) 00:01:59ID:???0218nobodyさん
2010/11/21(日) 04:08:48ID:???PGが使うツールとしては使いにくいだろうね。
0219nobodyさん
2010/11/21(日) 08:39:09ID:???0220nobodyさん
2010/11/21(日) 09:07:46ID:???0221nobodyさん
2010/11/21(日) 13:02:29ID:???マニュアルやAPIサイトもタブの中で開けるし、集中して作れる。
0222nobodyさん
2010/11/22(月) 14:13:56ID:???モデル内で動的なテーブルの切り替えを行っていて、どのテーブルを使用するかの判断に
必要なアイテムをコンストラクタで渡そうと考えています。
まったく見当がつかないのですが、なにか良い方法はありますか?
0223nobodyさん
2010/11/22(月) 14:30:28ID:???0225222
2010/11/22(月) 14:42:59ID:???usesで指定するモデルですが、paginatorで使用するモデルとなります。
単にデータの入出力に使うだけのモデルであれば色々策は考え付くのですが、
paginatorで使用するというところがネックで悩んでいる次第です。
usesに記載しないモデルでpaginatorを上手く効かせる方法があればそれでも構いません。
0226nobodyさん
2010/11/22(月) 14:58:16ID:???どう考えても設計見直したほうが幸せだろ
0227nobodyさん
2010/11/22(月) 18:01:25ID:???Factory Methodパターン(的な)構造にするのが良いと思う。
変にCakeの内側に入り込もうとするとメンテナンス不能なものになりそうだ。
てか普通に該当モデルに使用テーブルの切り替えメソッド実装するんじゃダメ?
試してないけど
0228222
2010/11/22(月) 21:38:44ID:???おっしゃる通りで、
>てか普通に該当モデルに使用テーブルの切り替えメソッド実装するんじゃダメ?
を実装して対応しました。
usesに指定するmodelの$useTableにデフォルトでfalseを指定しておき、
paginate()を呼び出す前に、実装したテーブル切替メソッドを呼ぶという感じです。
usesに指定したmodelのロード前に、$useTableにどうやってテーブルを指定しようか、
と悩んでいたのですが、とりあえず何も設定せず、後で再設定するという方法ですね。
0230nobodyさん
2010/11/23(火) 17:17:59ID:???やっとチュートリ終わってCakePHP辞典を眺めているレベルですが、
質問があります。
HtmlHelperの様々なメソッドは、生HTMLを*.CTPに記述すれば足りる事であり、
わざわざ用意された関数を使う必要などない、と思えるのですが、いかがでしょうか?
たとえばHtmlHelper::para()など<P></P>と書けば良いだけな気がします・・・
また、AppModelクラスでは、アソシエーションを定義しfind()やread()などを使うよう
ですが、単にSQLを書いてquery()を使えば良いような気がしています。
AppModelにはquery()とset()さえあれば良いような・・・
こんな質問をするのは私の理解が浅いためだとは思いますが、初心者にも判るよう、
HtmlHelperやAppModelのメソッドの存在意義を教えていただきたいです。
よろしくお願い申し上げます。
0231nobodyさん
2010/11/23(火) 17:21:03ID:BKW+AU3M->linkと->dataCellsは楽だと思うぜ
0232nobodyさん
2010/11/23(火) 21:56:51ID:???linkはroute直したときとかに勝手にリンクも直るので便利
default.ctpのヘッダー部分も基本的にhtmlに直してる
cakeと絡む部分のあるlinkとかはhelper使って、絡まないpとかはhtmlで書くという感じ
tablecellsは最初は使ってたけど、classとか指定してカスタマイズしてたらわけわからなくなったので、
今はforeachで書いてる
0233nobodyさん
2010/11/24(水) 13:59:05ID:???「登録されてないアドレスです」 や 「パスワードが正しくありません」
などのバリデーションはmodelのルールでは定義できないでしょうか?
マニュアルを読んだところ、そういった機能はないようなので、
自分でロジックを書かなければいけないかと思っております。
0234nobodyさん
2010/11/24(水) 14:14:59ID:???はい。オリジナルバリデーションを用意しましょう。
探せば見つかると思う。
ただ
エラーメッセージは
「メールアドレスかパスワードが違います」
と表示しましょうね。セキュリティ的に。
0237nobodyさん
2010/11/24(水) 14:51:07ID:???俺もlinkとかは使っているな。
階層が絡むものとかは開発環境・本番環境で変わってくることもあるし。
あとは、form関連はかならず使う。
HTMLヘルパー系は、実質あんまり使わないな…。
Modelに関しては、シンプルで分かりやすくなるので、生SQLは基本書かない。
0238nobodyさん
2010/11/24(水) 14:57:32ID:???0239230
2010/11/24(水) 19:24:51ID:???AppModelクラスで、アソシエーションを何も定義せずに生SQLを書くことについては
いかがでしょうか?
SQLの知識があっても、アソシエーションを定義してAppModelのメソッドを使ったほうが
よいのでしょうか?
生SQLを書いてAppModel::query()は良くないのでしょうか?
0240nobodyさん
2010/11/24(水) 20:10:39ID:???findでjoinする時はjoin部分をSQLにするけど。
0241nobodyさん
2010/11/24(水) 21:04:53ID:???よくあんな糞みたいな本が世に出せたもんだ
0242nobodyさん
2010/11/24(水) 21:34:35ID:???生SQLでも良いと思う。CakeのActiveRecordの恩恵は半分くらいしか受けないが、
CakeのAcriveRecordの微妙な部分で悩んだりバッドノウハウ積んだりする手間も減る。
でも、現在Cake初心者で、生SQL上等なくらいのスキルを持ってるなら、
Zend Frameworkとかにトライするのもいいんでは?
0243nobodyさん
2010/11/24(水) 23:23:55ID:???他のメンバーに合わせる方向性で決めたほうがいいかと。
0245nobodyさん
2010/11/25(木) 01:03:35ID:???0246nobodyさん
2010/11/25(木) 10:13:58ID:???0247nobodyさん
2010/11/25(木) 11:10:39ID:???初心者の場合だと難しいね。何がしたいか分かって探すリファレンス本だし。
0248nobodyさん
2010/11/25(木) 20:30:07ID:???奴らは街角で拉致られてタコ部屋に押し込まれて強制労働させられてるのか?
自ら希望して派遣会社に登録したんじゃないのか?
まずそこをハッキリして貰いたいんだが。
0251nobodyさん
2010/11/25(木) 22:53:00ID:???0252239
2010/11/26(金) 06:09:25ID:???疑問が少し晴れました。
ありがとうございました。
まだCakePHPのチュートリやったくらいなので、しょぼい自作のフレームワーク
と比べて、あまり恩恵を感じられてないのですが、もう少し学習してみたいと思
います。
0253nobodyさん
2010/11/27(土) 13:38:43ID:???合う合わないがある。色々あるから他のを試してみても良いと思う。
0254252
2010/11/27(土) 18:31:52ID:???DB関連は、SQLを直接書いて、PDO。
出力は、Smartyにお任せ。
CakePHPを使えば、上記のアーキテクチャ(?)に比べて数倍効率UPすると
思っていましたが・・・もしかするとそれは幻想かなぁ・・・
0255nobodyさん
2010/11/27(土) 20:10:38ID:???(Model周りのメソッド含め)
0256nobodyさん
2010/11/28(日) 11:24:00ID:???とりあえず過去の遺産は忘れて、Cakeに染まってみたら?
そこから自分が効率良いと思う手法にしたらいいと思う。
0258nobodyさん
2010/11/28(日) 23:06:55ID:???オレオレフレームワークの方の道も開けるよ。
そしてCakeの流儀がいかに計算されているかに気づく。
■ このスレッドは過去ログ倉庫に格納されています