Drupal 8'de #element_validate ve #value_callback nasıl kullanılır


9

Resmi Form API Belgelerini izledim, ancak bu kod benim için Drupal 8'de çalışmıyor:

  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.');
  }

Ben form_error () $ form_state-> setErrorByName () tarafından remplace çalışıyorum ama aynı sorun, dosya yüklenir ve doğrulama çağrılmaz.

Bir çözümün var mı lütfen? #Element_validate dokümantasyonu eski mi?

Amacım: Çok sayıda resim yükleyin, özel bir doğrulama kullanın ve tüm resimlerin küçük resimlerini <div class="preview"></div>bir alana sahip bir a içine yerleştirin .

Örnek: resim açıklamasını buraya girin (Yüklemeden sonra, tüm resimleri adlandırmak için küçük resimleri ve başlık alanını görüntüleyin)

Başka, yükledikten sonra, her resim için küçük resimler ve diğer alan (başlık ve açıklama) görüntülemek için #value_callback, #process, #attached (yükleme sonrasında alanı / ekranı yönet) veya başka bir seçenek kullanmam gerekiyor mu?

Teşekkürler.

Yanıtlar:


9

#element_validate/ #value_callbackEtc için bir örnek yöntemi kullanmak üzere bir çağrılabilir araca ihtiyacınız vardır . Örneğin

$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'),
  ),
);

Sen işaretlemek gerekir file_generic_settings_max_filesize()(eğer standartları için titiz olmak olsaydı gerçekten adlandırılmış gereken fileGenericSettingsMaxFilesizegibi) publickarşılamak için sınıf yöntemi çağrılırken olmayacak gibi.

Bunun için belgeler devam ediyor , değişiklik bildirimi burada .


4
Bu şekilde nesne üzerinde yöntem ise, daha sonra bir dizi ( ':: file_generic_settings_max_filesize') kullanılabilir, bkz drupal.org/node/2325875
Berdir

Değişiklik bildirimindeki örneğe daha fazla ayrıntı ekledim ve bununla ilgili dokümantasyon sorununu ekledim.
colan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.