web-dev-qa-db-ja.com

プログラムでノードにファイル参照を保存するにはどうすればよいですか?

コンテンツタイプはImageで、Image参照用のimage_dataフィールドがあります。したがって、ノードの作成とノード内の画像参照の更新に静的画像パスを使用する方法を説明します。

1
Parag Kuhikar

コンテンツタイプがあると仮定します。Image

コンテンツタイプには次のフィールドがあります。

  1. タイトル
  2. field_imagedata画像フィールド用

次に、カスタムノードを作成します。

Step:1ノードにアタッチしたい静的画像パスを取得する必要があります。 "sites\default\files\2017-01\source.png"

したがって、drupalでは、「public://2017-01/source.png」によってこの画像uriにアクセスできます。

Step:2 Drupalデータベースにファイル参照を作成する必要があります。つまり、 "File :: Create"メソッドを使用する必要があります。

Step:その後、 "entity_create"を使用してノードを生成できます。

コード全体を見てください。

    $uri  = file_unmanaged_copy("public://2017-01/source.png", "public://2017-01/destinatio.jpg", FILE_EXISTS_REPLACE);
    $file = File::Create([
      'uri' => $uri,
    ]);
    $file->save();

    $new_page_values = array();
    $new_page_values['type'] = 'image';
    $new_page_values['title'] = "PARAG";
    $new_page_values['field_imageda'] = array('target_id' => $file->id());
    $new_page = entity_create('node', $new_page_values);
    $new_page->save();

また、次のコードを使用してノードを更新することもできます。

    // Load existing node and attach file.
    $node = Node::load(1); 
    $node->field_imageda->setValue([
      'target_id' => $file->id(),
    ]);
    $node->save();

このコードを使用して、静的ファイルで新しいノードを作成できます。

4
Parag Kuhikar