指定されたアクション/コントローラ/ビューが存在しなかった場合にエラー表示する為のビューを設置。
- 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()に書くとか。