it-swarm-ko.tech

엔티티 (예 : 노드) 객체의 필드 값에 어떻게 액세스합니까?

node_load((int) $nid)은 완전히 채워진 노드 엔티티를로드합니다. $node->title->value는 제목을 얻지 만 Drupal 8의 필드 값에 어떻게 액세스합니까?

62
dbj44

$entity를 배열로 변환 할 필요가 없습니다. 간단하게 작동합니다.

$entity->get('field_name')->getValue();

참고 : devel_kint 모듈에서 kint()을 사용하면 객체 요소에 액세스하는 데 사용할 수있는 모든 사용 가능한 메소드를 알려주므로 비교적 var_dump()이 덜 유용합니다.

95
Ashkar A.Rahman

in drupal 8, $ node는 클래스 노드 임

 $node->field_machine_name->getValue();

또는

$node->get('field_machine_name')->getValue();

값의 배열을 반환합니다.

하나만 기대하면 다음과 같이 배열을 문자열 화 할 수 있습니다.

$node->field_machine_name->getString();

또는

 $node->get('field_machine_name')->getString();
58
Matoeil

필드의 경우 예를 들어 $node->body->value를 사용할 수 있어야합니다. 필드 이름이 무엇인지 모르는 경우 Drupal 8)에 Devel 모듈을 설치하고 dsm($node)과 같은 방법으로 노드를 검사하는 것이 좋습니다.

35
tenken

엔터티에 무엇이 있는지 보려면 항상 $entity->toArray()을 수행 할 수 있습니다. xdebug (예 : phpstorm)를 사용하더라도 엔티티 객체 자체를 이해하는 것은 매우 어렵습니다. dsm($node) in Drupal 8은 말이됩니다. 브라우저 내 디버깅을 고집한다면 (하지만, Drupal 8은 xdebug없이 디버그하기에는 너무 복잡합니다) dsm($node->toArray())은 당신이 원하는 것입니다.

17
user49

다음 코드 스 니펫을 사용하여 노드 필드 값 가져 오기

이것은 URL에서 노드 ID를 얻는 데 사용됩니다

$nid = \Drupal::routeMatch()->getRawParameter($node_id);

Nid를 사용하여 노드 데이터를로드하려면

$node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);

필드 값을 얻는 데 사용됩니다.

$terms = $node->get('field_Name')->getValue();  

노드 제목을 얻는 데 사용됩니다.

$product_name = $node->getTitle();
14
Swapnil Bijwe

나를 위해 $entity (노드)이 작동했습니다.

$entity->field_name->getValue();

8.1 사용.

7
Alex

사용하는 동안 (실제로 올바른 방법) :

$node = \Drupal\node\Entity\Node::load($nid);
$node->get('nid')->value; // returns a raw value - Node ID

// Following both returns array structure containing value/target id nested value.
$node->get('nid')->value(); 
$node->nid->getValue();
6
Francis

간단합니다 :

$node->get('field_name')->getValue();

필드가 엔티티 참조 필드 인 경우 참조 된 엔티티를 얻는 특별한 방법이 있습니다.

대상 ID를 가져 오려면 (첫 번째 요소) :

$entity->get('field_entity_reference')->target_id;

로드 된 엔터티를 가져 오려면 (첫 번째 요소) :

$entity->get('field_entity_reference')->entity;

사용할 때 ->entity 필드에서로드 된 엔터티를 자동으로 반환합니다.

필드에 여러 참조가 포함될 수 있으면 다음과 같이 모두 참조를 가져올 수 있습니다.

$entities = $entity->get('field_entity_reference')->referencedEntities();

엔터티 배열이 반환됩니다.

6
user72672
use Drupal\node\Entity\Node

$node = Node::load($nid);
$title = $node->get('title')->value;

또는

use Drupal\node\Entity\Node

$title = Node::load($nid)->get('title')->value;

다음은 노드 객체의 값에 액세스하는 방법에 대한 좋은 글입니다 https://www.frobiovox.com/posts/2016/03/28/simplify-drupal-8-field-value-calls.html

5
pwaterz