node_load((int) $nid)
загружает полностью заполненную сущность узла. $node->title->value
получает заголовок, но как мне получить доступ к значениям полей в Drupal 8?
63
Я думаю, вам не нужно преобразовывать $entity
в массив, это будет просто работать.
$entity->get('field_name')->getValue();
К сведению: Использование kint()
из devel_kint
модуля позволит вам узнать все доступные методы, которые могут быть использованы для доступа к элементам объекта, поэтому сравнительно var_dump()
менее полезен.
getValue()
работает для меня (как на 8.1.x, так и на 8.2.x), см. ссылку на API->getValue()
является общим и будет работать независимо от типа поля. Если вы используете->value
, это работает, только если значение поля хранится вvalue
свойстве. Он не будет работать для более сложных типов (например, дата или ссылка на сущность).в Drupal 8, $ узел является классом узла
или же
вернет массив значений.
Если вы ожидаете только один, вы можете также привести в соответствие массив с
или же
источник
Для полей вы должны быть в состоянии использовать,
$node->body->value
например. Если вы не знаете, как называются поля, я рекомендую установить модуль Devel для Drupal 8 и проверить узел с помощью лайковdsm($node)
.источник
Вы всегда
$entity->toArray()
можете посмотреть, что в сущности. Даже при использовании xdebug (например, с phpstorm) разобраться в сущности объекта сущности очень сложно. Я сомневаюсь, чтоdsm($node)
в Drupal 8 есть какой-то смысл. Если вы настаиваете на отладке в браузере (но не должны этого делать, Drupal 8 слишком сложен, чтобы отлаживать без xdebug), тоdsm($node->toArray())
это то, что вам нужно.источник
Drupal\Core\Entity\EntityInterface
естьtoArray
.Используйте следующий фрагмент кода, чтобы получить значения полей узла
Это используется для получения идентификатора узла из URL
Чтобы загрузить данные узла, используя nid
Это используется для получения значения поля.
Это используется для получения заголовка узла.
источник
Для меня
$entity
(узел) это сработало:используя 8.1.
источник
При использовании (актуальный правильный путь):
источник
Или же
Здесь приятно написать о доступе к значениям из объекта узла https://www.frobiovox.com/posts/2016/03/28/simplify-drupal-8-field-value-calls.html
источник
Это просто:
Если поле является ссылочным полем сущности, есть несколько специальных способов получить ссылочные сущности.
Чтобы получить целевой идентификатор (первый элемент):
Чтобы получить загруженный объект (первый элемент):
При использовании
->entity
на поле он автоматически загружает объект.Если поле может содержать несколько ссылок, вы можете получить их все так:
Это даст вам массив сущностей.
источник