Đây là một câu trả lời một phần và không có cách nào hoàn thành. Tôi cũng muốn tìm hiểu thêm về cả hai điều này. Vì vậy, đây có thể là một phần của một cuộc thảo luận; mặc dù tôi đã viết như một câu trả lời thay vì bình luận vì các đoạn mã sau đây và các ví dụ về cách tôi đã sử dụng các lớp trên.
Hãy để tôi minh họa một số cách sử dụng của tôi readyRow () như - nó làm như nó nói.
Gần đây tôi đã đưa ra một số dữ liệu để nhập từ cơ sở dữ liệu không phải là drupal. Thực thể tôi đang thêm để yêu cầu các trường được nhập mà tôi không có trong nhập dữ liệu của mình.
Vì vậy, trước khi lớp nguồn của tôi được tạo, tôi có thể thêm
$source_fields = array(
'changed' => t('Timestamp of when the change was made.'),
'created' => t('Timestamp of when the node was Created.'),
);
và sau đó trong chức năng chuẩn bị. Bây giờ tôi có thể làm như sau
$nowtimestamp = mktime(date('Y-m-d'));
$row->changed = $nowtimestamp;
$row->created = $nowtimestamp;
bạn cũng có thể chạy php if / other statement ở đây nếu cần.
Tôi cũng đã sử dụng hàm chuẩn bị trong mã của mình và đang sử dụng nó để gán giá trị cho thực thể.
$account->field_job_location [und][0]['tid'] = $row->job_location_tid;
Tôi chỉ phải sử dụng điều này trong kịch bản này khi tôi tạo plugin nút tùy chỉnh của riêng mình.
Ngoài ra nếu bạn cần tính toán về điều đó thì bạn có thể thực hiện nó trong Chuẩn bị chạy trước khi chuẩn bị ()
Ví dụ: trong quá trình nhập, tôi có một giá trị được gắn nhãn 'Thị trấn' - và có thể biến giá trị này thành Id kỳ hạn.
if ($TownCity == 'London' ){
$row->job_location_tid = '10';
} else {
$row->job_location_tid = '11';
}
Tôi hi vọng cái này giúp được.