2016-03-22 7 views
0

Ich habe einen Artikel von Fabien Potencier über den Aufbau eines eigenen Framework von Symfony Components verfolgt.Symfony Request Object - Dateien - Upload Fehler Konstanten

$request = \Symfony\Component\HttpFoundation\Request::createFromGlobals(); 

Ich dachte, dass das Request-Objekt als Ersatz für das PHP-Superglobals verwendet werden könnte. Wenn ich jedoch eine Datei hochlade und auf Fehler stößt (z. B. beim Hochladen von leeren Dateien), enthält sie keine Fehlerinformationen?

Hier ist der Ausgang des Arrays $ _FILES ist, es enthält den Fehlercode

Array 
(
    [inputIndex] => Array 
     (
      [name] => Array 
       (
        [3] => 
       ) 

      [type] => Array 
       (
        [3] => 
       ) 

      [tmp_name] => Array 
       (
        [3] => 
       ) 

      [error] => Array 
       (
        [3] => 4 
       ) 

      [size] => Array 
       (
        [3] => 0 
       ) 

     ) 

) 

Hier ist der Ausgang des Objektanforderung $

Array 
(
    [inputIndex] => Array 
     (
      [3] => 
     ) 

) 

Im Falle von $ _FILES das Request-Objekt verliert viele Informationen. Ist es irgendwo anders im Anfrageobjekt enthalten? Wie geht Symfony damit um?

Antwort

1

Der Zweck des Request-Objekts besteht darin, die Anforderungsdaten zu speichern und nicht zu validieren. Wenn Sie machen Validierung möchten, erstellen Sie ein Objekt (eine Entität, wenn Sie Anforderungsdaten irgendwo speichern oder nur ein einfaches PHP-Objekt, wenn nicht), stellen Sie den Inhalt des $_FILES auf das Objekt, wie:

$model->setFile($request->files->get('fileFormInputName')); 

und Verwendung die validator component, um die Datei mit der File constraint zu validieren. Wenn ein Anhang gesendet wurde, lautet die $request->files->get('fileFormInputName')instanceof Symfony\Component\HttpFoundation\File\UploadedFile.

Ich hoffe, dass Sie diese Frage beantworten.