Добрый день коллеги. Столкнулся с такой проблемой.
Задача - добавить новое поле в сущность 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.
Комментарии
А зачем делать кодом то, что можно запросто накликать в админке?
/admin/config/people/accounts/fields
А чтобы сделать нередактируемым, просто скрыть его в form display. Тоже мышкой.
Немогли бы вы более подробно объяснить, где этот form display в ручную можно настроить. Пожалуйста.
Даже и не знаю как можно еще подробнее - я же прямой адрес дал страницы управления полями сущности юзер.
На закладке Manage Fields можно добавлять поля в базу и менять то, что можно менять у существующего поля.
На закладке Manage Display настраивается отображение полей в режиме просмотра.
На закладке Manage Form Display настраивается форма редактирования полей сущности.
Если всё равно ничего не понятно, то можно почитать/посмотреть самую базовую документацию "Друпал для чайников", ну или нанять профессионала...
я поясню. Я добавил поле через администратора. Но запретить его редактировать не могу, во всех вкладках нету данной функции.
Добавленное поле есть в списке полей на закладке "Manage form display"?
Чтобы запретить его редактировать, достаточно перетащить его под Disabled, тогда его не будет в форме, и его нельзя будет редактировать.
Боже, я даже не видел , что его можно перетащить. Спасибо огромное)
К сожалению, нужно добавить поле именно таким путем. Если в ручную, не могли бы вы подробнее скинуть или объяснить, как это сделать.