Drupal: Dosya Uzantısı doğrula?

1 Cevap php

Yüklenen dosya gerçekten .csv uzantısı var olduğunu doğrulamak için çalışıyorum. Bu kod, ancak çalışmıyor:

function upload_validate($form, &$form_state) {
        // code that does work ...
 else {
  $file = file_save_upload('upload');
  $errors = file_validate_extensions($file, 'csv');
  if (! empty($errors)) {
   form_set_error('', $errors[0]);
  }
  else {
   $_SESSION[FILE_KEY] = serialize($file);
  }
 }
}

Ben yanlış ne yapıyorum?

1 Cevap

<wrong>
I think your problem is with form_set_error(). Here is the actual function (with an annotation):

<?php
function form_set_error($name = NULL, $message = '', $reset = FALSE) {
  static $form = array();
  if ($reset) {
    $form = array();
  }
  // here is where setting $name to '' is a problem
  if (isset($name) && !isset($form[$name])) { 
    $form[$name] = $message;
    if ($message) {
      drupal_set_message($message, 'error');
    }
  }
  return $form;
}
?>

Ben sorun $name böylece form_set_error adı ayarlanmış olduğunu görüyor ama boş bir dizedir bir dizi anahtarı olamaz boş bir dize geçirmeden olduğunu düşünüyorum. Ben böyle işlevini çağırarak denemek istiyorum:

form_set_error(, $errors[0]);

Ben ilk bu yazdığımda </wrong> (I isset() Ben koduna eklenen yorumun ardından hattının arasında '!' Inf ön okumadım. Ben geçen denemek verecek bir ne olacağını görmek için $form dizinin herhangi bir bölümünde değil, ama muhtemelen aşağıda cevabını deneyin dize)

Yazdığınız kod çalışır gibi Bunun dışında, bakarak API Documentation for file_validate_extensions() görünüyor. Eğer onlar olması gerektiğini düşünüyorum zaman blokları başlar eğer vadede o kısmını kontrol etmek için drupal_set_message() gibi bir şey kullanarak denedim. Bu eğer mantığı ile yanlış bir şey olduğunu olabilir.