2017-12-12 10 views
0

私は休暇申請書からデータを表示する編集ページを持っています。フォームを更新すると、「不正な文字列オフセット 'leave_form」というエラーが発生します。私はVue.jsとPHPを使用しています。私はleaveDataオブジェクトに保存されている他のデータを取得することができます。私はdateFromオブジェクトの配列で保存しようとします。 leaveData ['leave_form']その後、エラーが発生します。私は問題がコントローラーの下の私のforeachステートメントにあると思う。Laravel '配列の不正な文字列オフセット' leave_form '問題

マイ配列(オブジェクトのキーと値を見ることができるように、私はコピーして、コンソールから貼り付けていることだけ例):

leaveData = [ 
alternativeName: "testos", 
applicantSignature:"1", 
applicantSignedDate:"2017-12-12", 
contactDetailDuringLeave:"999999", 
created_at:"2017-12-12 08:05:44", 
created_by:6, 
id:21, 

leave_form = [ 
conditionsOfPay:"test", 
created_at:"2017-12-12 08:05:44", 
dateFrom:"2017-12-12", 
dateTo:"2017-12-15", 
id:15, 
leave_application_id:21, 
name:"Vacation Leave", 
numberOfDays:2, 
] 
] 

ここでは私のブレードHTML(ちょうどleave_form部分)の一部です:ここで

   <tbody> 
       <tr v-for="leave in leaveData.leave_form"> 
        <th scope="row">@{{ leave.name }}</th> 
        <td><input v-pikaday="leave.dateFrom" class="form-control" v-model="leave.dateFrom" type="text"/></td> 
        <td><input v-pikaday="leave.dateTo" class="form-control" v-model="leave.dateTo" type="text"/></td> 
        <td><input class="form-control" type="text" name="numberOfDays" v-model="leave.numberOfDays"></td> 
        <td><input class="form-control" type="text" name="conditionsOfPay" v-model="leave.conditionsOfPay"></td> 
       </tr> 
       </tbody> 

は私Vue.jsです:

var leaveApply = new Vue({ 
el: '#leaveCreate', 
data: { 
    leaveData: <?php echo $leaveApplication ?>, 
    getUserData: <?php echo $users ?>, 
}, 

methods: { 

    submitForm: function(){ 
     var that = this; 

     var value = that.leaveData; 

     $.ajaxSetup({ 
      headers: { 
       'X-CSRF-TOKEN': $("#_token").attr("content") 
      } 
     }); 

     $.ajax({ 
     url: '/admin/internal/leave/update/' + value.id, 
     type: 'POST', 
     data: { 
      leaveData: that.leaveData, 
      personnelNumber: that.leaveData.personnelNumber, 
      user_id: that.leaveData.user_id, 
      alternativeName: that.leaveData.alternativeName, 
      contactDetailDuringLeave: that.leaveData.contactDetailDuringLeave, 
      applicantSignature: that.leaveData.applicantSignature, 
      applicantSignedDate: that.leaveData.applicantSignedDate, 
      managerApproval: that.leaveData.managerApproval, 
      managerSignedDate: that.leaveData.managerSignedDate, 
     }, 
     success: function(response) { 
     toastr.success('Leave Application Updated'); 
     }, 
     error: function(error){ 
     toastr.error('Something went wrong'); 
     } 
    }); 
    }, 
}, 
    }); 

マイコントローラー:

public function update (Request $request, $id){ 

    $leaveApplication = LeaveApplication::with('user','leaveDept','leaveForm', 'leaveTask')->find($id); 
    $leaveApplication->personnelNumber = $request->input('personnelNumber'); 
    $leaveApplication->alternativeName = $request->input('alternativeName'); 
    $leaveApplication->contactDetailDuringLeave = $request->input('contactDetailDuringLeave'); 
    $leaveApplication->managerApproval = filter_var($request->input('managerApproval'), FILTER_VALIDATE_BOOLEAN); 
    $leaveApplication->applicantSignature = filter_var($request->input('applicantSignature'), FILTER_VALIDATE_BOOLEAN); 
    $leaveApplication->applicantSignedDate = $request->input('applicantSignedDate'); 
    $leaveApplication->managerSignedDate = $request->input('managerSignedDate'); 

    foreach($request->input('leaveData') as $leaveData){ 
    $leaveApplication->dateFrom = $leaveData['leave_form']['dateFrom']; 
    $leaveApplication->update(); 
    } 

    $leaveApplication->update(); 

    return response()->json($leaveApplication); 
} 
+0

'leave_form:[]'は有効なPHP構文ではありません。エラーはPHPからも来ています – samayo

+0

編集済み - コンソールからコピーして貼り付けて編集したので、配列の外観を知ることができます – horcrux88

答えて

0
$leaveApplication = LeaveApplication::with('user','leaveDept','leaveForm', 'leaveTask')->find($id); 

$leaveApplication->dateFrom = $leaveData['leave_form']['dateFrom']; 

あなたはleave_formとLeaveFormを持っています。多分問題はここにあります。このコードも

foreach($request->input('leaveData') as $leaveData){ 
    $leaveApplication->dateFrom = $leaveData['leave_form']['dateFrom']; 
    $leaveApplication->update(); 
    } 

最後のforeach値をレコードに保存します。

また、更新プログラムを2回呼び出すことを意味します。

関連する問題