Neo Inspiration

  • Search

    • About Me

      • inspi 改め
        jakk@webアーキテクト(自称)
        php,javascript,seoなど
        得意技は extract();

  • Categories

  • Ranking

  • Comments

  • Others


  • cakephp で一つの controller からコンテンツを量産する方法

    うまいタイトルが思いつかなかった。。

    どういうことかというと
    全体レイアウトに Element を使っていたりして
    Element に「同じ」動的データを渡したくて、かつ中身はファイルごとに替えたい場合
    毎回 controller を作って view を作るのはだるい!!!

    ということです。

    結果から書くとこう

    //引数はファイル名に
    class RyousansController extends AppController
    {
        function index($name=null){

             //Element へのデータ
             $this->set(”",”");

             ・・・・適当に共通処理・・・・

             //ここで吐き出す view を指定
             $this->render($name);
        }
    }

    これでどうなるかというと

    http://www.hogehoge.com/ryousan/index/omake/

    でアクセスすると

    /views/ryousans/omake.tpl

    を読みに行くわけです。
    view だけ量産すれば
    一切 controller をいじらなくても

    omake1.tpl -> http://www.hogehoge.com/ryousan/index/omake1/
    omake2.tpl -> http://www.hogehoge.com/ryousan/index/omake2/
    omake3.tpl -> http://www.hogehoge.com/ryousan/index/omake3/
    omake4.tpl -> http://www.hogehoge.com/ryousan/index/omake4/
    omake5.tpl -> http://www.hogehoge.com/ryousan/index/omake5/

    と view にファイルを突っ込むだけでURLが自動生成されます。
    DEBUGモードが0になっていれば
    view フォルダにファイルがないURLは404で返されます。

    こうしておいて例えばヘッダフッタとかが共通のヘルプページやサイトマップとかは
    いちいち controller を作らずに
    help.tpl,sitemap.tpl を作って
    ryousans/ の中に入れてごりごり書いちゃえばいいだけになります。

    一つの controller で view を量産!!


    Leave a Reply

    2008/10/13 06:06:13