2017-10-18 2 views
0

私のウェブサイトでは、特定のリンク(ROLE_ADMINなど)にアクセスできるユーザーはごく少数です。通常のユーザーとしてログインし、これらのリンクにアクセスしようとすると、symfony AccessDeniedHttpExceptionが届きます。つまり、動作します。symfony:アクセスが拒否されたときにjQueryモーダルダイアログを表示する

質問は、単にデータがあまりにも賢明であることをユーザーに示すモーダルダイアログ(jQueryと思います)を作成することはできますか?

スクリプトを含む変数をレンダリングする必要があるので、私はtwigでそれを行う方法を知らないのですか?これを行う正しい方法を少なくとも知っていればうれしいです。

答えて

1

私が理解しているように、ユーザーがこのリンクをクリックする(または進む)権利がない場合、モーダルウィンドウを開いてユーザーにメッセージを表示する必要がありますか?

高速かつ簡単な解決策:

我々は、(例えば)は、このようなリンクを持っている:

<a href="{{ path("some_route")}}"> click me</a>

現在のユーザが役割(is_granted)ROLE_ADMINを持っているかどうかをチェックでき、それを示して、それ以外の場合は、次のようなポップアップを含む特定のリンクを表示します: main.html.twig

{% if is_granted('ROLE_ADMIN') %} 
    <a href="{{ path("some_route")}}"> click me</a> 
{% else %} 
    show a link with popup here 
{% endif %} 

bootstrap popoverなどのポップアップを使用できます。

+0

ありがとう、これは私を助けました! –

+1

これは技術的にうまくいきます。しかし、このようなチェックが必要な複数のルートがある場合は、例外リスナーを持つ方が理にかなっているため、チェックロジックは一元的に定義され、ビューレイヤーにはリンクされません。 – Asha

1

例外イベントリスナーを実装して、AccessDeniedHttpExceptionをリッスンすることができます。応答は、エラーメッセージまたはHTMLページを表示するように設定できます。文書here

関連する問題