CakePHPで404エラー表示

コントローラで定義されていないものが呼び出されたときに
404エラーを表示する方法。

1.appconfigroutes.php の一番最後の行に下記を追加。
    Router::connect(‘*’, array(‘controller’ => ‘posts’, ‘action’ => ‘error_404NotFound’));

2.appcontrollersposts_controller.php に下記を追加。
    function error_404NotFound() {
        $this->cakeError(‘error404’);
    }

3.apperror.php を作成し、下記を追加。
        class AppError extends ErrorHandler { 

        function error404($params) { 

            $this->controller->layout = ‘error’; 
            parent::error404($params);

        } 
    } 
    ?>

4.appviewserrorserror404.ctp を作成し、
404エラー時に表示したいHTMLを追加。

5.appviewslayoutserror.ctp を作成し、
404エラー用に表示したいレイアウトのHTMLを追加。

■注意事項
下記事項に注意しないとエラーメッセージ
「Cannot modify header information – headers
already sent by」が表示される。

1.modelの各ファイルなどの文末に改行を削除する。
2.ファイルをUTF-8形式で保存する。
3.UTF-8のBOMを削除する。

ドメインが異なる複数のサイトをXAMPPでVirtualHostを使って運用

開発環境でXAMPPを使って、複数ドメインを運用する場合は
Apacheの設定でVirtualHostを使えばすぐに利用可能。

下記2ファイルを編集するだけで完了。
 C:xamppapacheconfextrahttpd-vhosts.conf
  と
 C:WindowsSystem32driversetchosts

■分かりやすい解説サイト
XAMPPでVirtualhostとhostファイル利用して複数サイト管理|Materializing [マテリアライジング]
XAMPPでバーチャルホストをローカル環境に導入 – おそえの日誌

CakePHPでmodelに1対多のhasManyを定義

Controllerで1対多のhasManyを定義できるが、
Modelに書いたほうがスマート。
紐付けるカラム名はルールがあるので注意。
(usersテーブルのidカラムに紐付ける場合は、
commentsテーブルにuser_idカラムという名前で用意する必要がある。)

紐付けはmodelにこれを書くだけでOK↓

class User extends AppModel {
    var $name = 'User';                
    var $hasMany = 'Comment';   
}
?>

http://book.cakephp.org/ja/view/82/hasMany

CakePHPで末尾にスラッシュを追加する方法

これはなんでも使える方法。
最後に「’ ‘(半角スペース)」を引数で渡すだけ。

‘link’ => array(‘action’ => ‘service’, $posts[‘PostList’][‘id’], ‘ ‘),

生成されたURLはちゃんとスラッシュ終わりになっていて、
半角スペースも消えてる。

■参考サイト

 CakePHPのURLにスラッシュをつける | RiaLivit Blog
 
 
 
ほかにはControllerでbeforeFilterを指定して
スラッシュあり・なしを統一する方法↓

■参考サイト
 CakePHPでURIの形式を統一する - (DxD)∞