Tôi thấy rằng vấn đề lớn nhất khi làm việc với Drupal 8 là tôi không thể có được dữ liệu mình cần. Drupal 8 muốn tôi sử dụng các phương thức công khai hơn là tự mình đi sâu vào một đối tượng. Vấn đề là, tôi không thể tìm ra một cách nhất quán để có được danh sách các phương pháp có sẵn! (chúng tồn tại một cách kỳ diệu và tôi cảm thấy như mình chỉ cần biết về chúng). =
Trong ví dụ này, giả sử tôi có loại nội dung với trường video. Tôi cần lấy URL thô của tệp video trong trường đó.
Vì vậy, tôi bắt đầu với một id nút ($ nid) và bằng cách nào đó tôi phải tìm ra cách tải nút. Điều này không quá tệ vì có rất nhiều ví dụ. Vì vậy, tôi làm một cái gì đó như $node = \Drupal\node\Entity\Node::load($nid);
.
Càng xa càng tốt. Sau đó, tôi cần lấy giá trị của trường video của mình (field_main_video). Điều này khiến tôi TUYỆT ĐỐI để tìm ra vì có tài liệu mâu thuẫn trên mạng. Cuối cùng tôi đã tìm ra rằng tôi phải làm một cái gì đó như thế này (vì đó là một mặt hàng đa giá trị):
$video = \Drupal\node\Entity\Node::load($nid)->field_main_video->getValue();
... sau đó lặp qua mảng, v.v ... Sử dụng kint cũng không giúp tôi tìm thấy cái này. Bởi vì, ví dụ, nếu tôi kint($node)
và xem theo các phương thức, tôi không thấy getValue () là một mục ở đó. Vẫn không khủng khiếp, vì có đủ ví dụ xung quanh để tìm ra nó.
Tuy nhiên, khi tôi đi sâu hơn, điều tôi không biết (đây là phần quan trọng) là thay vì lấy id thực thể trường video, sau đó tải thực thể, sau đó tìm trường "uri" trong thực thể, v.v. Tôi sẽ ở D7): Có một phương pháp cho phép tôi lấy tất cả URI trong cùng dòng mã này!
$url = \Drupal\node\Entity\Node::load($nid)->field_main_video->entity->getFileUri();
Nhưng làm thế nào tôi có thể biết getFileUri () này tồn tại? Tôi tình cờ vấp phải nó trong một bài viết trên blog. Điều này thực sự làm cho việc nhận URI dễ dàng hơn trong D7 ... nhưng chỉ khi bạn biết (một cách kỳ diệu) phương thức nào tồn tại cho mỗi 'cấp độ' của một đối tượng.
Cuối cùng, với ví dụ này tôi đang hỏi: Làm thế nào để bạn tìm thấy tất cả các phương thức công khai cho từng cấp độ của một đối tượng theo cách dễ đọc và dễ hiểu? Lưu ý rằng có vẻ như nên có một cách drupal-centric (ví dụ: mô-đun devel) để thực hiện việc này thay vì tìm kiếm thủ công api.drupal.org hoặc sử dụng một cái gì đó cụ thể IDE?