Loading core/modules/user/src/Tests/UserFieldsTest.php 0 → 100644 +57 −0 Original line number Diff line number Diff line <?php /** * @file * Contains \Drupal\user\Tests\UserFieldsTest. */ namespace Drupal\user\Tests; use Drupal\user\Entity\User; use Drupal\simpletest\KernelTestBase; /** * Tests available user fields in twig. * * @group user */ class UserFieldsTest extends KernelTestBase { /** * Modules to enable. * * @var array */ public static $modules = ['user', 'system']; /** * {@inheritdoc} */ protected function setUp() { parent::setUp(); $this->installEntitySchema('user'); // Set up a test theme that prints the user's mail field. \Drupal::service('theme_handler')->install(array('user_test_theme')); \Drupal::theme()->setActiveTheme(\Drupal::service('theme.initialization')->initTheme('user_test_theme')); // Clear the theme registry. $this->container->set('theme.registry', NULL); } /** * Tests account's available fields. */ function testUserFields() { // Create the user to test the user fields. $user = User::create([ 'name' => 'foobar', 'mail' => 'foobar@example.com', ]); $build = user_view($user); $output = \Drupal::service('renderer')->render($build); $this->setRawContent($output); $userEmail = $user->getEmail(); $this->assertText($userEmail, "User's mail field is found in the twig template"); } } core/modules/user/templates/user.html.twig +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ * e.g. account.field_example.en, thus overriding any language negotiation * rule that was previously applied. * - attributes: HTML attributes for the container element. * - user: A Drupal User entity. * * @see template_preprocess_user() * Loading core/modules/user/tests/themes/user_test_theme/user.html.twig 0 → 100644 +32 −0 Original line number Diff line number Diff line {# /** * @file * Theme override for testing the presence of all user data. * * This template is used when viewing a registered user's page, * e.g., example.com/user/123. 123 being the user's ID. * * Available variables: * - content: A list of content items. Use 'content' to print all content, or * print a subset such as 'content.field_example'. * - Field variables: For each field attached to the user a corresponding * variable is defined; e.g., account.field_example has a variable * 'field_example' defined. When needing to access a field's raw values, * developers/themers are strongly encouraged to use these variables. * Otherwise they will have to explicitly specify the desired field language, * e.g. account.field_example.en, thus overriding any language negotiation * rule that was previously applied. * - attributes: HTML attributes for the container element. * - user: A Drupal User entity. * * @see template_preprocess_user() */ #} <article{{ attributes.addClass('profile') }}> {% if content %} {{ content }} {% endif %} {% if user %} <p>{{ user.mail.value }}</p> {% endif %} </article> core/modules/user/tests/themes/user_test_theme/user_test_theme.info.yml 0 → 100644 +5 −0 Original line number Diff line number Diff line name: 'User Test theme' type: theme description: 'Theme for testing the available fields in user twig template' version: VERSION core: 8.x core/modules/user/user.module +1 −0 Original line number Diff line number Diff line Loading @@ -1428,6 +1428,7 @@ function user_logout() { * - attributes: HTML attributes for the containing element. */ function template_preprocess_user(&$variables) { $variables['user'] = $variables['elements']['#user']; // Helpful $content variable for templates. foreach (Element::children($variables['elements']) as $key) { $variables['content'][$key] = $variables['elements'][$key]; Loading Loading
core/modules/user/src/Tests/UserFieldsTest.php 0 → 100644 +57 −0 Original line number Diff line number Diff line <?php /** * @file * Contains \Drupal\user\Tests\UserFieldsTest. */ namespace Drupal\user\Tests; use Drupal\user\Entity\User; use Drupal\simpletest\KernelTestBase; /** * Tests available user fields in twig. * * @group user */ class UserFieldsTest extends KernelTestBase { /** * Modules to enable. * * @var array */ public static $modules = ['user', 'system']; /** * {@inheritdoc} */ protected function setUp() { parent::setUp(); $this->installEntitySchema('user'); // Set up a test theme that prints the user's mail field. \Drupal::service('theme_handler')->install(array('user_test_theme')); \Drupal::theme()->setActiveTheme(\Drupal::service('theme.initialization')->initTheme('user_test_theme')); // Clear the theme registry. $this->container->set('theme.registry', NULL); } /** * Tests account's available fields. */ function testUserFields() { // Create the user to test the user fields. $user = User::create([ 'name' => 'foobar', 'mail' => 'foobar@example.com', ]); $build = user_view($user); $output = \Drupal::service('renderer')->render($build); $this->setRawContent($output); $userEmail = $user->getEmail(); $this->assertText($userEmail, "User's mail field is found in the twig template"); } }
core/modules/user/templates/user.html.twig +1 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ * e.g. account.field_example.en, thus overriding any language negotiation * rule that was previously applied. * - attributes: HTML attributes for the container element. * - user: A Drupal User entity. * * @see template_preprocess_user() * Loading
core/modules/user/tests/themes/user_test_theme/user.html.twig 0 → 100644 +32 −0 Original line number Diff line number Diff line {# /** * @file * Theme override for testing the presence of all user data. * * This template is used when viewing a registered user's page, * e.g., example.com/user/123. 123 being the user's ID. * * Available variables: * - content: A list of content items. Use 'content' to print all content, or * print a subset such as 'content.field_example'. * - Field variables: For each field attached to the user a corresponding * variable is defined; e.g., account.field_example has a variable * 'field_example' defined. When needing to access a field's raw values, * developers/themers are strongly encouraged to use these variables. * Otherwise they will have to explicitly specify the desired field language, * e.g. account.field_example.en, thus overriding any language negotiation * rule that was previously applied. * - attributes: HTML attributes for the container element. * - user: A Drupal User entity. * * @see template_preprocess_user() */ #} <article{{ attributes.addClass('profile') }}> {% if content %} {{ content }} {% endif %} {% if user %} <p>{{ user.mail.value }}</p> {% endif %} </article>
core/modules/user/tests/themes/user_test_theme/user_test_theme.info.yml 0 → 100644 +5 −0 Original line number Diff line number Diff line name: 'User Test theme' type: theme description: 'Theme for testing the available fields in user twig template' version: VERSION core: 8.x
core/modules/user/user.module +1 −0 Original line number Diff line number Diff line Loading @@ -1428,6 +1428,7 @@ function user_logout() { * - attributes: HTML attributes for the containing element. */ function template_preprocess_user(&$variables) { $variables['user'] = $variables['elements']['#user']; // Helpful $content variable for templates. foreach (Element::children($variables['elements']) as $key) { $variables['content'][$key] = $variables['elements'][$key]; Loading