it-swarm-eu.dev

Získání ID role od globálního uživatele $

Jsem Drupalu velmi nová, takže prosím, mějte se mnou, jestli je to hloupá otázka. Podle globals API , globální $user object vrátí role jako pole:

[roles] => Array(
  [rid] => name
)

Pokud odkazuji na $ user-> role, dá mi jména rolí.

Nedostatek opakování takto:

foreach($user->roles as $key => $value){
    error_log("key: " . $key . " ; value: " . $value);
}

Existuje způsob, jak vrátit název role (zbavit) namísto názvu role? Potřebuji provést podmíněné zpracování na základě rolí, ale některé z našich rolí jsou specifické pro společnost a obsahují speciální znaky. Místo toho by bylo mnohem snazší pracovat s ID.

5
EmmyS

K tomu můžete použít array_key_exists() :

$rid = 42;

if (array_key_exists($rid, $user->roles)) {
  // Do stuff
}

Pokud chcete pouze pole RID, můžete použít array_keys() :

$rids = array_keys($user->roles);
4
user7
$rid = 42;
if(isset($user->roles[$rid])) {
  // Do stuff
}

je to, co obvykle používám. Stejný základní princip, ještě více základní kódování.

array_keys($someArray)

jak Mark Trapp citace je opravdu užitečný pro lov pomocí klíčů mnoha obrovských polí, které Drupal produkuje - např., proměnná $ field v šablonách pohledů - skládka celé věci vytváří nepořádek, pouze pomocí kláves můžete obvykle zjistit, který prvek je potřeba, a pak to pouze vypsat.

U proměnných dumpingu nezapomeňte vyzkoušet Drupal for Firebug - díky němu jsou obrovské, nemotorné skládky pěkně a elegantně odděleny od HTML.

1
James