Điểm:0

phương thức setError hoặc setRebuildd phá vỡ biểu mẫu xác thực

lá cờ vn
<?php

không gian tên Drupal\my_custom_module\Form;

sử dụng Drupal\Core\Form\FormBase;
sử dụng Drupal\Core\Form\FormStateInterface;

/**
 * Biểu mẫu mặc định của lớp.
 */
lớp DefaultForm mở rộng FormBase {

  /**
   * {@inheritdoc}
   */
  hàm công khai getFormId() {
    trả về 'default_form';
  }

  /**
   * {@inheritdoc}
   */
  chức năng công khai buildForm(mảng $form, FormStateInterface $form_state) {
    $form['test'] = [
      '#type' => 'trường văn bản',
      '#title' => $this->t('Kiểm tra'),
      '#maxlength' => 64,
      '#size' => 64,
      '#trọng lượng' => '0',
    ];
    $form['submit'] = [
      '#type' => 'gửi',
      '#value' => $this->t('Gửi'),
    ];

    $form_state->setErrorByName('kiểm tra', 'lỗi');
    trả về biểu mẫu $;
  }

  /**
   * {@inheritdoc}
   */
  hàm công khai validateForm(mảng &$form, FormStateInterface $form_state) {
    $form_state->setErrorByName('kiểm tra', 'lỗi');
    cha mẹ::validateForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  hàm công khai submitForm(mảng &$form, FormStateInterface $form_state) {
    $form_state->setRebuild(TRUE);
  }

}

Khi đang sử dụng setError, setErrorByName hoặc setRebuild phương thức, dù nó ở trong validateForm hay submitForm, nó sẽ phá vỡ biểu mẫu của tôi bằng cách cho tôi một Đã hết kích thước bộ nhớ cho phép là XXX byte lỗi khi tôi gửi biểu mẫu.

Vấn đề là, tôi không thấy gì trong nhật ký ngoại trừ hàng nghìn lỗi "404", như thể tôi có thứ gì đó kích hoạt vòng lặp vô hạn.

Trong ví dụ, tôi có cả hai setErrorByNamesetRebuild, nhưng nó xảy ra ngay cả với chỉ một trong số họ.

Bạn có thể nghĩ ra bất cứ điều gì có thể gây ra lỗi này không?

lá cờ cn
Nếu câu hỏi này giống với câu hỏi trước của bạn (tôi nghĩ bạn nghi ngờ đó là sự cố máy chủ?), thì có lẽ bạn cần cung cấp thêm thông tin chi tiết để nhận được bất kỳ trợ giúp nào. Những phương pháp tương tự này được sử dụng trong rất nhiều trang web mà không gặp sự cố và cố gắng đoán xem điều gì có thể làm rò rỉ bộ nhớ bên ngoài mã bạn đã trình bày là điều khó nói nhất. Bạn đã để một trình gỡ lỗi/trình lập hồ sơ thích hợp sử dụng nó chưa? Bạn có biết rò rỉ đang xảy ra ở đâu không?
Corentin Le Fur avatar
lá cờ vn
Tôi không thực sự. Tôi vừa kiểm tra và thấy rằng lỗi này không xuất hiện trên một dự án tương tự (cùng phiên bản Drupal, cùng máy chủ Docker). Tôi sẽ kiểm tra xem sự khác biệt giữa hai dự án này là gì và quay lại.
Điểm:0
lá cờ vn

Ok, tôi vừa phát hiện ra điều gì đã gây ra lỗi.

Hóa ra đó là từ một mô-đun tùy chỉnh khác, trong đó một trong các Bộ điều khiển của tôi đang trả về ngoại lệ 404.Tôi vẫn không biết làm thế nào hoặc tại sao, nhưng khi (và chỉ khi) gửi biểu mẫu, ngoại lệ 404 đã được kích hoạt.

Xin lỗi vì đã làm bạn mất thời gian nếu bạn đã cố gắng tìm hiểu vấn đề này.

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