我想在页面中打印--stode - 17.tpl.php一个代码,用于检查登录用户的角色,然后确定应显示的内容,因此基本上用户必须具有B和A角色A和C如果他们我打印xxx 如果他们有角色A和B我写yyy 如果他们有角色B和C我打印zzz
所以下面的代码可以检查一个角色,但是我如何做两个...重要的是两个角色需要在那里,只有一个角色的用户不符合条件。
谢谢你
<?php
global $user;
// Check to see if $user has the administrator user role.
if (in_array('administrator', array_values($user->roles))) {
// Do something.
}
?>
我也有这个代码,但我认为这只是检查其中一个角色,所以它会检查A或B
<?php
global $user;
$check = array_intersect(array('moderator', 'administrator'), array_values($user->roles));
if (empty($check) ? FALSE : TRUE) {
// is admin
} else {
// is not admin
}
?>
答案 0 :(得分:2)
创建可重复使用的功能
<?php
function _mytheme_check_for_all_roles_present($roles) {
global $user;
foreach($roles as $key => $role) {
if (in_array($role, array_values($user->roles))) {
unset($roles[$key]);
}
}
return empty($roles);
}
使用它来检查用户是否具有角色。
<?php
$roles = array('role_1_to_be_checked', 'role_2_to_be_checked');
if(_mytheme_check_for_all_roles_present($roles) {
echo "the thing you want to show";
}
你也可以,
<?php
if(_mytheme_check_for_all_roles_present(array('role_1_to_be_checked', 'role_2_to_be_checked')) {
echo "the thing you want to show";
}
答案 1 :(得分:0)
要检查两个条件是否为真,您需要一个AND(&amp;&amp;)运算符。
在你的例子中我会这样做:
<?php
//Load the current user
global $user;
// Check to see if $user has the A, B or C user role.
$as_A_role = in_array('A', array_values($user->roles));
$as_B_role = in_array('B', array_values($user->roles));
$as_C_role = in_array('C', array_values($user->roles));
?>
<?php if ($as_A_role && $as_B_role): ?>
// Do something.
<?php elseif ($as_A_role && $as_C_role): ?>
// Do something else
<?php endif; ?>