Добавление отображения нового поля в сущности User

Аватар пользователя sergefenix sergefenix 2 октября 2019 в 18:20

Добрый день коллеги. Столкнулся с такой проблемой.
Задача - добавить новое поле в сущность User. Сделать его не редактируемым и что бы можно было увидеть его значение на станичке /user/id

Вот этим update я добавил поле.

<?php  $entity_type_class Drupal::service('entity.manager')->getStorage('user')->getEntityType();
  
$definition_manager = \Drupal::entityDefinitionUpdateManager();
  
$entity_class $entity_type_class->getClass();

  

$countBonusesNew BaseFieldDefinition::create('integer')
    ->
setLabel(t('Count bonuses'))
    ->
setDescription(t('Count of available bonuses'))
    ->
setDefaultValue(0)
    ->
setSetting('unsigned'TRUE)
    ->
setSetting('size''small')
    ->
setSetting('not null'TRUE)
    ->
setDisplayOptions('form', [
      
'type'   => 'string_textfield',
      
'weight' => 5,
    ])
    ->
setDisplayOptions('view', ['type' => 'string''label' => 'Bonuses'])
    ->
setDisplayConfigurable('form'FALSE)
    ->
setDisplayConfigurable('view'TRUE)
    ->
setSetting('rest_blocked'true)
    ->
setCardinality(1);

  

$new_field $entity_class::BaseFieldDefinitions($entity_type_class);
  
$new_field['count_bonuses'] = $countBonusesNew;

  

$definition_manager->installFieldStorageDefinition('count_bonuses''user''user'$new_field['count_bonuses']);
  
$database = \Drupal::database();
  
$database->update('users_field_data')
    ->
fields(['count_bonuses' => 0])
    ->
execute();?>

В сущности юзер появилось оно и можно получить значение. Но к сожалению на страничке /user/id Информации о нем нету, и на других связанных с юзером страничках, тоже нету.
Подскажите пожалуйста, как можно реализовать вывод этого поля на указанную мною страничку.

Может я добавил неверно поле в сущность или какая-то другая ошибка. Drupal 8.

Лучший ответ

Аватар пользователя marassa marassa 2 октября 2019 в 20:11
1

А зачем делать кодом то, что можно запросто накликать в админке?
/admin/config/people/accounts/fields

Комментарии

Аватар пользователя marassa marassa 2 октября 2019 в 20:11
1

А зачем делать кодом то, что можно запросто накликать в админке?
/admin/config/people/accounts/fields

Аватар пользователя gun_dose gun_dose 2 октября 2019 в 20:22

А чтобы сделать нередактируемым, просто скрыть его в form display. Тоже мышкой.

Аватар пользователя sergefenix sergefenix 3 октября 2019 в 10:50

Немогли бы вы более подробно объяснить, где этот form display в ручную можно настроить. Пожалуйста.

Аватар пользователя marassa marassa 3 октября 2019 в 11:11

Даже и не знаю как можно еще подробнее - я же прямой адрес дал страницы управления полями сущности юзер.
На закладке Manage Fields можно добавлять поля в базу и менять то, что можно менять у существующего поля.
На закладке Manage Display настраивается отображение полей в режиме просмотра.
На закладке Manage Form Display настраивается форма редактирования полей сущности.
Если всё равно ничего не понятно, то можно почитать/посмотреть самую базовую документацию "Друпал для чайников", ну или нанять профессионала...

Аватар пользователя sergefenix sergefenix 3 октября 2019 в 16:37

я поясню. Я добавил поле через администратора. Но запретить его редактировать не могу, во всех вкладках нету данной функции.

Аватар пользователя marassa marassa 3 октября 2019 в 16:44

sergefenix wrote:
запретить его редактировать не могу, во всех вкладках нету данной функции

Добавленное поле есть в списке полей на закладке "Manage form display"?
Чтобы запретить его редактировать, достаточно перетащить его под Disabled, тогда его не будет в форме, и его нельзя будет редактировать.

Аватар пользователя sergefenix sergefenix 2 октября 2019 в 20:35

К сожалению, нужно добавить поле именно таким путем. Если в ручную, не могли бы вы подробнее скинуть или объяснить, как это сделать.