首页 > 解决方案 > Drupal 9 显示用户已验证的块,但隐藏其他成员角色

问题描述

我创建了一个模块来隐藏用户角色“小型企业,商业”的块。它们也是通用的“经过身份验证的”——我默认为基本成员。我想为基本成员显示一条消息,而其他成员角色则不需要。如果我加载模块,该块会隐藏“已验证”——即使我通过角色“商业”和“小型企业”指定

enter code here

```use Drupal\block\Entity\Block;
```use Drupal\Core\Session\AccountInterface;
```use Drupal\node\NodeInterface;
```use Drupal\Core\Access\AccessResult;

```function hideblock_block_access(Block $block, $operation, AccountInterface $account)
```{
    
    ```if ($operation == 'view')
    ```{
        ```if($block->id() == 'singlesearchcount')
        ```{
            ```$roles = \Drupal::currentUser()->getRoles();
            ```//anonymous
            ```//adminstrator
            ```if(in_array('small_business', 'commercial', $roles))
            ```{
                ```//Hide the block for specific user roles like editor
                ```return AccessResult::forbiddenIf(true)->addCacheableDependency($block);
            ```}
            ```//Now based on Node Pages, Hide the block
            ```$node = \Drupal::routeMatch()->getParameter('node');
            ```if (($node instanceof \Drupal\node\NodeInterface) && ($node->gettype() !=       ```'add-noshow-search-noshow') )
            ```{
                ```//Hiding the block if the node is not 'technologyarticle' type
                ```return AccessResult::forbiddenIf(true)->addCacheableDependency($block);
            ```}
            

标签: drupal-8user-permissionsuser-rolesdrupal-blocksdrupal-9

解决方案


推荐阅读