存在しないページにとんだときエラーを出す

指定されたアクション/コントローラ/ビューが存在しなかった場合にエラー表示する為のビューを設置。

  • views/missing_action.ctp
  • views/missing_controller.ctp
  • views/missing_view.ctp
<p>指定されたページは存在しません。</p>

コントローラ内でエラーが発生した(不正なパラメータを渡されたとか)場合に、強制的に飛ばす先のビューを設置。

  • views/layouts/error.ctp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <?php echo $html->charset(); ?>
  <title><?php echo $title_for_layout; ?></title>
  <?php echo $scripts_for_layout; ?>
</head>

<body>
  <div id="main">
    <div id="container">
      <p>指定されたページは存在しません。</p>
    </div>
  </div>
</body>
</html>

コントローラ内で

<?php
...
function confirm($id) {

という感じで呼んでいる場合は

<?php
...
function confirm($id=null) {

に書き換え。
その直後で

<?php
...
if (empty($id)) {
    //パラメータが足りなかったらエラーページへ飛ばす
    $this->layout = "error";
    return;
}

してみる。
とりあえずこれでいけてるけど、なんか他にいい方法ありそう。
app_controller.phpのbeforeFilter()に書くとか。