のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,660,062人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ【PHP】フレームワーク CakePHP 12ホール目【笑】

php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
1 : nobodyさん - 2011/07/01(金) 16:33:46.28 ID:??? (+93,-30,-311)
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
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

前スレ
【PHP】フレームワーク CakePHP 11ホール目【v1.3】
http://hibari.2ch.net/test/read.cgi/php/1297860755/
2 : nobodyさん - 2011/07/01(金) 17:48:14.76 ID:??? (+7,-29,-68)
>PEARとかのクラス名とCakeのコアクラスが衝突しちゃう場合
>どう対応してますか?

PHPてnamespaceないんだっけか?
なんちゅーダサい言語w
3 : nobodyさん - 2011/07/01(金) 18:07:43.44 ID:Hz/Fo+ud (+2,+16,+1)
>>2
あるよ
4 : nobodyさん - 2011/07/01(金) 19:10:44.19 ID:??? (-1,-29,-20)
前スレ990からのやつ
Cake的にはConfigure::load()/read()じゃなくて?
5 : nobodyさん - 2011/07/01(金) 19:38:21.72 ID:??? (+24,-30,+0)
携帯サイトと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用と携帯用で全く同じ処理なのに
別々のアクションを作らないといけない。
これはしょうがないのかな?
もっとナイスな実装方法があれば助言お願いします
6 : nobodyさん - 2011/07/01(金) 23:15:29.99 ID:??? (+10,-30,-56)
>>5
beforeFilter()かそれ以前で携帯か判定して
beforeRender()でviewを切り替えるComponentをつくる。
Controllerのactionは基本共通で場合によって処理も分けられる。
7 : nobodyさん - 2011/07/02(土) 00:23:23.70 ID:??? (+57,+29,-18)
コントラが同一にできないのであれば、設計がどこかおかしいと思うぞ。
8 : nobodyさん - 2011/07/02(土) 00:36:56.30 ID:??? (+10,-30,-102)
>>6-7
サンクス
いや、多分コントローラのアクション同一のものを使えると思う

>beforeRender()でviewを切り替える
なるほど。
処理が全て終わったあとで、
$this->render('mobile_' . 現在のaction名);
みたいな感じかな。

>beforeFilter()かそれ以前で携帯か判定して
これがちょっとわからない
beforeRender()のview切り替え時に携帯かどうか判断したらだめなの?
9 : nobodyさん - 2011/07/02(土) 00:52:56.31 ID:??? (+18,-29,-65)
>>8
> >beforeFilter()かそれ以前で携帯か判定して
> これがちょっとわからない
> beforeRender()のview切り替え時に携帯かどうか判断したらだめなの?
actionの中身が完全に同一ならいいんだけど
たまに場合分けしたい部分もあるかと思ってね。
利用するModelも変わるかもしれないし。
10 : nobodyさん - 2011/07/02(土) 06:43:28.79 ID:??? (+13,-30,-35)
>$this->render('mobile_' . 現在のaction名);
切り替えにはテーマを使うほうがいいんじゃないかな?

http://book.cakephp.org/ja/view/1093/%E3%83%86%E3%83%BC%E3%83%9E
11 : nobodyさん - 2011/07/03(日) 03:59:17.90 ID:??? (+56,-8,-18)
>>9
なるほど

>>10
おお、テーマ便利だわ
テーマ使ったら >>5 の方法みたいに
/m/ でアクセスする必要無くなったな

みなさんありがとう!
12 : nobodyさん - 2011/07/03(日) 08:49:39.89 ID:??? (+71,+29,-2)
>>11
結局どうやったのかまとめて書いてくれるとありがたい。
13 : nobodyさん - 2011/07/03(日) 11:43:28.90 ID:??? (+12,-30,+0)
>>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してくれる

結局テーマでほぼ解決できた感じ
14 : nobodyさん - 2011/07/03(日) 19:14:04.25 ID:??? (+46,+23,-2)
Cakeって結構便利なんだね
15 : nobodyさん - 2011/07/03(日) 19:44:35.63 ID:??? (-1,-29,-6)
$this->data の中にあるデータ全てに置換処理をしたい場合どうしたらいいですか
16 : nobodyさん - 2011/07/03(日) 19:51:41.97 ID:??? (+31,-29,-2)
foreachで出力してstr_replaceすればいいじゃん
17 : nobodyさん - 2011/07/03(日) 22:25:08.20 ID:??? (+62,+29,-18)
>>16
再帰的?にやらないとだめですよね?
18 : nobodyさん - 2011/07/03(日) 23:13:54.05 ID:??? (-1,-29,-3)
再帰的っつーと、array_map_recursiveだかなんだかかな
19 : nobodyさん - 2011/07/03(日) 23:53:57.75 ID:??? (+76,+29,-5)
置換するデータが決まってる場合は、再帰しなくても良いよ
20 : nobodyさん - 2011/07/04(月) 14:06:30.67 ID:??? (+38,+0,-7)
>>19
どういうことですか?
mb関数を使って変換したいんですけど、できますか?
21 : nobodyさん - 2011/07/04(月) 17:00:10.02 ID:??? (-2,-30,-19)
php5ならこれでどう?
array_walk_recursive
22 : nobodyさん - 2011/07/05(火) 16:49:34.52 ID:??? (+8,-28,-35)
バリデーションで、
同じフォームのある特定のselectのある選択肢が選択された時のみ、
ある input をrequiredにする、
ってできる?
↓これでできそうな気がするけど、同じフォームの値は取ってこれないのかな
http://book.cakephp.org/ja/view/1179/%E7%8B%AC%E8%87%AA%E3%81%AE%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%AB%E3%83%BC%E3%83%AB
23 : nobodyさん - 2011/07/05(火) 17:22:13.64 ID:??? (+3,-29,-5)
>>22
$this->data覗いてみればわかるんじゃないの?
24 : nobodyさん - 2011/07/05(火) 22:01:52.46 ID:??? (+4,-29,-64)
>>23
いろいろ試しているけど、バリデーションの仕組みがややこしすぎる・・・
allowEmpty と required ってどう違うんだろw
requiredをtrueにしても、通ったりするし
25 : nobodyさん - 2011/07/05(火) 23:00:47.78 ID:??? (+57,+29,-7)
そういう時は、やりたい処理をシコシコ書いた方が読みやすくて保守しやすいよ。
26 : nobodyさん - 2011/07/06(水) 00:54:19.01 ID:??? (+96,+29,-91)
CakePHPってAppControllerやAppModelにかなり手を入れないと
使い物にならないよね。
あと、標準のコンポーネントやヘルパーはホント使い物にならない。
特にFormヘルパーは心の底から使えない。
こんな屑フレームワークが何故こんなに持てはやされているのか謎。
27 : nobodyさん - 2011/07/06(水) 10:07:17.00 ID:??? (+37,-30,-113)
>>24
required は「その項目の存在を必須とするか?」の設定で、 allowEmpty は「空の値を許容するか?」

分かりやすく言うと、
パスワードとかで、
required = false
allowEmpty = false
にすれば、
フィールドがある場合は、必須入力。
フィールドがない場合は、保存可能。

28 : nobodyさん - 2011/07/06(水) 10:19:27.84 ID:??? (+104,+29,-25)
>>26
「みんなが使ってるから」

という日本人的な理由があるからです。
嫌なら自分でヘルパー作りましょう。
29 : nobodyさん - 2011/07/06(水) 10:48:30.44 ID:??? (+71,+29,-56)
>>28
日本人的理由って言うか、
途中で誰もメンテしなくなったりプロジェクトが消えてしまったりするフレームワークをいろいろ見てると
やっぱ使ってる人数は多いほうが良いよ。
30 : nobodyさん - 2011/07/06(水) 11:30:19.94 ID:??? (+57,+29,-36)
そもそもなんで使っている人が増えたかだよ。
最初から使用者が多かったわけではないのに
「みんなが使ってるから」は理由にならないと思う。

ちょっと、formヘルパーがなんで使えないか聞いてみたい。
31 : nobodyさん - 2011/07/06(水) 11:57:44.55 ID:??? (-1,-29,-26)
それは「分かりやすいから」じゃないか?
俺はZendとかEthnaで挫折したけど、Cakeだと続けて来れた
32 : nobodyさん - 2011/07/06(水) 16:07:34.79 ID:??? (+62,+29,+0)
>>27
なるほど。
わかりやすい説明ありがとうございました。
33 : nobodyさん - 2011/07/06(水) 18:46:45.58 ID:??? (+57,+29,-42)
コントローラーやモデルは面倒だからそのまま使ってる
カスタマイズに本気になる時間があったら俺俺作るわ

ヘルパーが使えないには同意。使ったことない。
34 : nobodyさん - 2011/07/06(水) 20:28:57.66 ID:??? (-1,-29,-19)
htmlヘルパーはほぼ使わないな
ビューでaddScript書く時だけ使う。
35 : nobodyさん - 2011/07/06(水) 22:34:45.23 ID:??? (+57,+29,-6)
htmlとかばりばり使うでしょ。urlとか決め打ちしてんの?
36 : nobodyさん - 2011/07/06(水) 23:33:25.75 ID:??? (-6,-29,+1)
???
普通に<a>タグ書けばいいじゃん
37 : nobodyさん - 2011/07/06(水) 23:55:49.43 ID:??? (+57,+29,-35)
HTMLヘルパーで出力するHTMLをカスタマイズしようとすると
記述が煩雑になってありがたみが薄れるからなー。
簡単なelement書くか、変数展開だけで済ますかな。
38 : nobodyさん - 2011/07/06(水) 23:55:53.23 ID:??? (-1,-29,-7)
routerでアドレス変更したときに、いちいち全ページ変更するんかい?
39 : nobodyさん - 2011/07/07(木) 02:25:19.28 ID:??? (-2,-29,-12)
???
<?php echo Router::url('/') ?>
とかしらないのか?
40 : nobodyさん - 2011/07/07(木) 12:07:41.48 ID:??? (+3,-29,-100)
formヘルパーなんかDBの設定読み込んで、
maxlength自動で設定してくれたりして、便利だと思うけどなぁ。
(保守が楽)

アソシエーションの設定をちゃんとしとけば
saveallで一発で保存できるし。

41 : nobodyさん - 2011/07/07(木) 14:34:22.19 ID:??? (-1,-29,-7)
まぁ、唯一気になるのが「name="data['User']['name']"」
となってしまう事だけど、これは仕方ないよな
42 : nobodyさん - 2011/07/07(木) 15:59:11.03 ID:zfJE1aJ1 (+18,+28,-3)
嫌なら変えればいいんじゃない?
43 : nobodyさん - 2011/07/07(木) 17:34:23.24 ID:??? (+43,+20,-1)
変える方法あるの?
44 : nobodyさん - 2011/07/07(木) 19:53:43.58 ID:??? (-2,-29,+0)
>>39
???
普通に<a>タグじゃないじゃん?
45 : nobodyさん - 2011/07/07(木) 20:47:26.25 ID:??? (-2,-30,-27)
???
<a href="<?php echo Router::ulr('/')?>">URL</a>

htmlヘルパー使わないんだから、こうなるよな
46 : nobodyさん - 2011/07/07(木) 21:46:25.25 ID:??? (-6,-29,-3)
???
ulrってなんぞ?
47 : nobodyさん - 2011/07/07(木) 22:46:37.36 ID:??? (+52,+29,-28)
そこは看過してやれよ。
48 : nobodyさん - 2011/07/08(金) 01:10:30.14 ID:??? (+52,+29,-2)
打ち間違いぐらい許してくれよ・・・
49 : nobodyさん - 2011/07/08(金) 11:16:11.84 ID:??? (+57,+29,-24)
Jsヘルパーって使ってますか?
複雑になるだけな気がするんですが、メリットがあったら教えてもらいたいです。
50 : nobodyさん - 2011/07/13(水) 05:52:56.24 ID:??? (+3,-30,-83)
$this->Model->getLastInsertID()
を使って他テーブルの外部IDを設定(ひもづけ)するのは危険かな?

例えばショッピングサイトで注文テーブルの注文IDを、注文内容テーブルの外部IDに設定するような場合。

処理の途中で別のINSERTが入った場合はどうなるんだろう・・・?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について