วิธีใช้ #element_validate และ #value_callback ใน Drupal 8


9

ฉันได้ติดตามเอกสาร Form API อย่างเป็นทางการแล้ว แต่รหัสนี้ใช้ไม่ได้กับ Drupal 8:

  public function buildForm(array $form, FormStateInterface $form_state) {
    $form['upload'] = array(
      '#title' => t('Upload Images'),
      '#type' => 'managed_file',
      '#upload_location' => 'public://image_example_images/',
      '#element_validate' => array('file_generic_settings_max_filesize'),
    );
    return $form;
  }

  private function file_generic_settings_max_filesize($element, &$form_state) {
    form_error($element, 'This is an error.');
  }

ฉันพยายาม remplace form_error () โดย $ form_state-> setErrorByName () แต่มีปัญหาเดียวกันไฟล์ถูกอัพโหลดและการตรวจสอบไม่ได้ถูกเรียก

คุณมีทางออกให้ไหม? เอกสารของ #element_validate ล้าสมัยหรือไม่

วัตถุประสงค์ของฉัน: อัปโหลดภาพจำนวนมากใช้การตรวจสอบความถูกต้องที่กำหนดเองและแทรกภาพขนาดย่อทั้งหมดภายใน a ที่<div class="preview"></div>มีฟิลด์สำหรับตั้งชื่อแต่ละภาพ

ตัวอย่าง: ป้อนคำอธิบายรูปภาพที่นี่ (หลังจากอัปโหลดแสดงภาพขนาดย่อและฟิลด์ชื่อเพื่อตั้งชื่อทุกภาพ)

อื่นหลังจากอัปโหลดเพื่อแสดงภาพย่อและฟิลด์อื่น ๆ (ชื่อและคำอธิบาย) สำหรับแต่ละภาพฉันต้องใช้ #value_callback, #process, #attached (จัดการฟิลด์ / แสดงด้วย js หลังจากอัปโหลด) หรือตัวเลือกอื่นโปรด?

ขอบคุณ

คำตอบ:


9

ที่จะใช้วิธีการเช่นสำหรับ#element_validate/ #value_callbackฯลฯ คุณต้องcallable เช่น

$form['upload'] = array(
  '#title' => t('Upload Images'),
  '#type' => 'managed_file',
  '#upload_location' => 'public://image_example_images/',
  '#element_validate' => array(
    array($this, 'file_generic_settings_max_filesize'),
  ),
);

คุณจะต้องทำเครื่องหมายfile_generic_settings_max_filesize()(ซึ่งถ้าหากคุณเป็นคนจัดการมาตรฐานควรได้รับการตั้งชื่อจริง ๆfileGenericSettingsMaxFilesize) publicเพื่อรองรับเนื่องจากคลาสของคุณจะไม่เรียกวิธีการนี้

เอกสารนี้เป็นอย่างต่อเนื่องในการแจ้งการเปลี่ยนแปลงเป็นที่นี่


4
ถ้ามันเป็นวิธีการในวัตถุรูปแบบแล้วสามารถใช้อาร์เรย์ (':: file_generic_settings_max_filesize') ดูdrupal.org/node/2325875
Berdir

ฉันเพิ่งเพิ่มรายละเอียดไปยังตัวอย่างในประกาศแจ้งการเปลี่ยนแปลงและเพิ่มปัญหาเอกสารที่เกี่ยวข้อง
colan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.