У меня есть форма регистрации с полями имени пользователя, электронной почты, пароля и аватара (изображения). Все работает, за исключением изображения, которое может быть нулевым. Я использую Vue в качестве внешнего интерфейса и отправляю данные с помощью axios в Laravel.
Это проверка:
public function register(Request $request)
{
$request->validate([
'username' => 'required|string|max:255|unique:users',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6',
'avatar' => 'nullable|image|mimes:jpg,jpeg,png|max:1999'
]);
$fileNameToStore = 'noimage.jpg';
return User::create([
'username' => $request->username,
'email' => $request->email,
'password' => Hash::make($request->password),
'avatar' => $fileNameToStore
]);
}
И вот как я отправляю данные:
register(context, data) {
let formData = new FormData();
formData.append('avatar', data.avatar)
formData.append('username', data.username)
formData.append('email', data.email)
formData.append('password', data.password)
return new Promise((resolve, reject) => {
axios.post('/register', formData,{
headers: {
'Content-Type': 'multipart/form-data'
}
})
.then(response => {
resolve(response)
})
.catch(error => {
reject(error)
})
})
}
Если я заполняю каждое поле, оно работает нормально, а также другие вещи, такие как проверка расширения или размера файла, единственная проблема, когда я не выбираю какое-либо изображение. У меня есть nullable, включенный в проверку, но я все еще получаю сообщение об ошибке проверки, что это должен быть образ и какое расширение оно должно иметь.