Seo tools

Neo Inspiration

  • Search

    • About Me

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



  • Categories

  • Ranking

  • Comments

  • Others


  • cake のエラー処理関連

    いくらなんでもユーザがミッシングURLをたたいたときに
    Missing Controller の画面がでるのはひどいな。。。
    (Debugモードを0にすると今度はデフォルト真っ白だし!)

    ということで、エラー画面の修正方法を調査
    とりあえず

    /cake/libs/error.php

    がデフォで行うエラー処理らしい。

    エラー処理も
    ・単にViewを変えるパターン
    ・エラー処理そのものを変えるパターン
    の2種類あるので、まあ、両方調べてみました。

    今ある View を変えるだけパターン

    render()でviewに渡してる名前を全部リストアップして、
    その view を /app/views/errors/ の中にファイルとして作成する。

    以下14ファイル(これで全部だと 思う・・)

    error404.thtml
    missing_action.thtml
    missing_component_class.thtml
    missing_connection.thtml
    missing_controller.thtml
    missing_scaffolddb.thtml
    missing_fomponent_file.thtml
    missing_helper_class.thtml
    missing_helper_file.thtml
    missing_layout.thtml
    missing_model.thtml
    missing_table.thtml
    missing_view.thtml
    private_action.thtml
    *Smarty 使ってる人は tpl ですね。

    それぞれ適当な内容をかけばOK
    たぶんですがDEBUG=0 にしておくと

    if (Configure::read() > 0 || $method == ‘error’) {
      call_user_func_array(array(&$this, $method), $messages);
    } else {
      call_user_func_array(array(&$this, ‘error404′), $messages);
    }

    これで全部 error404.thtml にすっとばしてくれるっぽいので、
    これだけでもていねいに作った方がいいかな。
    (未確認です)

    そもそもエラー処理を変えるパターン

    /app/error.php を作成する
    でこんな感じに適当に処理をかけばOK

    class AppError extends ErrorHandler {
      function error($params)
      {
        //DEBUGモードが0かそれ以外かを判別
        if(Configure::read() !== 0){
          return parent::error($params);  //通常通りの処理
        }else{
          $this->controller =& new AppController();  //appcontroller を使えるように
          $this->controller->redirect( “/”, 301 );  //ルートにリダイレクト
        }
      }
    }

    一応注意としては、 ErrorHandler は Exit してないそうなので
    リダイレクトとかならいいですが、 ほかの処理するなら最後に exit しないと
    うまく動きません。(error.php を見るとわかりますが、全部メソッド内で exit かけてます)

    ここに教えてもらいました: CakePHP cakeError()は値を返さない | Shin x blog

    とりあえず自分は 404に全部飛ばそうかな。


    Leave a Reply

    2008/11/22 09:43:43