web-dev-qa-db-ja.com

いくつかの基本フィールドを持つカスタムフィールドタイプをプログラムでどのように作成しますか?

field_collectionを使用したくないことを強調します。

さまざまなエンティティやバンドルで再利用できるカスタムフィールドタイプを作成したい。これは1つのカスタムモジュールに保持する必要があります。したがって、それを有効にして、任意のエンティティタイプの[フィールドの管理]ページに移動すると、カスタムフィールドタイプ(例:foo)を取得できるはずです。このフィールドは、基本画像フィールドおよび単純な1行のテキストフィールドと組み合わせる必要があります。私の知る限りフィールドを再作成できないため、field_collectionモジュールを使用したくありません。機能を使用しても、field_baseセクションでフィールドをエクスポートできます。 drupalインスタンスをクリーンアップしてこの機能を再度有効にするためにフラッシュした後、[構造>コンテンツタイプ> CONTENT_TYPE>フィールドの管理]ページの[既存のフィールドの追加]ページに表示されません。たぶん私は何か悪いことをしている(?)

では、既存の基本フィールドを使用してプログラムでカスタムフィールドタイプを作成するにはどうすればよいですか?例えばカスタムfooフィールドタイプと画像フィールドおよびテキストフィールド?

または(機能に問題がある場合)

機能を使用して、サブフィールドを含むカスタムフィールドコレクションをフィールド定義(コンテンツタイプ/エンティティにアタッチされていない)としてのみエクスポートするにはどうすればよいですか?

2
sobi3ch

あなたがしたいことは、複数のプロパティを持つフィールドタイプを作成することです。プロパティはフィールドテーブルの列を1つだけ必要とし、フィールドコレクションはデータベースの完全な新しいエンティティであるため、これは実際にはフィールドコレクションよりも効率的です。

これは、カスタムモジュールでカスタムフィールドタイプをゼロから構築する方法のドキュメントです。

https://www.drupal.org/docs/8/creating-custom-modules/create-a-custom-field-type

プロパティを既存のフィールドタイプに追加するため、このチュートリアルを使用します

https://www.lullabot.com/articles/extending-a-field-type-in​​-drupal-8

新しいフィールドタイプのクラスImageItemを拡張します。また、表示するためにImageFormatterを拡張し、新しいプロパティにフォームフィールドを提供するためにImageWidgetを拡張する必要があります。

1
4k4