0

間違ったパラメータで正しいベースURLを処理するにはどうすればよいですか?

Cakephp間違ったコントローラーまたはアクション名を渡すと、404ページになります。しかし、間違ったパラメーターで正しいコントローラー/アクション名を入力した場合、この種のケースにどのように対処できますか?

例:

正しい: http://localhost/controller/action?params=123 間違っている:http://localhost/controller/action?par23=123

par23は間違った名前です。この場合、404ページのようないくつかのページにリダイレクトしたいと思います。コントローラのパラメータをチェックして、毎回あるページにリダイレクトする必要のない方法や構成はありますか?

ありがとうございました

4

1 に答える 1

0

これは、コントローラーで手動で確認する必要があります。

余分な間違ったパラメータを探す代わりに、必要なパラメータがそこにあるかどうかを確認します。そうでない場合は、例外をスローできます。

これは、Cakeのベイクされたコードがそれを行う方法です。

// MyModelController.php
public function view($id = null) {
        $this->MyModel->id = $id;
        if (!$this->MyModel->exists()) {
            throw new NotFoundException(__('Invalid thing'));
        }

        // ...
}

したがって、ここではIDが必要です。指定されていない場合(デフォルト値null)、またはこのIDを持つレコードが存在しない場合、404になる例外がスローされます。

これには追加の利点があることに注意してください。これは、パラメータが欠落している場合をカバーするだけでなく、パラメータが存在する場合はエラーを正しく返すだけでなく、存在しないアイテムを参照し$idます。

于 2012-06-07T08:28:53.643 に答える