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

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

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

    1 = :

    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 = :

    >PEARとかのクラス名とCakeのコアクラスが衝突しちゃう場合
    >どう対応してますか?

    PHPてnamespaceないんだっけか?
    なんちゅーダサい言語w

    3 :

    >>2
    あるよ

    5 = :

    携帯サイトと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 = :

    >>5
    beforeFilter()かそれ以前で携帯か判定して
    beforeRender()でviewを切り替えるComponentをつくる。
    Controllerのactionは基本共通で場合によって処理も分けられる。

    7 = :

    コントラが同一にできないのであれば、設計がどこかおかしいと思うぞ。

    8 = :

    >>6-7
    サンクス
    いや、多分コントローラのアクション同一のものを使えると思う

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

    >beforeFilter()かそれ以前で携帯か判定して
    これがちょっとわからない
    beforeRender()のview切り替え時に携帯かどうか判断したらだめなの?

    9 = :

    >>8
    > >beforeFilter()かそれ以前で携帯か判定して
    > これがちょっとわからない
    > beforeRender()のview切り替え時に携帯かどうか判断したらだめなの?
    actionの中身が完全に同一ならいいんだけど
    たまに場合分けしたい部分もあるかと思ってね。
    利用するModelも変わるかもしれないし。

    11 = :

    >>9
    なるほど

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

    みなさんありがとう!

    12 = :

    >>11
    結局どうやったのかまとめて書いてくれるとありがたい。

    13 = :

    >>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 = :

    Cakeって結構便利なんだね

    16 = :

    foreachで出力してstr_replaceすればいいじゃん

    17 = :

    >>16
    再帰的?にやらないとだめですよね?

    19 = :

    置換するデータが決まってる場合は、再帰しなくても良いよ

    20 = :

    >>19
    どういうことですか?
    mb関数を使って変換したいんですけど、できますか?

    23 = :

    >>22
    $this->data覗いてみればわかるんじゃないの?

    24 = :

    >>23
    いろいろ試しているけど、バリデーションの仕組みがややこしすぎる・・・
    allowEmpty と required ってどう違うんだろw
    requiredをtrueにしても、通ったりするし

    25 = :

    そういう時は、やりたい処理をシコシコ書いた方が読みやすくて保守しやすいよ。

    26 = :

    CakePHPってAppControllerやAppModelにかなり手を入れないと
    使い物にならないよね。
    あと、標準のコンポーネントやヘルパーはホント使い物にならない。
    特にFormヘルパーは心の底から使えない。
    こんな屑フレームワークが何故こんなに持てはやされているのか謎。

    27 = :

    >>24
    required は「その項目の存在を必須とするか?」の設定で、 allowEmpty は「空の値を許容するか?」

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

    28 = :

    >>26
    「みんなが使ってるから」

    という日本人的な理由があるからです。
    嫌なら自分でヘルパー作りましょう。

    29 = :

    >>28
    日本人的理由って言うか、
    途中で誰もメンテしなくなったりプロジェクトが消えてしまったりするフレームワークをいろいろ見てると
    やっぱ使ってる人数は多いほうが良いよ。

    30 = :

    そもそもなんで使っている人が増えたかだよ。
    最初から使用者が多かったわけではないのに
    「みんなが使ってるから」は理由にならないと思う。

    ちょっと、formヘルパーがなんで使えないか聞いてみたい。

    32 = :

    >>27
    なるほど。
    わかりやすい説明ありがとうございました。

    33 = :

    コントローラーやモデルは面倒だからそのまま使ってる
    カスタマイズに本気になる時間があったら俺俺作るわ

    ヘルパーが使えないには同意。使ったことない。

    35 = :

    htmlとかばりばり使うでしょ。urlとか決め打ちしてんの?

    37 = :

    HTMLヘルパーで出力するHTMLをカスタマイズしようとすると
    記述が煩雑になってありがたみが薄れるからなー。
    簡単なelement書くか、変数展開だけで済ますかな。

    40 = :

    formヘルパーなんかDBの設定読み込んで、
    maxlength自動で設定してくれたりして、便利だと思うけどなぁ。
    (保守が楽)

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

    42 :

    嫌なら変えればいいんじゃない?

    43 = :

    変える方法あるの?

    47 = :

    そこは看過してやれよ。

    48 = :

    打ち間違いぐらい許してくれよ・・・

    49 = :

    Jsヘルパーって使ってますか?
    複雑になるだけな気がするんですが、メリットがあったら教えてもらいたいです。

    50 = :

    $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一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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