タグ付けされた質問 「entities」

Drupal 7以降に使用された用語では、ノード、コメント、分類用語、およびユーザーは一般に「エンティティ」と呼ばれます。


4
ビューの未加工URLをフィールドとして取得するにはどうすればよいですか?
ビューでは、href値としてタイトルフィールドに提供される生のURL(リンクとして)またはContent:リンク値を返す必要があります。当初はContent:linkを選択し、書き換えでHTMLを削除できると考えていましたが、行かないでください。 フィールド書き換えのパラメーターとして渡すことができるように、完全なURLが必要です。これだけを取得する方法についての考えは?
13 7  views  entities 

5
1つのエンティティの1つのフィールドから1つのエントリをプログラムで削除する
特定のエンティティから複数エントリフィールドの特定のフィールドエントリをプログラムで削除する適切な方法は何ですか?(つまり、フィールドタイプまたはインスタンスおよびエンティティタイプではなく、特定のフィールドおよび特定のエンティティです) 私が調べたいくつかの可能性がありますが、うまくいきません: でエンティティを読み込み、entity_load()フィールドエントリを= nullまたは= array()に設定してから保存しfield_attach_update()ます。これは私が見つけた最も近いものですが、データベースにゾンビnullフィールドエントリを残し、フォームが保存されて起動できるようになるまでhook_field_is_empty()(hook_field_is_empty()= nullまたは= array()がフラグを立てるように設定されるまで)フォームの空白行として表示されます空として)。 でエンティティをロードし、entity_load()キーでフィールドエントリを設定解除し、で保存しfield_attach_update()ます。これは何もしないようです-Drupalは、エントリが存在しないことを、変更しないためのサインとして解釈しているようです。(奇妙なことに、このアプローチを試みると、クエリ時間の有効期限が最大になることもあります) field_attach_delete() -これはあまりにも鈍い:エンティティのすべてのフィールドを殺す field_purge_data() -より良いが、それでも鈍い:特定のエントリではなく、フィールドのすべてのエントリを殺す そのため、明確にするために、複数のエントリを持つフィールドを持つエンティティを検索(およびロード)し、そのフィールドで削除する必要がある特定のエントリを検索するコードを用意しました。エンティティの他のエントリや他のフィールドに触れることなく、そのエントリを完全に削除したい。
13 7  entities 

3
フィールドリビジョンテーブルを切り捨てても安全ですか?
D7はすべてのフィールドに対してfield_revisionテーブルを作成し、リビジョンがオフになっている場合でも、フィールドテーブルの対応するコンテンツを複製することに気付きました。 大きなテキストテーブルがあり、多くのスペース(数GB)を使用しています。 リビジョンテーブルを切り捨てても安全ですか? PS:一方、私はこれをバグとして報告しました。
13 7  entities  database  nodes 

1
フィールドタイプ:テキストとロングテキスト
Drupal 7の「テキスト」と「ロングテキスト」の違いは何ですか? 単にデータベースの文字長である場合、入力値の可能性のあるドメインが正確にわからない状況では、注意してデフォルトでロングテキストを使用する方が良いでしょうか?
13 7  entities 

4
プログラムでフィールドを更新する、hook_node_update
現在、ノードが作成または更新されるたびにフィールドを更新しようとしています。ただし、値はノード内に入力されていません。この特定のフックを使用してノードオブジェクトにアクセスできますか?何が欠けているのでしょうか? function vbtoken_node_update($node) { entity_get_controller('node')->resetCache(array($node->nid)); $types = node_type_get_types(); //What are the current Node Content Types? $yes = ($types['volunteer_project']->type); if($node->type === $yes){ $hash = md5($node->title . $node->nid . $node->nid); $hashed = substr($hash, 0, 6); $node = node_load($node->nid); $node->tcode[$node->language][0]['value'] = $hashed; node_save($node); watchdog('vbtoken', 'Added a new Token code to %nid', array('%nid' => …
13 7  entities 


3
「エンティティAPI」はDrupal APIに何を追加しますか。また、モジュールがそれに依存するのはなぜですか?
エンティティのAPIモジュールは、Drupalの中で定義されたエンティティのAPIを拡張します。どの場合に、モジュールはそのモジュールから提供されるAPIを使用する必要がありますか?Entity APIモジュールに依存している場合、新しいエンティティを実装するモジュールは簡単に作成できますか? 「作成しやすい」とは、Entity APIを使用するモジュールは、Entity APIを使用しないモジュールと比較して、作成するコードが少ないことを意味します。 プロジェクトページを読みましたが、Drupalコアコードのみに依存するモジュールではなく、Entity APIモジュールに依存するモジュールを作成することを好む理由がまだ完全にはわかりません。ルールを拡張し、エンティティを実装するモジュールは、Entity APIモジュールを使用する必要があることを理解しています。最初のケースでは、理由は、ルールモジュールがエンティティAPIモジュールに依存していることでもあります。
12 entities 

3
段落フィールドの値を取得する方法は?
drupalで製品リストを作成し、Webサービスで送信したいと思います。このために、各製品の段落を持つエンティティタイプを作成しました。段落をロードしてそのフィールドにアクセスするにはどうすればよいですか?これまでは、製品のtarget_idとtarget_revision_idのみが表示されていました。ありがとう! $nodestorage = \Drupal::entityManager()->getStorage('node'); $productslist = $nodestorage->loadUnchanged(9)->toArray(); foreach($productslist['field_products'] as $prod) { debug($prod); } 結果: Array ( [target_id] => 1 [target_revision_id] => 3 )

4
許可された別のファイル拡張子をDrupal 7画像フィールドに追加できないのはなぜですか?
admin/structure/types/manage/image/fields/gallery_image以下に示すように、を介して画像をアップロードするためのSVGファイル拡張子を追加しました。 しかし、画像をアップロードするときに、SVGをアップロードすることはまだ許可されていません。 私は間違いなく管理ページで「保存」を押し、キャッシュをクリアしましたfield_config_instance。テーブルを調べたときに、データベースで設定が必要だったのを見ました。更新されていない他のテーブルまたはキャッシュが必要です。何か案が?

3
entity_metadata_wrapperを使用する場合の不明なフィールドタイプの値へのアクセス
エンティティメタデータラッパークラス(Drupal 7のエンティティモジュールで定義されている)を使用してフィールド値にアクセスすることを検討してきました。 しかし、これを少し厄介なものにするいくつかのことがあります。そのfield_somethingような名前のフィールドを定義するコンテンツタイプのラッパーがあるとします。 $wrapper = entity_metadata_wrapper('node', node_load($nid)); $value = $wrapper->field_something->value(); 私が持っている最初の問題は、実際の値(文字列、エンティティなど)、別のメタデータ構造ラッパー(フィールドに複数の値がある場合)、または配列(いつフィールドには複数のプロパティがあります)。 info()メソッドを使用してこれらの質問に答える方法を見つけました。 $info = $wrapper->field_something->info(); $is_multi_value = (strpos($info['type'], 'list<') === 0); $has_multiple_properties = isset($info['property info']]); しかし、それはほとんど実用的ではありません。事前に定義を知らずにフィールドを使用する場合は、いくつかのケースを考慮する必要があります。これにより、コードが非常に重くなります。 これに対処するために、次のコードを作成しました。 単一の値フィールドであっても、常に配列が返されるようにします。 複数のプロパティがある場合、最初の列の値を返します。 ポイント1.呼び出し側がこれが単一値フィールドであるかどうかを知りたくない限り、ここで常に機能します。ポイント2は、すべてではなく一部のケースで機能しますが、適用する場合に便利です。 コードは次のとおりです。 function entity_metadata_simple_values($field) { $fields = array(); $values = array(); $info = $field->info(); if (strpos($info['type'], 'list<') === 0) { foreach …
12 entities 

7
ノードを保存する前にカスタムフォームで変更されたフィールドを一般的に検出する
field_attach_form()を使用して、コンテンツタイプの特定のフィールドをカスタムフォームに追加しています。フォームが送信されると、#validateおよび#submitコールバックからfield_attach_form_validate()およびfield_attach_submit()を呼び出してこれらのフィールドを処理しています。 その時点で、投稿後の準備されたノードオブジェクトを元のノードと比較し、フィールドのいずれかが変更された場合にのみnode_save()を使用します。したがって、最初にを使用して元のノードをロードしますentity_load_unchanged()。 残念ながら、元のノードオブジェクトのフィールド配列は、フィールドに変更が加えられていない場合でも、保存を待機している準備済みノードオブジェクトのフィールド配列と一致しないため、単純な "$ old_field == $ new_field 「比較は不可能です。たとえば、元のテキストフィールドは次のように表示されます。 $old_node->field_text['und'][0] = array( 'value' => 'Test', 'format' => NULL, 'safe_value' => 'Test', ); 一方、準備されたノードでは次のように表示されます。 $node->field_text['und'][0] = array( 'value' => 'Test', ); 「値」キーを比較するだけでよいと思うかもしれませんが、「値」キーを持たない他の要素で構成されたフィールドに遭遇します。例えば、NO「値」キーが存在しないアドレス・フィールドでの見てみましょうと対応していない古い、準備ノードの両方のキーがあります。 古いノード $old_node->field_address['und'][0] = array( 'country' => 'GB', 'administrative_area' => 'Test', 'sub_administrative_area' => NULL, 'locality' => 'Test', 'dependent_locality' => NULL, …
12 7  entities 

4
list(text)または分類法を使用する場合
これはばかげた質問かもしれませんが、分類用語の参照フィールドよりもリスト(テキスト)の複数選択フィールドを使用することの利点を知りたいと思います。どちらも、事前に決定された複数選択オプションを提供するほぼ同じ機能を果たしているようですが、分類には、コンテンツがデータベースに書き込まれた後に用語を追加できるという追加の利点があります。 どちらか一方を使用するための良いガイドラインはありますか?(そして、特にlist(text)が分類用語参照よりも意味がある場合)。

2
フィールドに関する集計情報を取得する最も持続可能な方法は何ですか?
EntityFieldQueryは、SQLに依存しないため、フィールドデータで集計関数(SUM、AVGなど)を実行するために使用することを意図していません。そうは言っても、そのような操作は時々合法的に実行される必要があります。EntityFieldQueryを使用したSQL関数、特にEntityFieldQueryと、集計関数SUM、ARG、およびMAXの使用方法によると、SQLクエリを使用する必要があり、そのアプローチは私のユースケースに最適です。昨日@chxと話していましたが、フィールド名と列名を見つけるためにいくつかの内部関数を使用することを勧めました。これが持続可能かどうか、そして他の人にリリースするかもしれないコードベースで行うのが適切かどうか疑問に思っています。 それが最善の方法であれば、それが最善の方法です。面倒くさいので絶対に確信するまではやりたくありません。
12 7  entities  database 

5
ノードオブジェクトからノードタイプラベルを取得するにはどうすればよいですか?
Drupal 8のノードオブジェクトからノードのバンドルラベル(ノードタイプラベル)を取得しようとしています。 これは機能しますが、時間がかかるようです: $node_type = \Drupal::entityManager()->getStorage('node_type')->load($node->getType())->get('name'); より簡単な方法でバンドルラベルを取得する別の方法はありますか?
12 8  entities 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.