Điểm:1

Thực tiễn tốt nhất để truyền tham số định tuyến là gì?

lá cờ ae

Trong submitForm() tôi muốn chuyển hướng đến bộ điều khiển và chuyển các giá trị của biểu mẫu. Các giá trị biểu mẫu là tất cả các mảng, btw.

Đây là gửiForm.

hàm công khai submitForm(mảng &$form, FormStateInterface $form_state) {
    // lấy giá trị
    $demo_values ​​= $form_state->getValue('demo');
    $data_set_value = $form_state->getValue('data_set');
    $engineering_degrees1 = $form_state->getValue('engineering_degrees1');
    $engineering_degrees2 = $form_state->getValue('engineering_degrees2');
    $engineering_degrees3 = $form_state->getValue('engineering_degrees3');
    $engineering_degrees4 = $form_state->getValue('engineering_degrees4');
    $physical_science_degrees = $form_state->getValue('physical_science_degrees');

   
    # đặt dữ liệu biểu mẫu trong chuyển hướng url
    $params = ['demos' => $demo_values,
      'data_set' => $data_set_value,
      'kỹ thuật_độs1' => $kỹ thuật_độs1,
      'kỹ thuật_độs2' => $kỹ thuật_độs2,
      'kỹ thuật_độs3' => $kỹ thuật_độs3,
      'kỹ thuật_độs4' => $kỹ thuật_độs4,
      'các_bằng_khoa_học_vật_lý' => $các_bằng_khoa_học_vật_lý];
    $form_state->setRedirect('stats_degrees.render_chart',$params);
  }
}

Đây là tệp YML định tuyến của tôi.

stats_độs.render_form:
  đường dẫn: '/statistic/stats-độ'
  mặc định:
    _title: 'Bằng cấp Khoa học Vật lý và Kỹ thuật do Thành viên của các Nhóm Thiếu đại diện kiếm được'
    _form: '\Drupal\stats_degrees\Form\StatsDegreesForm'
  yêu cầu:
      _permission: 'truy cập nội dung'
stats_độs.render_chart:
  đường dẫn: '/statistics/stats-degrees-chart/{demos}/{data_set}/{engineering_degrees1}/{engineering_degrees2}/{engineering_degrees3}/{engineering_degrees4}/{physical_science_degrees}'
  mặc định:
    _controller: '\Drupal\stats_degrees\Controller\StatsDegreesController::stats_degrees_chart'
  yêu cầu:
    _permission: 'truy cập nội dung'

Đây là cuộc gọi phương thức Trình điều khiển của tôi.

hàm công khai stats_degrees_chart($demos,$data_set,$engineering_degrees1,$engineering_degrees2,$engineering_degrees3,$engineering_degrees4,$physical_science_degrees) {

Hiện tại, nó đang báo lỗi 500 sau khi tôi gửi biểu mẫu. Có cách nào tốt hơn để truyền tham số cho bộ điều khiển không?

Jaypan avatar
lá cờ de
Lỗi là gì? Nhìn vào nhật ký của bạn.
lá cờ by
Những gì bạn đang làm nên làm việc, tôi nghĩ. Điều gì xảy ra nếu bạn truy cập /statistics/stats-degrees-chart/ với các giá trị tham số trong URL? Bạn có thể gỡ lỗi để xem chuyển hướng biểu mẫu đang cố chuyển đến URL nào không?
Điểm:2
lá cờ cn

Phương pháp hay nhất để truyền tham số cho bộ điều khiển là dựa trên ý kiến ​​và tùy thuộc vào trường hợp sử dụng, vì vậy tôi cố gắng đề cập đến tất cả các phương pháp khả thi.

Nói chung, có ba cách khác để truyền tham số cho bộ điều khiển, chuỗi truy vấn, dữ liệu POST và PHIÊN. Bạn có thể tuần tự hóa các mảng cho chuỗi truy vấn, nhưng dễ dàng hơn là POST hoặc SESSION.

Nhìn thấy Cách lấy tham số $_POST và $_GET trong một bộ điều khiển.

Nếu bạn sử dụng các giá trị phiên thì hãy bỏ đặt chúng ở cuối bộ điều khiển vì các giá trị phiên không còn cần thiết sẽ không tốt cho bộ nhớ đệm. Nhìn thấy Làm cách nào tôi có thể hủy hoặc bỏ đặt phiên?.

Cụ thể cho các hình thức có nhiều hơn. Nếu mục đích của biểu mẫu là lưu trữ các giá trị trong cơ sở dữ liệu (vĩnh viễn trong một thực thể hoặc tạm thời trong kho lưu trữ tạm thời), hãy thực hiện việc này trước rồi tham chiếu mục cơ sở dữ liệu qua tham số định tuyến.

Nếu bạn không muốn lưu trữ dữ liệu, bạn nên đăng trực tiếp dữ liệu lên bộ điều khiển vì bạn không thể đính kèm dữ liệu POST vào chuyển hướng gửi.

Bạn không nhất thiết phải có bộ điều khiển, bạn có thể xây dựng lại biểu mẫu hiển thị biểu đồ bên dưới biểu mẫu hoặc thay thế nó. Nhìn thấy Làm cách nào để hiển thị kết quả trên cùng một trang sau khi gửi biểu mẫu?

Điểm:1
lá cờ fr

Bạn có thể sử dụng một kho lưu trữ tạm thời riêng tư. Xem ví dụ http://karimboudjema.com/en/drupal/20190315/save-temporary-values-form-private-tempstore-drupal-8

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