2017-06-19 12 views
0

私はあなたが私を助けることを願っています。Laravelリクエストの確認

私は形でこれらのファイルの入力があります。

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

をそして、私の目標は、導入されたまったくビデオが存在しない場合は、画像をアップロードするユーザーを強制することです。可能性:

  • 少なくとも一つの画像
  • 少なくとも1本のビデオ
  • 私は避けたい何 動画

と画像の任意の組み合わせ:

  • 画像はありませんし、 no videos

しかし、自分のコントローラで使用する必要のある検証については混乱しています。これは今私が持っているものです:

$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は、他のすべてが存在しない場合、1つのフィールドが存在するための検証規則です。あなたの場合、複数のファイルアップロードを持つ2つの入力フィールドがあります。

だから、required_without検証を使用してケースを切り替える必要があります。これを試してみてください。

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

この

には画像がアップロードされていない場合、画像の有無をチェックし、何の画像がアップロードされていないときと同じように、ビデオの存在を確認します。

+0

それは動作しませんでした...私は画像やビデオを選択しない場合でも、要求は検証をパスします。 –

関連する問題