2017-10-18 93 views
0

在我的網站中,只有少數用戶有權訪問某些鏈接(ROLE_ADMIN等)。以普通用戶身份登錄並嘗試訪問這些鏈接時,我收到Symfony AccessDeniedHttpException,這意味着它可以正常工作。Symfony:當拒絕訪問時顯示jQuery模式對話框

問題是,我怎麼能創建一個模式對話框(我猜jQuery)只是簡單地指示用戶數據太明智了?

我不知道如何在樹枝做它,因爲我將不得不渲染一個包含腳本的變量?至少知道這樣做的正確方法是很好的。

回答

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