0

一日中、リクエストされた同じページにリダイレクトするための最良の解決策を探していました。編集アクション ページがあることを意味します。詳細、ビュー、最新、最近、または編集アクションに移動できるその他のアクションのいずれかから、このページに移動できます。私が欲しいのは、リダイレクト元の最後のアクションにもう一度移動したいということです。グーグル中に解決策を見つけました

`$this->redirect($this->referer());` //or 
`$this->redirect(Controller::referer());` 

コントローラーで使用して移動しますが、そこからのみナビゲートされるため、編集ページに戻ります。

他の解決策は、値がそれである隠し変数を使用するように私に言いました

`echo $this->Form->input('Song.referer', array('type' => 'text', "value"=>$this->request->referer()));` 

このようにして、編集が成功したときにこの変数にリクエストしてください。しかし、エラーが発生した場合に同じページが開いているため、コントローラーに検証が適用された場合は失敗するため、リファラーが変更されます。この場合のベストプラクティスは何ですか。セッションを保存し、リファラーをメインにするたびに呼び出しを保存するか、cakephp 2.3 で利用できる他の何かを保存する必要があります

4

2 に答える 2

0

私はこの方法を使用します:

アクションで編集ページへのリンクを作成するときに、「referer」パラメーターを追加します

$this->Html->link('Add', array('action' => 'add', 'referer' => 'detail'));

私のコントローラーでは、リファラーの値を読み取り、データを保存した後に正しいページにリダイレクトします。検証エラーの場合でも、リファラーの値はページのURLに残ります

URL を表示するユーザーに対して透過的ではなく、URL 自体を変更してリファラーを変更できるため、これは優れたソリューションではありません。しかし、それは機能し、実装は簡単です

于 2013-10-17T18:35:49.910 に答える
0

最後の場所を非表示フィールドに保存します。

$this->request->data["Business"]["referer"] = $this->referer();

保存機能にオプションの条件を付けて、このようにページにリダイレクトします。

if ($this->Business->save($this->request->data)) {
    (isset($this->request->data["Business"]["referer"]) && !empty($this->request->data["Business"]["referer"]) ? $this->redirect($this->request->data["Business"]["referer"]) : $this->redirect(array("action" => "index"));
}
于 2015-08-03T06:52:26.953 に答える