何をすべきか
管理者専用(読み取り/書き込み/編集)のユーザーアカウントフィールドがあります。たとえば、登録に使用されるIPアドレス。
そこで、管理者へのアクセスを制限したいと思います。
Drupal 8(2016年2月19日現在)でのフィールド権限の現在の状態)
コードでこれを行っているのに行き詰まっていますが、 Examples モジュールにはfield_permissions
サンプルモジュールが含まれています。
これは古いスレッドですが、同じ問題に遭遇し、いくつかのフィールドに重いモジュールを使用したくないので、この記事に出くわしました(この記事の後で、共有できると思いました): https:/ /atendesigngroup.com/blog/form-and-view-modes-vs-field-access-drupal-8
他の例から、これはキャッシュコンテキストを処理します。
記事の下のコメントとコード例のその他の小さな間違いに注意してください。正しく機能するコードは次のようになります。
function YOUR_MODULE_NAME_entity_field_access($operation, FieldDefinitionInterface $field_definition, AccountInterface $account, FieldItemListInterface $items = NULL) {
$result = AccessResult::neutral();
if ($field_definition->getName() == 'field_we_care_about') {
if ($operation == 'edit' && !in_array('administrator', $account->getRoles())) {
$result = AccessResult::forbidden();
}
}
return $result->addCacheContexts(['user.roles:administrator']);
}
フィールド権限 は現在D8のベータリリースを持っています。フィールドごとに権限を設定できます。