2017-02-15 13 views
1

У меня есть поле с именем Photo, которое приходит из формы.как проверить поле, которое может быть цифрой или URL или файл для загрузки в laravel

На первом этапе это поле должно быть required для отправки, а затем может быть цифровым номером Или адресом или новым загруженным файлом фотографии.

Я знаю, как я могу использовать laravel validation rules, чтобы проверить, где это может быть цифра. как это:

'photo' => 'required|digit' 

Но я не знаю, как я могу проверить, если фото не была цифра является URL или загруженный файл.

Конечно, если бы я писал так:

'photo' => 'required|digit|url|file' 

В этом случае Laravel дать мне ошибку, если фото есть цифра и не URL.

Может ли кто-нибудь помочь мне решить эту проблему?

+2

Я думаю, что правила проверки правильности только проходят, если ** все ** соблюдены требования. В вашем случае это невозможно. Возможно, вам придется написать свои собственные [Пользовательские правила проверки] (https://laravel.com/docs/5.4/validation#custom-validation-rules). –

ответ

3

Вы можете сделать это следующим образом:

App/HTTP/Запросы/FormRequest.php

public function rules() 
{ 
    if(is_numeric($this->photo)) { 
     $validation = 'digit'; 
    } else if (!filter_var($this->photo, FILTER_VALIDATE_URL) === false) { 
     $validation = 'url'; 
    } else { 
     $validation = 'file'; 
    } 

return [ 
     'photo' => 'required|' . $validation 
    ]; 
} 

Примечание: Не тестировался, но это должно дать вам основную идею.