Điểm:-1

Làm cách nào để thêm gọi lại ajax vào phần tử biểu mẫu được tạo trong vòng lặp foreach

lá cờ cn

Vui lòng xem đoạn mã sau:

foreach ($formaddresses as $key => $val) {
  // Thêm các nút chỉnh sửa vào các địa chỉ được tạo phía máy khách tùy chỉnh.
  if (!isset($val['accountnumber'])) {
    $form['orderinfo']['billshipaddresses']['billingaddresses'][$key]['#description'] = '<a class="edit-stored-address edit-stored-address-target-' . $ phím .'">Sửa</a>';
    $form['orderinfo']['billshipaddresses']['shippingaddresses'][$key]['#description'] = '<a class="edit-stored-address edit-stored-address-target-' . $ phím .'">Sửa</a>';
  }
}

Ở đây, vòng lặp này đang tạo ra một số điểm neo trong biểu mẫu của tôi. tôi chỉ cần đính kèm/thêm gọi lại '#ajax' với nó. Làm thế nào tôi có thể đạt được điều này?

Một cái gì đó giống như đoạn mã sau:

$form['orderinfo']['billshipaddresses']['shippingaddresses'] = [
  '#type' => 'radio',
  '#title' => 'Địa chỉ giao hàng',
  '#options' => $formaddressesOptions,
  '#default_value' => '',
  '#ajax' => [
    'gọi lại' => '::buildShipBillAddresses',
    'trình bao bọc' => 'địa chỉ giao hàng',
    'sự kiện' => 'thay đổi'
  ],
];

Ở đây chúng ta có thể thấy nếu radio ở trên thay đổi thì gọi lại ajax sẽ hoạt động và sẽ gọi phương thức này buildShipBillAddresses Cảm ơn!

Điểm:1
lá cờ us

Trên thực tế, phần tử neo mà bạn muốn thêm lệnh gọi lại AJAX không phải là phần tử biểu mẫu. Các API Ajax trang cho biết cách kích hoạt AJAX cho một liên kết.

Thêm lớp 'use-ajax' vào một liên kết. Liên kết sẽ được tải bằng lệnh gọi Ajax. Khi sử dụng phương pháp này, href của liên kết có thể chứa '/nojs/' như một phần của đường dẫn. Khi JavaScript Ajax xử lý trang, nó sẽ chuyển đổi trang này thành '/ajax/'. Sau đó, máy chủ có thể dễ dàng biết liệu yêu cầu này được thực hiện thông qua một yêu cầu Ajax thực tế hay ở trạng thái xuống cấp và phản hồi một cách thích hợp.

Điều này có nghĩa là đối với một liên kết, đoạn mã sau sẽ hoạt động.

foreach ($formaddresses as $key => $val) {
  // Thêm các nút chỉnh sửa vào các địa chỉ được tạo phía máy khách tùy chỉnh.
  if (!isset($val['accountnumber'])) {
    $form['orderinfo']['billshipaddresses']['billingaddresses'][$key]['#description'] = '<a href="/nojs/edit-billing-address" class="use-ajax edit -stored-address edit-stored-address-target-' . $key .'">Chỉnh sửa</a>';
    $form['orderinfo']['billshipaddresses']['shippingaddresses'][$key]['#description'] = '<a href="/nojs/edit-shipping-address" class="use-ajax edit -stored-address edit-stored-address-target-' . $key .'">Chỉnh sửa</a>';
  }
}

Mô-đun cần xác định hai tuyến đường cho các liên kết đó. Tôi không thể cho bạn biết mã của các lệnh gọi lại tuyến đường đó, nhưng chúng sẽ hiển thị Chỉnh sửa biểu mẫu để làm cho nó xuất hiện trên biểu mẫu đó.

Điểm:0
lá cờ de

Đây thực sự không phải là một câu hỏi về Drupal giống như một câu hỏi về PHP, nhưng để trả lời câu hỏi của bạn:

foreach ($formaddresses as $key => $val) {
  // Thêm các nút chỉnh sửa vào các địa chỉ được tạo phía máy khách tùy chỉnh.
  if (!isset($val['accountnumber'])) {
    $form['orderinfo']['billshipaddresses']['billingaddresses'][$key]['#ajax'] = [
      'gọi lại' => '::buildShipBillAddresses',
      'trình bao bọc' => 'địa chỉ giao hàng',
      'sự kiện' => 'thay đổi'
    ];
  }
}

Đă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.