Issue #2385243 by aneek, subhojit777, iMiksu, spesic, deepakaryan1988, tohesi, Petr Illek, Cottser, lauriii: Make core user fields available for twig templates
parent
796ca9a864
commit
ec03242ba3
|
@ -0,0 +1,57 @@
|
|||
<?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");
|
||||
}
|
||||
|
||||
}
|
|
@ -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()
|
||||
*
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
{#
|
||||
/**
|
||||
* @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>
|
|
@ -0,0 +1,5 @@
|
|||
name: 'User Test theme'
|
||||
type: theme
|
||||
description: 'Theme for testing the available fields in user twig template'
|
||||
version: VERSION
|
||||
core: 8.x
|
|
@ -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];
|
||||
|
|
|
@ -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…
Reference in New Issue