Dịch vụ 3 và tham chiếu nút


7

Tôi đang làm việc với các dịch vụ mô-đun 3 (D7) và tôi đang gọi phương thức Drupal từ máy khách Java. Tôi có thể đăng nhập (và giữ phiên trong cookie) và tôi có thể tạo một nút đơn giản.

Nhưng tôi không thể đặt Trường tham chiếu nút.

Để tìm cách thực hiện, trước tiên tôi tìm đến cấu trúc nút (với trường tham chiếu) trong trang web drupal của tôi:

 [field_presta_presta_suivi] => Array
    (
        [und] => Array
            (
                [0] => Array
                    (
                        [nid] => 43
                    )

            )

    )

Vì vậy, trong Máy khách Java của tôi, tôi đã tạo một hàm để tái tạo cấu trúc này:

public  static HashMap addReferenceField(String field, String language, String type_ref,Object value, HashMap node, int delta ){
        HashMap f = new HashMap();
        HashMap p = new HashMap();      
        Object[] i = new Object[delta+1];           
        HashMap val = new HashMap();

        val.put(type_ref, value);
        i[delta] = val;
        p.put(language, i);
        f.put(field, p);
        return f;
    }

Hàm này được sử dụng để tạo HashMap sẽ được thêm vào tham số của dịch vụ 'node.create'.

Hàm này hoạt động với Trường giới thiệu người dùng (có cùng cấu trúc nút), nhưng khi tôi sử dụng nó để tham chiếu nút, máy chủ trả về "Không được chấp nhận".

Tôi đã dành rất nhiều thời gian cho nó và không tìm thấy bất kỳ ví dụ hoặc trường hợp tương tự, vì vậy đây là câu hỏi của tôi:

Làm thế nào để bạn sử dụng dịch vụ 3 (D7) để tạo một nút với trường tham chiếu nút?


1
Sau một vài lần thử, tôi thấy rằng tôi có thể thêm Trường tham chiếu nút chỉ bằng cách sử dụng tiêu đề (không có NID). Tôi nghĩ rằng điều này là do các tiện ích tự động hoàn thành. Tôi vẫn đang tìm cách để vượt qua trường tham chiếu nút bằng NID của mình.

3
Tôi không biết liệu nó có giúp ích gì không, nhưng tôi gặp phải một vấn đề tương tự với phiên bản dịch vụ cũ hơn. Tôi đặt trường tham chiếu nút để sử dụng tiện ích danh sách chọn và vấn đề đã biến mất.
jkopel

Câu trả lời:


2

Tất cả các tài nguyên mặc định của Dịch vụ đều bị phá vỡ hoàn toàn, vì chúng dựa vào việc mô phỏng việc gửi biểu mẫu thực tế ( blah! ). Tôi khuyên bạn nên sử dụng những dịch vụ được cung cấp bởi Thực thể Dịch vụ thay thế.


Cảm ơn. Sử dụng mô-đun Dịch vụ thực thể đã giải quyết vấn đề, nhanh chóng!
Ajinkya Kulkarni

0

Không cần phải đi đến một mô-đun khác, theo cấu trúc json sẽ giúp bạn tạo trường tham chiếu nút,

"field_specialization": 
{
  "und": 
       {
         "value":"10" 
       }
}
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.