Laravel Validation: один обязательный вход, который может поступить из любого из двух полей - PullRequest
0 голосов
/ 07 сентября 2018

Итак, у меня есть upload_media и url. upload_media - это место, где вы должны загрузить файл .pdf, и url, если вам нужен URL.

так что я хочу, чтобы, если upload_media не был пустым, то url не требовалось. Если пользователь решил использовать url, то upload_media не потребуется. Но если любой из них не имеет значения, он должен вернуть требуемую ошибку.

Вот мое подтверждение:

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

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Вы можете использовать required_without правило: https://laravel.com/docs/5.6/validation#rule-required-without

$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'
]); 
0 голосов
/ 07 сентября 2018
$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...