Q
根據用戶
1
A
回答
4
那麼,對於任何人運行到這個問題,我解決它通過返回一個空的響應中的execute()。我用例是一個地方,我想展現給用戶一個塊具有特定角色: 首先,我定義我的服務使用security.context服務,像這樣:
sonata.block.service.foo:
class: Acme\DemoBundle\Block\FooBlockService
arguments: [ "sonata.block.service.foo", "@templating", "@doctrine", "@security.context" ]
tags:
- { name: sonata.block }
然後我定義的塊服務__construct ()爲:
//Acme\DemoBundle\Block\FooBlockService
public function __construct($name, EngineInterface $templating, $doctrine, $securityContext)
{
parent::__construct($name, $templating);
$this->doctrine = $doctrine;
$this->securityContext = $securityContext;
}
最後,在執行功能我做的第一件事是檢查用戶的特定角色,像這樣:
//Acme\DemoBundle\Block\FooBlockService
public function execute(BlockContextInterface $blockContext, Response $response = null)
{
if($this->securityContext->isGranted("ROLE_ACME_FOO") === false)
{
return new Response();
}
//... more code
該作品,但它感覺像一個黑客。主要是因爲Block經歷了所有的階段,只有在輸出時它纔會返回任何東西,這意味着開銷。一個更好的解決方案是以某種方式防止整個Block被加載,基於一些自定義代碼。
總之,這是不是最好的方式,但它爲我工作!
1
您可以限制訪問使用角色阻塞,就像這樣:
sonata_admin:
dashboard:
blocks:
- { position: top, type: your_service_block_name, class: 'col-xs-4', roles: [ROLE_SOME_NAME_HERE_, ROLE_SOME_NAME_HERE_2] }
您可以SonataAdminBundle:Core:dashboard.html.twig
下檢查如何roles
作品:
{% if block.roles|length == 0 or is_granted(block.roles) %}
<div class="{{ block.class }}">
{{ sonata_block_render({ 'type': block.type, 'settings': block.settings}) }}
</div>{% endif %}
相關問題
- 1. 根據用戶
- 2. 如何根據用戶根據登錄的用戶登錄
- 3. 根據用戶請求定製用戶
- 4. MVC4,根據用戶表授權用戶
- 5. 根據用戶名從OS
- 6. MATLAB根據用戶輸入
- 7. 重定向用戶根據
- 8. 根據當前用戶
- 9. Laravel - 根據用戶查詢
- 10. signtool.exe根據不同的用戶帳戶
- 11. 根據用戶名顯示Firebase數據
- 12. 根據用戶選擇獲取數據
- 13. 根據用戶選擇填充數據
- 14. 根據用戶名檢索數據
- 15. 根據用戶數據獲取偏好
- 16. SPA根據用戶獲取數據
- 17. C#根據用戶名向用戶顯示特定數據
- 18. 根據當前用戶顯示用戶數據在drupal 7
- 19. PHP/MSSQL ..根據用戶名選擇ID,根據ID插入表?
- 20. 根據UTC根據用戶時區計算時區
- 21. 根據登錄用戶禁用按鈕
- 22. 根據特定角色查找用戶
- 23. 根據用戶輸入調整Unicode
- 24. Django管理視圖根據用戶
- 25. 根據用戶輸入確認日期
- 26. 根據用戶交互排序行
- 27. 根據用戶輸入加載腳本
- 28. 根據複選框選擇用戶
- 29. 策略,根據用戶訪問級別
- 30. 如何根據證書驗證用戶?
你已經有一個過濾器阻止列表視圖,但你根本不想展示它?請澄清:) – nifr
是的,我有。 現在我不想在儀表板視圖中顯示任何塊。 目前它顯示在儀表盤上的塊,當我去到列表查看我的過濾器隱藏在某些用戶列表中的條目。 – cb0