Tạo thực thể theo chương trình trong Drupal


7

Tôi đã tạo một thực thể thông qua Bộ thực thể xây dựng, Ban đầu tôi muốn sử dụng các quy tắc để tạo thực thể mới nhưng thực thể đó được thực địa và các trường không bị lộ trong quy tắc (hiện tại, ai đó đang cố gắng thực hiện bản vá cho điều đó ), nhưng trong một khoảng thời gian tôi muốn viết một hàm đơn giản tạo ra một thực thể, mà tôi giả sử sẽ giống như tạo một nút theo chương trình, nhưng tôi đã ở đây trong 4 giờ và tôi đã không đạt được một inch, Tôi có entity_create và entity_save nhưng họ không làm được gì nhiều và tôi không thể tìm thấy bất kỳ tài liệu nào về nó.

Những gì tôi muốn thấy là làm thế nào để tạo một thực thể ví dụ từ một gói được tạo bằng eck, hoặc thông qua mã, được đưa vào trường.

Cám ơn rất nhiều

Chỉnh sửa: Điều cuối cùng tôi cần tìm hiểu là làm thế nào để chỉ định tên của các trường được gắn với thực thể để tôi cũng có thể nhập giá trị cho các trường đó.

$values = array('uid' => 1, 'field_receipt_prod_ref' => 1, 'type' => 'receipt');        
$new_ent = entity_create('receipt', $values)->save();

Câu trả lời:


15

Hầu hết những gì bạn có không quá tệ. Điều quan trọng với các trường mà bạn đang thiếu là chúng có ngôn ngữ, chúng có thể là đa giá trị và giá trị thường được lưu trữ trong khóa con 'value'. Tôi giả định rằng trường ref là một nốt, có nghĩa là nó thực sự được lưu trữ nidthay vì value.

Cách dễ nhất bạn có thể làm để xem cách cấu trúc này là cài đặt Develmô-đun và sử dụng Develtab để xem cấu trúc. Không chắc chắn nếu điều đó hiển thị với các thực thể ECK, nhưng nó thực hiện cho Nút.

Thử cái này:

$new_ent = entity_create('receipt', array(
  'uid' => 1,
  'type' => 'receipt', //bundle
  'field_receipt_prof_ref' => array(      
    LANGUAGE_NONE => array(
      0 => array(
        'nid' => 1,
      ),
    ),
  ),
))->save();

3
Tôi ước tôi có thể gõ nó trong phông chữ pt 72 CẢM ƠN BẠN RẤT NHIỀU !!!!!!!!!!!!!! : D
Antonio Torres

27

Cách tiếp cận đơn giản hơn là với sự giúp đỡ của entity_metadata_wrapper().

$e = entity_create($entityType, array('type' => $bundleName));
$ew = entity_metadata_wrapper($entityType, $e);
$ew->field_name->set('value');
$ew->save();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.