2017-01-13 92 views
0

喲!我正在製作一張附有圖像的表單。驗證圖片上傳

形式:

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

驗證:

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

我也曾嘗試 '形象' 作爲驗證規則,但每當我上傳以JPG圖像的形式,我回去錯誤:

附件必須是一個類型爲jpeg,jpg,png的文件。

與Laravel 5.3

回答

0

既然你定義的attachments[]輸入名稱工作,附件將是包含文件的數組。如果您只需要上傳一個文件,則可能需要將輸入名稱重命名爲attachments,而不使用[](或者在此情況下attachment會更有意義)。如果您需要能夠上傳多,你可以建立你Request -extending類中的迭代器返回內部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; 
} 

一套覆蓋每個條目規則,那麼,你可以調用該函數內部rules()到合併陣列從attachments與任何其他規則回到你可能要指定該請求:

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

如果您還沒有爲您的表單專用Request -extending類,可以create one與工匠CL我輸入:php artisan make:request MyRequestName。在app\Http\Requests內將創建一個新的請求等級。這就是你要把代碼放在上面的文件。接下來,你可能只需要在你的控制器端點的函數簽名裏面使用typehint這個類:

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