[Решено] Сниппет видимости блока для роли. Как быть, если имя роли в кириллице?

Главные вкладки

Аватар пользователя volocuga@drupal.org volocuga@drupal.org 18 марта 2010 в 15:04

Возникла необходимость убирать блок для определённой роли, пользователи с которой также имеют роль авторизированного пользователя. Одними галочками дело не решить

Использую всем известный сниппет

<?php global $user;
      if (
in_array('role name'array_values($user->roles))) {
            return 
false;
      }
      else{
            return 
true;
      }
 
?>

У меня роли в кириллице, т.к в латинские названия не переводятся. Подскажите, как заюзать в сниппете ID роли, просто подставить цифру не работает

Комментарии

Аватар пользователя glu2006 glu2006 18 марта 2010 в 15:52

Испортите Smile
В массиве ролей у пользователя ключ элемента массива роли равен id роли в системе, зачем Вам кирилица? при использовании цифр (id role), главное чтоб они были арабскими, Вам будет абсолютно фиолетово какими букавами ее обозвали (эту роль).

Аватар пользователя wolfXXXL wolfXXXL 18 марта 2010 в 16:02

Зачем карму портите, можно:

global $user;
<?php global $user;
      if (in_array('3', array_keys($user->roles))) { // 3 = role name, var_dump($user->roles); покажет соответствие
            return false;
      }
      else{
            return true;
      }
 ?>

Опоздал

Аватар пользователя glu2006 glu2006 18 марта 2010 в 16:08

wolfXXXL wrote:
Зачем карму портите, можно:

Опоздал

Вот зачем сразу готовые решения выдавать Wink пусть человек подумает голову поломает слегка так сказать.
заодно вот сюда http://www.php.ru/manual/ref.array.html слазит.
Кстати можно вот эту функцию использовать array_key_exists();

<?php global $user;
  return array_key_exists('3', $user->roles); // 3 = id роли в системе.
 ?>