Drupal 8 - 通过$fields访问引用的实体(在创建节点时实现验证)

Drupal 8 - Accessing a referenced entity through $fields (implementing validation on node creation)

提问人:ndkline 提问时间:7/25/2020 最后编辑:ndkline 更新时间:7/27/2020 访问量:402

问:

在自定义模块中,我正在根据另一个字段的条目验证一个字段。当哈希被硬编码时,验证有效(即 )。但是,我似乎无法弄清楚如何访问参考书的哈希值。// $bookhash = 1;

从book_signatures中引用的书籍中获取这些数据的正确方法是什么?

use  \Drupal\Core\Entity\EntityTypeInterface;

/**
 * Implements hook_entity_bundle_field_info_alter().
 */
function custom_validation_entity_bundle_field_info_alter(&$fields, \Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle) {
  if ($bundle === 'book_signatures') {


    if (isset($fields['field_confirm_book_hash'])) {

      $book = $fields['field_book']; // book is a referenced entity within book_signatures. 
      $bookhash = $book->field_hash_check; // need to set this equal to the hash in the book entity.
      // $bookhash = 1; works with static hash. need specific books hash
      $fields['field_confirm_book_hash']->addConstraint('BookHash', ['hash' => $bookhash]);
    }
  }
}

编辑:字段 $fields['field_book'] 上的 devel 输出。它的 id 输出“node.book_signatures.field_book”

验证 drupal drupal-modules entityreference

评论


答:

0赞 ndkline 7/27/2020 #1

采用稍微不同的方法更优雅地暴露了这两个领域。

  /**

    * Implements hook_entity_type_build().

    */

  function custom_validation_entity_type_build(array &$entity_types) {

    // Add our custom validation to the order number.
    $entity_types['node']->addConstraint('BookHash');

  }