Возникла необходимость убирать блок для определённой роли, пользователи с которой также имеют роль авторизированного пользователя. Одними галочками дело не решить
Использую всем известный сниппет
<?php global $user;
if (in_array('role name', array_values($user->roles))) {
return false;
}
else{
return true;
}
?>
У меня роли в кириллице, т.к в латинские названия не переводятся. Подскажите, как заюзать в сниппете ID роли, просто подставить цифру не работает
Комментарии
Подставил название как есть в кириллице и работает.Надеюсь не испорчу карму себе этим
Испортите
В массиве ролей у пользователя ключ элемента массива роли равен id роли в системе, зачем Вам кирилица? при использовании цифр (id role), главное чтоб они были арабскими, Вам будет абсолютно фиолетово какими букавами ее обозвали (эту роль).
Зачем карму портите, можно:
<?php global $user;
if (in_array('3', array_keys($user->roles))) { // 3 = role name, var_dump($user->roles); покажет соответствие
return false;
}
else{
return true;
}
?>
Опоздал
Вот зачем сразу готовые решения выдавать пусть человек подумает голову поломает слегка так сказать.
заодно вот сюда http://www.php.ru/manual/ref.array.html слазит.
Кстати можно вот эту функцию использовать array_key_exists();
return array_key_exists('3', $user->roles); // 3 = id роли в системе.
?>
Sorry исправлюсь
О,спасибо. Странно, такие сниппеты на орге мне не попадались
Они ни пишут кириллицей.
Истинно,грёбаные шовинисты