2016-10-15 10 views
0

hapijsでフラッシュエラーメッセージを設定したいとします。私はこれらの二つの質問呼ば:ここhapijsでのセッションフラッシュの設定とクリア

How to set Flash Messages in Hapi JS?
Hapijs Custom 500 Error Page

onPreResponseです:

server.ext("onPreResponse", (request, reply) => { 
    let response = request.response; 
    if (response.variety === "view") { 
    if (!response.source.context) { 
     response.source.context = {}; 
    } 
    let flashError = request["yar"].get("error"); 
    if (flashError) { 
     response.source.context["err"] = flashError; 
    } 
    } 

その後ハンドラで、私はrequest["yar"].set("error", err["message"]);

しかし、セッション変数(err)を使用して設定決してクリアされません。私はrequest["yar".get("error", true)request["yar"].set("error","")を試しました。これにより、ユーザーは画面をナビゲートする際にビューに同じエラーが表示されます。

私はrequest["yar"].flash()でも試しましたが、同じ結果が出ました。

ビューに表示するフラッシュ/一時エラーメッセージを設定するにはどうすればよいですか?

+0

はどのようにして、 "ERR" クッキーを設定していますか?ハンドラ関数を表示できますか?また、どのバージョンの "hapi"と "yar"? – arb

答えて

0

yar.set()は、読み取り時に削除されない通常のセッションデータを設定します。フラッシュメソッドを使用してフラッシュを保存し、取得する必要があります。

flash(type、message、isOverride) - 揮発性データを保存します。一度読み込むと削除する必要があるデータです。引数を指定しないと、すべてのフラッシュメッセージが返され、オリジナルが削除されます。あるタイプのみが与えられると、そのタイプのフラッシュメッセージがすべて返され、オリジナルが削除されます。型とメッセージが与えられると、指定された型にそのメッセージを設定または追加します。 'isOverride'は、指定されたメッセージが追加されるのではなく、既存の値を置き換えるべきであることを示すために使用されます(デフォルトはfalse)。

だからあなたのハンドラでフラッシュ保存:

request.yar.flash('error', err['message']); 

をし、どこか他のすべての 'エラー' が点滅を検索:

const allErrorMessages = request.yar.flash('error'); 
関連する問題