シナリオ (すべて管理領域/バックエンド内で発生):
- 一覧ページから、ユーザーはリンクをクリックして (バックエンドで) 記事を表示します。
- 記事ビュー ページから、ユーザーはリンクをクリックしてその記事を編集します。
- 記事の編集ページでは、現在の uri にフォームが送信されます。
- 検証が成功するか、ユーザーがキャンセルした場合、ユーザーは記事ビュー ページにリダイレクトされます。
- 記事ビュー ページから、ユーザーは「戻る」リンクをクリックしてリスト ページに戻ります。
リスト <--> 表示 <--> 編集
現在、前のページからの参照 URL しか追跡できません。編集フォームでは、非表示フィールドを使用してビュー ページへの参照を維持しています。これは、失敗したフォーム POST 自体への送信中に変更され、ユーザーが編集ページに留まらないようにするためです。
問題は、ユーザーが編集からビュー ページに戻ったときに、リスト ページへの「戻る」リンクが編集ページにリンクされていることです。
ご参考までに、
- リスト ページの URL は動的です。ユーザーは同じページと並べ替え順序 (クエリ文字列に格納されている) でリストに戻る必要があるためです。したがって、固定 URL は問題外です。
- 過去に、セッションを使用しようとしました (例: SESSION['view_to_list_ref'] SESSION['edit_to_view_ref']) が、複数のタブでめちゃくちゃになりました。
- 私は ajax を介して表示/編集を切り替えることができましたが、現時点ではアプリをシンプルで ajaxless に保ちたいと考えています。
- PHP + Kohana 3.2 フレームワークを使用しています
私が考えることができる唯一の解決策は、リストページの URL をエンコードし、クエリ文字列を介して「記事を表示」リンクに追加することです。このように、リスト ページの場所は、編集ページであっても保持されます。ビュー ページに戻る参照 URL には、クエリ文字列にリスト ページの URL も含まれているためです。しかし、長いパラメーター値 (エンコードされているかどうかにかかわらず) で URL を「汚す」という考えはあまり好きではありません。
一般的に複数レベルのページ参照を追跡するというこの問題に対して、より洗練された解決策があることを本当に望んでいます。私が言及したシナリオを解決するだけではありません。
編集:ああ、ソリューションは同じシナリオを実行する複数のタブをサポートできるはずです。