2016-03-27 20 views
1

İlk drupal 8 modülümü oluşturmaya çalışıyorum. Bu modülde yeni bir form oluşturmak ve kullanıcıya bu formda bir dosya yükleme yeteneği sağlamak zorundayım. Ben formun sayfasına gittiğinizdedrupal 8 katkıda bulunan bir modülde dosya yükleme

class Make2d extends FormBase { 

    /** 
    * {@inheritdoc} 
    */ 
    public function getFormId() { 
    return 'make2d_form'; 
    } 

    /** 
    * {@inheritdoc} 
    */ 
    public function buildForm(array $form, FormStateInterface $form_state) { 
    if (\Drupal::currentUser()->isAnonymous()) { 
     return new RedirectResponse(\Drupal::url('user.page')); 
    } 

    $form['sheet_size'] = array(
     '#type' => 'radios', 
     '#title' => t('Sheet Size'), 
     '#options' => array(t('10 X 10(2.99$)'), t('17 X 17(4.99$)'), t('28 X 28(5.99$)')), 
    ); 
    $form['uploaded_file'] = array(
     '#type' => 'file', 
     '#title' => t('Upload your file'), 
     '#required' => true 
    ); 
    $form['actions']['#type'] = 'actions'; 
    $form['actions']['submit'] = array(
     '#type' => 'submit', 
     '#value' => $this->t('Save to Cart'), 
     '#button_type' => 'primary', 
    ); 
    return $form; 
    } 

    /** 
    * {@inheritdoc} 
    */ 
    public function validateForm(array &$form, FormStateInterface $form_state) { 
    echo '<pre>'; 
    print_r($form_state->getvalues()); 
    echo '</pre>'; 
    } 

    /** 
    * {@inheritdoc} 
    */ 
    public function submitForm(array &$form, FormStateInterface $form_state) { 
    print_r($form_state['values']); 

    } 

} 

bu sonucudur:

image of my form

sonra Bilgisayardan bir dosya seçip formu göndermek burada benim form denetleyicisi olduğunu. Benim $ form_state-> GetValues ​​() dizi print_r zaman ancak sonuç sth gibidir:

Array 
(
    [sheet_size] => 0 
    [uploaded_file] => 
    [submit] => Drupal\Core\StringTranslation\TranslatableMarkup Object 
... 

sen [uploaded_file] boş olduğunu görebiliriz. ve bir dosya yükleme hakkında formun üstünde bir hata var. form denetleyicisi ve dosya yükleme ile ilgili sorun nedir? teşekkürler.

cevap

3

Sonunda! Buldum. '#type' = 'manage_file' özelliğini kullanmalıyız, böylece yüklenen dosyayı yönetmek için drupal'a izin verelim. '#type' = 'file' kullanırsak dosyamızı file_save_upload() ile transfer etmeliyiz.

İlgili konular