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
|
* e.g. account.field_example.en, thus overriding any language negotiation
|
||||||
* rule that was previously applied.
|
* rule that was previously applied.
|
||||||
* - attributes: HTML attributes for the container element.
|
* - attributes: HTML attributes for the container element.
|
||||||
|
* - user: A Drupal User entity.
|
||||||
*
|
*
|
||||||
* @see template_preprocess_user()
|
* @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.
|
* - attributes: HTML attributes for the containing element.
|
||||||
*/
|
*/
|
||||||
function template_preprocess_user(&$variables) {
|
function template_preprocess_user(&$variables) {
|
||||||
|
$variables['user'] = $variables['elements']['#user'];
|
||||||
// Helpful $content variable for templates.
|
// Helpful $content variable for templates.
|
||||||
foreach (Element::children($variables['elements']) as $key) {
|
foreach (Element::children($variables['elements']) as $key) {
|
||||||
$variables['content'][$key] = $variables['elements'][$key];
|
$variables['content'][$key] = $variables['elements'][$key];
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
* e.g. account.field_example.en, thus overriding any language negotiation
|
* e.g. account.field_example.en, thus overriding any language negotiation
|
||||||
* rule that was previously applied.
|
* rule that was previously applied.
|
||||||
* - attributes: HTML attributes for the container element.
|
* - attributes: HTML attributes for the container element.
|
||||||
|
* - user: A Drupal User entity.
|
||||||
*
|
*
|
||||||
* @see template_preprocess_user()
|
* @see template_preprocess_user()
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue