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

    元スレ【PHP】フレームワーク CakePHP 10ホール目【v1.3】

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

    52 = :

    皆すごいな。話についていけない・・・。

    53 = :

    コントローラ内で、リダイレクトする時に変数のデータもつけたいのですが、
    どうすればよいでしょうか?  1.3です。

    マニュアルを読むと、httpステータスコードしか指定できないから、
    無理なのかな。。

    $this->redirect(array('action' => 'edit', $id));  
    (この$idに変数をいれたらエラーが。)

    http://book.cakephp.org/view/982/redirect


    55 = :

    >>53
    こういうことがしたいん?
    $this->redirect('/hoge/edit/' . $id));

    56 = :

    >>55

    そうなんです。しかし、その$idは変数いれられなかったみたいで。

    57 = :

    Authを使ったログインで、
    ログインしたままの状態で数時間そのままにし、別のページを閲覧すると
    ログインが切れてログインフォームに移動します。

    改めてログインしようとログイン情報を入れても失敗します。
    しかし、同じ内容をもう一度入力するとログインできます。

    おそらくセッションの問題とは思うのですが、
    この現象を解決する方法はないでしょうか?

    58 = :

    >>57
    Auth使ってるあたりのコードを書いてみて
    login() , logout() とか beforeFilter() とか

    59 = :

    >>58
    Cookbookの内容と同じです。
    http://book.cakephp.org/ja/view/1250/Authentication

    他の人は>>57の症状にならないんですか?
    割と頻繁に発生するんですが。

    60 = :

    Aのモデル内でBのモデルのメソッドを呼び出したいです。

    function get() {

    $this->User = ClassRegistry::init('User'); //use User model
    $data = $this->User->find($conditions);

    }

    このように、ファンクションのたびに、 ClassRegistry::init('User') で
    他のモデルを呼び出しています。

    しかし、一つのモデル内で一括して適用させるには
    どうすればよいのでしょうか?

    もしくは、一括で適用させると重くなるので、今まで通り毎回使う時だけ
    呼び出したほうが件名なのでしょうか?

    61 = :

    >>60
    >しかし、一つのモデル内で一括して適用させるには
    >どうすればよいのでしょうか?
    なにいってっかわかんね。

    あそしえーしょんされてるなら
    $this->Userでもともと呼べるけど、そうじゃないんだよね?
    だったらなんか根本的に設計がダメダメだと思うわ
    そのモデルでやるべきことじゃない

    62 = :

    >>61

    質問がややこしくすいません。

    サンプルがわかりくいですが、データベースの操作は
    まったく関係なしという形の場合ではどうでしょうか?

    つまり、

    Aのモデル内に  function setAlerts() というファンクションがあり、

    このファンクションをBのモデル内の操作で利用したいといった形です。

    その時、Bのモデル内で

    $this->A = ClassRegistry::init('A');
    $this->A->setAlerts();

    このようにしてます。 でも、毎回 $this->A = ClassRegistry::init('A');  を呼び出すのはめんどくさいなあ、
    でも、全体に適用すると重くなるのかなあと悩んでます。

    64 = :

    cakePHP 1.3 になりましたが、 以前 htmlHelperは重くなるから使わないほうがよいのでしょうか?

    FormHelperは積極的に使ってるんですが。

    65 = :

    ソースを見て、無駄が多いなーと感じないのであれば使えば良いではないでしょうか。

    66 = :

    >>64
    linkは重くなるってのはググったら良く出てくるな。

    ま、プログラムをかますという事はそれなりの処理を入れているわけで
    必然的に、素のHTMLよりも重くなるのは当たり前。

    67 = :

    テーブル名を変更した際に、Cakeのソースのモデル名を一括で変更してくれるツールはないでしょうか?

    68 = :

    >>67
    ツールは知らんけど、そんな大量にあるの?

    69 = :

    >>67
    grep

    71 = :

    >>67
    perl -pi -e 's/Before/After/g' app/*

    72 = :

    1つのコントローラにモデルが20個ぐらい必要になった
    usesが長くてウゼー

    73 = :

    >>72
    適切にアソシエーション貼ればそんなにならなくない?
    あとuses使うより、ClassRegistry::init()使った方が良いよ

    74 = :

    トップページかなんらかのインデックスページじゃないの?

    75 = :

    ユーザーのトップ画面とかだと情報が集約されてるから
    多くなりがちだね

    76 = :

    ソーシャルゲームの初回チュートリアルのコントローラなんだけど、
    そこで名前登録したり、試合したり、初期アイテムやお金を与えたり全部入ってるから
    モデルをたくさん使うんだが、モデル同士は普段から関連付けるほどでもなかったりする
    ユーザーのマイページでも、各種パラメータを表示するため使用モデルがアホみたいに増える
    パラメータが多いので、モデルはできるだけ分けないと100カラムぐらいのテーブルができてしまう

    >>73
    usesだとコントローラが問答無用に全部初期化するけど、各アクション内で使うものだけ自分でinitしろってこと?

    77 = :

    >>76
    そう、usesよりCR::initのほうが推奨されてるから書いたけど
    その使い方でController内に少数のアクションしかないならどっちでも良いかも

    78 = :

    >>77
    なるほど。そういうやり方があるんだな。勉強になった。

    79 = :

    このスレもたまには役に立つな

    80 = :

    最近cakePHPを始めた初心者です。

    同一のプログラムで全く弄っておらず、設定も変えておらず、
    それなのにMissing Controllerというエラーが出る時と出ない時があるのですが、
    これは何故ですか?
    バージョンはcakePHP1.35で
    プログラムは「cakePHP1.3によるアプリケーション開発」のP49~
    フォームの利用というところのコードです。

    81 = :

    ルーティングに/:controller/:id/:action/* を指定して
    http://example.com/user/1/add
    というURLでアクセスできるようにしています。

    ビューの$paginator->sortでリンクされるURLを
    変更する方法って無いですよね?

    $paginator->options(array('url'=>"id:1"));
    をビューに追加して、リンクパラメーターに付加させる事は出来ますが
    URLがhttp://example.com/user/add/id:1/page:1/sort:id/direction:asc
    のようになってしまいます。

    82 = :

    $paginator->options(array('url'=>array('action'=>'add', 'id'=>1)));
    でよくなかったっけ?タメシテない

    83 = :

    function beforeFilter(){

    $this->Auth->allow('index','logout');

    //このように一括で設定
    $this->account = $this->Auth->user();
    $this->set('account', $this->account ); //send account data to view
    }

    ログイン後のページで、ユーザーのステイタスを画面に
    表示させています。

    AuthからIDを取って、setでビューに送る
    コードをアクション毎に書くより、上記のようにbeforeFilterで
    一括してもよいでしょうか?

    これは重くなる原因だからやってはいけない方法か不安なので
    アドバイスいただければ幸いです。

    84 = :

    >>82
    出来ました!あなたは神だ!!本当にありがとう!!!

    85 = :

    >>84
    慣れてきたらソース読んだほうがいいよ
    http://api.cakephp.org/classes
    ここからクラス探して読めばいい

    88 = :

    んー
    apacheの設定でそういうのあったっけ?どのhttpdかしらんが

    89 = :

    apacheじゃなくて、Cake自体に合った気がする。
    自作CMS作っていた時に同じような症状に出くわした。

    90 = :

    >>77
    loadModelってのもあるみたいだけどどっちがいいの?
    loadModelはコントローラでしか使えないんだっけ?

    91 = :

    >>90
    そだし、そのコントローラで使えるモデルしか読み込めないぞ

    92 = :

    そのコントローラで使えないモデルって例えばどんなん?

    94 = :

    >>90
    ClassRegistryって比較的新しいのよ
    で、それができていろいろ不要になった感じ
    loadModelもそう。というかloadModelが、かな

    95 = :

    >>94
    App::import('model', 'User');
    $User = new User;
    よりいいかんじ?

    97 = :

    実際のコントローラーはUserCommentControllerなんだけど
    URL上はhttp://example.com/comment/で表示させたいと思っています。

    prefixとは逆の処理のイメージなのですが、その様な事は可能なのでしょうか?
    可能な場合、ルーティングの書き方を教えてください。

    98 = :

    >>97
    Routerクラスを調べてみれ

    99 = :

    >>98
    調べてみたのですが、コントローラーに文字列を付与して
    指定とは別のコントローラーを実行するような設定箇所がありません。

    だから↓な感じの指定方法しか思いつかないです・・。

    $array = explode('/', $_GET['url']);
    $contoroller = 'user_'.$array[0];

    Router::connect('/:controller/*',array('controller' => $controller));

    100 = :

    >>99
    http://book.cakephp.org/ja/view/542/Defining-Routes

    これ読んで理解できないって言うなら、諦めた方がいいと思う。


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

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


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