How to send in axios post request multiple datas in javascript and get the datas in php

Language used : JS with React and PHP with Laravel

Resume : After posting an order, I need to send a mail (sendEmailToReferent). I need to pass multiple data from different array/object.

Problem : When I pass the multiple datas I only get the array, but the object is transformed into an empty array.

To know :

  • If I only pass “formData” without “allUsers” in my axios request it’s working.
  • Log of formData in sendEmailToReferent before post request give me my object
  • Log of allUsers in sendEmailToReferent before post request give me my array
  • Log of res (return response()->json($request);) in sendEmailToReferent give me

allUsers :
(5) [{…}, {…}, {…}, {…}, {…}]
formData: [] (here empty array)

Here is the onSubmit to post Order function where i get all my datas :

const allUsers = useSelector((state) => state.user?.usersData);

 const onSubmit = (data) => {
    const datas = data.internOrders;
    const formData = new FormData();

    formData.append('businessUnit', datas.businessUnit);
    formData.append('object', datas.object);
    formData.append('userData', JSON.stringify(userData));
    dispatch(postInternOrder(formData, allUsers));
  };

Then, in my post axios request, i dispatch the sendEmailToReferent with my datas

export const postInternOrder = (formData, allUsers) => async (dispatch) => {
  dispatch(setLoading(true));
  try {
    await axios({
      method: 'post',
      url: `${process.env.REACT_APP_API_URL}api/order/intern`,
      data: formData,
    }).then((res) => {
      console.log(res);
      const userData = res.data;
      dispatch(sendEmailToReferent(formData, allUsers));
    });
  } catch (err) {
    console.log(err);  }
};

my sendEmailToReferent request

export const sendEmailToReferent =
  (formData, allUsers ) =>
  async (dispatch) => {
    console.log(formData); 
    try {
      axios({
        method: 'post',
        url: `${process.env.REACT_APP_API_URL}api/mail/referent/toValidate`,
        data: { formData, allUsers },
        allUsers,
      }).then((res) => {
        console.log(res);
      });
    } catch (err) {
      console.log(err);
    }
  };

And then, my laravel function to send a mail

 public function NOneReceivedOrder(Request $request)
        {
            return response()->json($request);

            $orderDatas = $request->get('formData');
    
            $allUsers =  $request->get('allUsers');
    
            $oneOrder = InternOrders::where('IdSP', $orderDatas['idSP'])->first();
    
            $userDatas = json_decode($orderDatas['userData']);
    
            $referent = $orderDatas['referent'];
            $referentDatas = collect($allUsers)->where('displayName', $referent)->first();
    
            Mail::send('ReferentReceivedNewOrderMail',  ['referentDatas' => $referentDatas, 'oneOrder'  => $oneOrder, 'orderDatas' => $orderDatas], function ($m) use ($userDatas, $referentDatas, $orderDatas) {
                $m->from($userDatas->email);
                $m->to($referentDatas->email);
                $m->subject('TEST');
            });
        }

What I have already tried :

  • Change the way to get the datas in laravel ($orderDatas = json_decode($request['formData']);)

  • Change the way to send datas in js (dispatch(sendEmailToReferent(formData : {formData}, allUsers))

  • join the data into an object

     const requestData = {
            formData: formData,
            allUsers: allUsers,
          };
          axios({
            method: 'post',
            url: `${process.env.REACT_APP_API_URL}api/mail/referent/toValidate`,
            data: requestData,
    

And getting the datas in laravel :

$requestData = $request->all();

        $orderDatas = $requestData('formData');
        $allUsers = $requestData['allUsers'];

but got error “Trying to access array offset on value of type null”