2017-01-13 2 views
0

Yo! Ich arbeite an einem Formular, wo ich ein Bild anhefte.Validieren von Image Uploads

Form:

{{ Form::file('attachments[]', array('multiple')) }} 

Validierung:

$this->validate($response, array(
    'attachments' => 'required | mimes:jpeg,jpg,png', 
)); 

Ich habe auch versucht, 'Bild' als Prüfregeln aber wenn ich das Formular mit JPG-Bild poste ich wieder Fehler:

Die Anhänge müssen eine Datei vom Typ jpeg, jpg, png sein.

Arbeiten mit Laravel 5.3

Antwort

0

Da Sie einen Eingangs Namen attachments[] definiert werden Anhänge ein Array enthält Ihre Datei sein. Wenn Sie nur eine Datei hochladen müssen, möchten Sie möglicherweise den Namen der Eingabe in attachments umbenennen, ohne dass die [] (oder attachment in diesem Fall mehr Sinn machen würde). Wenn Sie mehrere hochladen zu können, können Sie einen Iterator in Ihrem Request -extending Klasse bauen, die eine Reihe von Regeln gibt abdeckt jeden Eintrag innerhalb attachments[]

protected function attachments() 
{ 
    $rules   = []; 
    $postedValues = $this->request->get('attachments'); 

    if(null == $postedValues) { 
     return $rules; 
    } 

    // Let's create some rules! 
    foreach($postedValues as $index => $value) { 
     $rules["attachments.$index"] = 'required|mimes:jpeg,jpg,png'; 
    } 
    /* Let's imagine we've uploaded 2 images. $rules would look like this: 
     [ 
      'attachments.0' => 'required|mimes:jpeg,jpg,png', 
      'attachments.1' => 'required|mimes:jpeg,jpg,png' 
     ]; 
    */ 

    return $rules; 
} 

Dann können Sie nur innerhalb rules() diese Funktion aufrufen zu die Array verschmelzen zurück von attachments mit anderen Regeln, die Sie möglicherweise für diese Anforderung angeben mögen:

public function rules() 
{ 
    return array_merge($this->attachments(), [ 
     // Create any additional rules for your request here... 
    ]); 
} 

Wenn Sie noch nicht über eine dedizierte Request -extending Klasse für Ihr Formular können Sie create one mit dem handwerklichen cl ich durch Eingabe von: php artisan make:request MyRequestName. Eine neue Anfrageklasse wird innerhalb app\Http\Requests erstellt. Das ist die Datei, in die Sie den obigen Code schreiben würden. Als nächstes können Sie diese Klasse typehint in die Funktionssignatur Ihres Controller-Endpunkts eingeben:

public function myControllerEndpoint(MyRequestName $request) 
{ 
    // Do your logic... (if your code gets here, all rules inside MyRequestName are met, yay!) 
}