Điểm:1

Các nút tải và lưu theo chương trình không cập nhật trường của tôi nhưng chỉnh sửa và lưu thủ công thì có. Tại sao sự khác biệt?

lá cờ ng

Tôi đã di chuyển các trường ngày D7 sang Ngày thông minh D9 (có định kỳ). Trong quá trình di chuyển, tôi đã phân tích cú pháp các quy tắc lặp lại cũ và điền chúng vào trường Ngày thông minh D9 mới.

Tuy nhiên, các ngày lặp lại không hiển thị trong Chế độ xem trừ khi tôi chỉnh sửa và lưu nút theo cách thủ công trước (không thực hiện bất kỳ thay đổi nào).

Vấn đề là tôi có hàng trăm nút cần được lưu lại và không có phương pháp progratic nào hoạt động. Chỉ chỉnh sửa và lưu thủ công là buộc quy tắc lặp lại thực hiện những gì cần làm để hiển thị.

Tôi đã thử sử dụng chức năng Lưu nút của Lượt xem hàng loạt hành động. Tôi đã thử sử dụng mô-đun Save All. Tôi đã thử tạo tập lệnh PHP để tải và lưu tệp node.

Không ai trong số này làm việc. Kịch bản của tôi ở bên dưới. Bất kỳ ý tưởng nào tại sao chỉ lưu thủ công hoạt động?

nhập mô tả hình ảnh ở đây

Jaypan avatar
lá cờ de
Nút thường sẽ không làm gì khi được lưu nếu không có giá trị nào thay đổi.
quantumized avatar
lá cờ ng
Tôi vừa sửa đổi tập lệnh để thay đổi dính thành đúng và nó vẫn không hoạt động. Vì vậy, nút đang lưu nhưng bất cứ điều gì trường Ngày thông minh cần làm chỉ hoạt động khi nút được lưu thủ công. Có cách nào để bắt chước việc lưu nút theo cách thủ công thông qua mã không? Không chắc chắn sự khác biệt đến từ đâu.
Jaypan avatar
lá cờ de
Có thể mô-đun có một số chức năng đang được thực hiện khi lưu biểu mẫu, thay vì lưu thực thể. Tôi sẽ xem qua mô-đun và xem định nghĩa biểu mẫu và/hoặc bất kỳ móc nối thay đổi biểu mẫu nào để xem liệu chúng có đang làm điều gì đó theo cách đó không.
quantumized avatar
lá cờ ng
Cảm ơn bạn. Điều đó có ý nghĩa. Có cách nào để lưu biểu mẫu theo chương trình không?
Jaypan avatar
lá cờ de
Trong Drupal 7, bạn có thể sử dụng drupal_form_submit(). Bản ghi thay đổi này (https://www.drupal.org/node/2121003) nói rằng bạn có thể sử dụng `\Drupal::formBuilder()->submitForm()`. Tôi không biết cơ chế của nó mặc dù
Điểm:1
lá cờ cn

Bất kỳ ý tưởng nào tại sao chỉ lưu thủ công hoạt động?

Như Jaypan đã đề cập trong các nhận xét, điều này là do Drupal sẽ không lưu nút nếu không có gì thay đổi.

Khi bạn gửi biểu mẫu cho một thực thể có ngày được tạo/thay đổi (tức là thực hiện Thực thểThay đổiGiao diện), nó thực hiện điều này:

if ($entity instanceof EntityChangedInterface) {
  $entity->setChangedTime($this->time->getRequestTime());
}

Điều này làm thay đổi giá trị trường, buộc thực thể phải lưu.

Bạn có thể sử dụng phương pháp tương tự để buộc lưu mã của mình.

quantumized avatar
lá cờ ng
Cảm ơn bạn về thông tin @Clive. Tôi đã hy vọng nó sẽ là một cái gì đó đơn giản như bạn đã đề xuất nhưng khi tôi thay đổi từ sai thành đúng và lưu lại Ngày thông minh vẫn không hoạt động, đó là điều kỳ diệu xảy ra khi lưu thủ công. Có ý kiến ​​​​cho rằng có lẽ mô-đun đang thực hiện điều gì đó đặc biệt chỉ xảy ra trong quá trình chỉnh sửa/lưu biểu mẫu nút nhưng tôi không thể tìm ra cách lưu biểu mẫu theo chương trình.
lá cờ cn
Có một ví dụ ở đây: https://drupal.stackexchange.com/questions/253009/how-to-call-submit-form-from-another-page-in-custom-module - vấn đề là nó là một dạng thực thể, vì vậy không phải chính xác đơn giản để điền vào các giá trị đệ trình. Sẽ có một phương thức API khác cho điều đó, nhưng các biểu mẫu hơi phức tạp để làm việc theo chương trình (ít nhất là từ bên ngoài). Có thể ít nỗ lực hơn để xem qua mã trong mô-đun ngày thông minh và xem liệu nó có làm điều gì đó bất thường không
Jaypan avatar
lá cờ de
Vâng, bạn có thể chỉ cần lấy mã ra khỏi mô-đun của họ và đặt mã đó vào hook_update_N() hoặc tạo một tập lệnh drush thực hiện điều tương tự.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.