Allgemein
Get Parameter aus der URL.
Erweitertes Beispiel: Eine Views-Page mit dem Pfad '/en/%blog/%parameter'
$parameterValue = \Drupal::routeMatch()->getParameter('parameter');
Die Node bekommt man so:
$node = \Drupal::routeMatch()->getParameter('node');
Allerdings gibt es den ein oder anderen Umstand, wo man die node id bekommt. Daher solltet Ihr, wenn es wichtig ist, darauf achten, dass Ihr mit instanceOf Drupal\node\NodeInterface prüft
Doing Links on Drupal 8.
Hier gibt es eine tolle Zusammenfassung über Links: http://agaric.com/blogs/doing-links-drupal-8
Beispiel:
use Drupal\Core\Link; $link = Link::createFromRoute('This is a link', 'entity.node.canonical', ['node' => 1]); use Drupal\Core\Link; use Drupal\Core\Url; $link = Link::fromTextAndUrl('This is a link', Url::fromRoute('entity.node.canonical', ['node' => 1]));
Daaaas kann man auch in Twig machen:
<a href="{{url('entity.node.canonical', {'node': node.id} ) }}"> {{ 'This is a link'|t }} </a>
Permissions
Hat ein Benutzer eine bestimmte Permission?
$user = \Drupal::currentUser(); if ($user->hasPermission('my permission')) {// do something }
Einer Rolle Rechte hinzufügen/entfernen.
Hinweis: Man kann in Devel anstellen, dass man auf der rechteseite die ID der jeweiligen Permission bei Mouseover angezeigt bekommt.
use Drupal\user\entity\Role;
if(($role = Role::load('MY_ROLE_ID'))) { $role->grantPermission('PERMISSION_ID'); $role->revokePermission('PERMISSION_ID'); if ($role->save()) { drupal_set_message('-- Needed permissions granted/revoked to MY_ROLE_ID' ); // oder drush_print(); } unset($role);
}
Rollen umsortieren
use Drupal\user\entity\Role;
// reorder roles $roles = [ 0 => 'anonymous', 1 => 'authenticated', 2 => 'editor', 3 => 'product_team', 8 => 'site_administrator', 9 => 'administrator', 10 => 'rest_', ]; foreach ($roles as $roleKey => $roleVal) { if ( ($role = Role::load($roleVal)) ) { $role->setWeight($roleKey); if ($role->save()) { drush_print( '-- Successfully changed the weight of role '.$roleVal .' to '.$roleKey ); } unset($role); } }
User
Reset PW
Wenn ich meine Entwicklungs DB auf die Production DB setze, weiss ich das admin (user 1) pw nicht.
Über Drush geht das ganz einfach
drush uli
und dann einfach den interessanten Teil der URL in den Browser kopieren. Zusammen mit dem LastPass Password manager (zum Beispiel) habe ich so superfix meinen Admin auf mein local admin PW gesetzt.
Man kann es auch "etwas besser" ausdrücken.
drush uli --no-browser --uri=mySite
Mit etwas Glück hast Du dann eine schöne URL, die Du in Deinen Browser kopieren kannst.
Rolle ändern
In unseren Umgebungen (Prod, Stage, QA...) arbeite ich nicht mit user 1. Wenn ich Dinge als Editor teste, nehme ich mir die Rolle "administrator".
So kann man sie sich wieder geben (drupal.stackexchange):
drush user-add-role "administrator" MyUserNameOrId
Views
Variablen in views nutzen
In views-view-unformatted.html.twig:
{{row.content['#row']._entity.get('MYFIELD').value}}
In views.view.fields.html.twig:
{{ fields.FIELD_NAME.content }}
und in der for Schleife:
{{ field.content }}
Prüfen auf ein Feld kann man hier so:
{% if field == fields.nid %}
Mal checken:
{{ kint(row.FIELD_NAME ,row._entity.get('FIELD_NAME').value) }}
geht auch, wenn man zum Beispiel den value braucht und nicht das komplette Markup(vgl. LINK).