Jika saya memvalidasi formulir frontend saya dengan aksioma dengan menggunakan opsi 'data' itu gagal validasi di aplikasi laravel backend saya.

axios.post('http://example.com/', {
  'Content-Type': 'multipart/form-data',
  Accept: 'application/json',
  data: {
      email: 'email@email.com',
      password: '12345678',
    }
}).then(res => console.log(res))
  .catch(err => console.log(err));

Jadi di sini saya menggunakan opsi 'data' untuk memvalidasi.

$request->validate([
        'email' => 'required|string|email',
        'password' => 'required|string'
]);

Pengembalian: 422 email diperlukan kata sandi diperlukan.

Beginilah cara permintaan diformat:

{Content-Type: "application/json", data: {email: "email@email.com", password: "12345678"}}

Namun jika saya mengirimkan formulir dengan cara ini dengan aksioma, itu divalidasi dan saya masuk:

'Content-Type': 'multipart/form-data',
'Accept': 'application/json',
'email': 'email@email.com',
'password': '12345678',

Jadi pertanyaan saya adalah bagaimana cara memberi tahu validator untuk melihat ke dalam objek data?

EDIT 1: Seperti yang diminta dd($request->attributes); kembali:

ParameterBag {#53
  #parameters: []
}
0
Ezrab_ 28 Oktober 2019, 15:50

2 jawaban

Jawaban Terbaik

Ini karena Anda menambahkan headers sebagai data dalam permintaan axios Anda. permintaan Anda harus seperti ini:

const headers = {
    'Accept': "application/json",
    'Content-Type': "application/json",
};

let data: {
      email: 'email@email.com',
      password: '12345678',
    };

axios.post('http://example.com/',data, {headers:headers})
            .then( (response) => {
                //do the stuff
            })
            .catch( (error) => {
                // do the stuff
            });

Note: axios fungsi posting mengambil argument pertama sebagai url, kedua sebagai data dan ketiga sebagai config (headers etc) sementara dalam kasus Anda, Anda mencampur header dengan data. Anda dapat membaca lebih lanjut tentang axios di sini

Terima kasih.

2
Salman Zafar 28 Oktober 2019, 13:23

Masalahnya adalah, mengapa Anda perlu menambahkan data di axios Anda?

Jika Anda menambahkan data, maka validasi Anda harus seperti ini:

$request->validate([
    'data.email' => 'required|string|email',
    'data.password' => 'required|string',
]);
0
nmfzone 28 Oktober 2019, 13:11