2017-06-19 156 views
0

我希望你們能幫助我。Laravel請求驗證

我在表單中有這些文件輸入:

Select images: <input type="file" name="images[][image]" multiple> 
Select videos: <input type="file" name="videos[][video]" multiple> 

我的目標是迫使用戶如果沒有推出視頻上傳的圖像。可能性:

  • 至少一個圖像
  • 至少一個視頻
  • 與 視頻

我要避免哪些圖像的任意組合:

  • 沒有圖像和沒有視頻

但我感到困惑,我需要在我的控制器使用驗證。這是我目前所擁有的:

$this->validate($request, [ 
    'images' => 'required_without_all:videos.*.video', 
    'images.*.image' => 'image', 
    'videos.*.video' => 'mimetypes:video/avi,video/mpeg,video/quicktime,video/mp4' 
]); 

但它不工作。我也嘗試過(沒有成功):

$this->validate($request, [ 
    'images.*.image' => 'image|required_without_all:videos.*.video', 
    'videos.*.video' => 'mimetypes:video/avi,video/mpeg,video/quicktime,video/mp4' 
]); 

我怎樣才能達到我想要使用Laravel的驗證?

非常感謝你在先進。

+0

你傾倒,以確保您正確訪問這些變量的要求? –

+0

@AlexMac我做到了。請求中的所有內容都是正確的。 –

回答

0

最後我這樣做是爲了解決問題:

$this->validate($request, [ 
    'images' => 'required_without_all:videos', 
    'images.*.image' => 'image', 
    'videos.*.video' => 'mimetypes:video/avi,video/mpeg,video/quicktime,video/mp4' 
]); 
0

您有輸入的2維陣列。 required_without_all是所有其他不存在時存在一個字段的驗證規則。在你的情況下,你有兩個輸入字段,每個字段都有多個文件上傳。

所以,你需要做的是使用required_without驗證切換您的案件。試試這個,可以幫助你。

$this->validate($request,[ 
    'images.*.*' => 'required_without:videos.*.*', 
    'videos.*.*' => 'required_without:images.*.*', 
]); 

這樣會在沒有圖片上傳時檢查圖片是否存在,同樣會在沒有圖片上傳時檢查是否存在圖片。

+0

它沒有工作...即使我沒有選擇任何圖像或視頻,請求也通過了驗證。 –