Php Laravel验证:一个必需的输入,可以来自两个字段中的任何一个

Php Laravel验证:一个必需的输入,可以来自两个字段中的任何一个,php,laravel-5,Php,Laravel 5,所以我有上传媒体和网址upload\u media是您必须上载.pdf文件的地方,如果您需要url,则必须上载url 所以我想要的是,如果upload\u media不是空的,那么就不需要url。如果用户决定使用url,则不需要上传媒体。但是如果其中任何一个都没有值,那么它应该返回一个必需的错误 以下是我的验证: $this->validate($request, [ 'title' => 'required', 'vi

所以我有
上传媒体
网址
upload\u media
是您必须上载.pdf文件的地方,如果您需要url,则必须上载
url

所以我想要的是,如果
upload\u media
不是空的,那么就不需要
url
。如果用户决定使用
url
,则不需要
上传媒体。但是如果其中任何一个都没有值,那么它应该返回一个必需的错误

以下是我的验证:

   $this->validate($request, [
        'title'              => 'required',
        'viewing_time'       => 'required',
        'tags'               => '',
        'description'        => '',
        'organization'       => '',
        'upload_media'       => '',
        'url'                => '',
        'upload_preview'     => 'required|file|image'
    ]);  

您可以使用
required\u而不使用
规则:

$rules = [
    'title'              => 'required',
    'viewing_time'       => 'required',
    'tags'               => '',
    'description'        => '',
    'organization'       => '',
    'upload_media'       => 'required',
    'url'                => 'required',
    'upload_preview'     => 'required|file|image'
];

if ($request->file('upload_media')->isValid()) {
    $rules['url'] = '';
} elseif (!empty($request->get('url'))) {
    $rules['upload_media'] = '';
}

$this->validate($request, $rules);
$this->validate($request, [
    'title'              => 'required',
    'viewing_time'       => 'required',
    'tags'               => '',
    'description'        => '',
    'organization'       => '',
    'upload_media'       => 'required_without:url',
    'url'                => 'required_without:upload_media',
    'upload_preview'     => 'required|file|image'
]);