You are here

Drupal8根据用户角色控制自定义区块的显示

作者:亚艾元技术部

在帮助客户构建网站的时候,想要实现一个页面,不同角色开到的内容是不一样的,我们使用前文中所属的办法,通过controller构建页面。在controller里面编写区块的控制逻辑,下面的代码片段是我们使用的一个例子

     use Drupal\user\Entity\User;  
     
      //获取到当前用户,明确的加载一下,这样可以使用hasRole
	 $user = User::load(\Drupal::currentUser()->id());	
     //如果具有角色,调用对应的区块
	if($user->hasRole('editor')){
	  $block_id = '';
	  $block = \Drupal::entityTypeManager()->getStorage('block_content')->load($block_id);
      $block_render_array = \Drupal::entityTypeManager()
        ->getViewBuilder('block_content')
        ->view($block, 'default');
	}

经过实际测试,上述代码片段,很好的解决了这个问题。

论坛:

Drupal版本: