web-dev-qa-db-ja.com

ロールに基づいて「ビューモード」と「フォームモード」をカスタマイズする

Drupal 8はView Modesの概念をFormモードに拡張しました

  1. 「表示モード」と「フォームモード」の両方に役割を割り当てることはできますか?
  2. 特定の場所に表示するために、ビューモードまたはフォームモードの両方にモードをどのように割り当てますか?特定のページに表示されるフルコンテンツビューモードと別の場所のブロックにティーザービューモードを表示したいとします。同様に、作成中にフォームモードAを表示し、編集中にフォームBを表示します。

たとえば、次のフィールドを持つコンテンツタイプがあります

  • タイトル:公開、著者による編集可能
  • 本文:公開、著者による編集可能
  • プロジェクトコード:公開されていない、作成者が表示および編集可能
  • システムコード:管理者のみが表示/編集可能

基本的に、これはフィールドのアクセス許可を実装するための興味深く、パフォーマンスの高い方法です。 フィールド権限 モジュールには、Drupal 8のポートがまだありません。

2
amit

コアの何もフォームモードを使用しません-これは、contribが利用するのを待つAPIです。これと、フォームフィールドをいつ操作するか、いつフォームモードを操作するかの問題については、 https://www.drupal.org/node/2530086 で説明しています。

そこのBerdirは「フィールドの表示/非表示を維持しますが、それ以外の場合は同じです。フォームの表示を切り替えないhook_entity_field_access()の完全なユースケースはIMHOです。ユーザーの役割に基づいてさまざまなウィジェット。」

一般に、ロールごとに異なる方法で表示を管理することは簡単ですが、フォームを異なる方法で管理することはより困難です。

表示を管理するためのフィールド許可モジュールの代替(フォームではない):

古典的な答えは、これはPanelsファミリの仕事であると思われるかもしれませんが、ほとんどの場合、D8の準備が整っていません。ただし、ページマネージャーは非常に使いやすく、必要な機能の多くを実行します。具体的に作成されたページについては、役割に基づいてコンテンツを制御できます。しないことは、特定のコンテンツタイプのすべてのノードのレンダリングを引き継ぐことです。

表示スイートはD8対応で、トークンフィールドを使用して、権限に基づいてフィールドを表示できます。 D7での手順の説明については https://swsblog.stanford.edu/blog/using-display-suite-provide-field-level-permissions を参照してください。

1
Jonathan

たくさんのボタンを読んだり押したりした後、フックを使用したりAPIをいじったりすることなく、カスタム「フォームモード」を追加する方法を見つけることができました。 Berdirが言及しているように、user.moduleは、ユーザー登録やプロファイリングなど、必要に応じて表示するカスタムフォームモードを作成するためにアクティブです。

私がやったことは "トリック" Drupal urlを通じて、次のように:/ admin/structure/display-modes/formに移動します。ここで、ユーザーフォームモードのみを追加できることがわかります(/ admin/structure/display-modes/add/user)、あなたがしなければならないすべては/ add/nodeのための/ add/userパーツまたはあなたが望むどんなエンティティタイプでも置き換えることです.

カスタムフォームモードの表示を作成すると、表示モードで見つけることができるエンティティブロックとそのリンクなどが「自動的に」含まれます。

1
Anderson

フォームモードコントロールモジュールを確認してください。

Drupal 8では、任意のコンテンツエンティティに対して、フォームの異なる構成(表示/非表示、順序、フォームウィジェットなど)である「フォームモード」を作成できます。

問題は、プロファイルの登録/編集を除いて、実際には使用できないことです。

このモジュールにより、次のことが可能になります。

  • さまざまなロールの各フォームモードへのアクセスを定義します。
  • 各ロールを定義するには、コンテンツおよびエディションの作成時に、デフォルトでフォームモードとなる各エンティティの各バンドルを使用する必要があります。もちろん、これを定義する前にアクセスを許可する必要があります。ユーザーに複数の役割がある場合、役割の重みが考慮されます(最も重いもの)。
  • 単純なパラメーターnode/add/article?display = form_mode_machine_nameを追加して、権限がある場合にそれらのいずれかにアクセスするには、.
1
Joel MMCC

このような機能を提供する新しいモジュール https://www.drupal.org/project/role があります。

基本モジュールの機能:

ロールごとのユーザー編集フォームモードの制御

ロールごとにユーザー全体のビューを制御する

サブモジュール:

ロールの外観:ユーザーごとにサイトのテーマを制御するロールのロール登録:特定のロールの登録用に新しいルート 'user/register/{role_id}'を追加します新しいプラグインタイプRoleConfigElementを追加して、ロールにフィールドを追加できるようにします。

0
Mykhailo Gurei