2017-10-05 18 views
0

こんにちは私はlaravelの新機能です。私はlaravelのメソッドの1つを実行しています。私は問題が妥当性検査に失敗したことを意味するページが以前の場所にリダイレクトされる(つまり、フォームを編集する)ことを意味すると私の問題は私の編集ページですルートの投稿メソッドlaravelで検証が失敗した場合、メソッドは許可されません

ルート:

Route::get('leavelist','[email protected]'); 
Route::post('leaveedit','[email protected]'); 
Route::post('leaveupdate','[email protected]'); 
Route::post('leaveview','[email protected]'); 

LeaveController:

....... 
public function update(Request $request){ 

     $this->validate($request,[ 'request_type'=>'required', 
            'description'=>'required', 
            'from'=>'required', 
            'to' => 'required', 
            'requested_to' => 'required', 
            'status' => 'required' 
           ]); 

     $leave_update = LeaveModel::find($request->id); 

     $leave_update->request_type=$request->request_type; 
     $leave_update->requested_person=Auth::user()->id; 
     $leave_update->requested_to=$request->requested_to; 
     $leave_update->from=date('Y-m-d h:m:00',strtotime($request->from)); 
     $leave_update->to=date('Y-m-d h:m:00',strtotime($request->to)); 
     $leave_update->description=$request->description; 
     $leave_update->status=$request->status; 
     $leave_update->updated_by=Auth::user()->id; 

     if($leave_update->save()){ 
      //have to change this later 
      return redirect('leavelist')->with('message', 
                 '<br><div class="alert alert-success alert-dismissable"> 
                  <button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button> 
                  <strong>Success!</strong> Leave request Updated succesfully... </div>' 
                 ); 

     }else{ 
      //have to change this later 
      return redirect('leavelist')->with('message', 
                 '<br><div class="alert alert-warning alert-dismissable"> 
                  <button type="button" class="close" data-dismiss="alert" aria-hidden="true"></button> 
                  <strong>Warning!</strong> Leave request Updated failed... </div>' 
                 ); 
     } 

    } 
...... 

一覧ページで隠しフォーム:

<table class="table table-striped table-bordered table-hover" id="sample_2"> 
<thead> 
    <tr> 
     <th> S.no</th> 
     <th> Name</th> 
     <th> Department</th> 
     <th> Request Type</th> 
     <th> Request To</th> 
     <th> Responded Person</th> 
     <th> From</th> 
     <th> To</th> 
     <th> Status</th> 
     <th> Action</th> 
    </tr> 
</thead> 
<tbody> 
<?php $i=1; ?> 
@forelse ($leave_list as $key=>$value) 

    <tr> 
     <td> {{ $i }} </td> 
     <td> {{ $value->requested_person_name }} </td> 
     <td> {{ $value->dep_name }} </td> 
     <td> {{ $value->request_type_name }} </td> 
     <td> {{ $value->requested_to_person }} </td> 
     <td> {{ $value->responded_person_name }} </td> 
     <td> {{ date('d-m-Y h:m',strtotime($value->from)) }} </td> 
     <td> {{ date('d-m-Y h:m',strtotime($value->to)) }} </td> 
     <td> {{ $value->status }} </td> 
     <td> 
      <a href="#" data="{{ $value->id }}" onclick="event.preventDefault(); val = this.getAttribute('data'); document.getElementById('edit_unique_id').value=val; document.getElementById('edit-form').submit(); " class="btn btn-circle btn-icon-only green"> 
       <i class="fa fa-edit"></i> 
      </a> 
      <a href="#" data="{{ $value->id }}" onclick="event.preventDefault(); val = this.getAttribute('data'); document.getElementById('view_unique_id').value=val; document.getElementById('view-form').submit(); "class="btn btn-circle btn-icon-only blue"> 
       <i class="fa fa-file-o"></i> 
      </a> 
     </td> 
    </tr> 

<?php $i++; ?> 
@empty 

@endforelse 

</tbody> 
</table> 
<form id="edit-form" action="{{ url('leaveedit') }}" method="POST" style="display: none;"> 

    {{ csrf_field() }} 

<input type="hidden" name="id" id="edit_unique_id" value="" /> 

</form> 

上記の入力値は、jqueryによって設定され、送信されます。機能の

説明:すべての

最初に私がクリック.when離脱要求を編集するには、[編集]ボタンがあった私は休暇モジュールで働いていると私は、リストページに適用される離脱要求をリストアップしています編集ボタン私は特定の一意の行IDを取得しているとjqueryを使用してフォームを提出し、それのルートはポストメソッドRoute::post('leaveedit','[email protected]');です私の編集フォームは、私はルートを更新するために編集フォームを提出するときロードするRoute::post('leaveupdate','[email protected]');更新機能の検証パスでは、妥当性検査が失敗した場合、それはページを編集する前のページにリダイレクトされますので、問題が発生しました。method not allowed exception私はあなたの問題があれば教えてください私はあなたに返信します。この問題を解決するために私を案内してください。

注:これまでに開発されたすべてのモジュールでこのエラーが発生しているのは同じアプローチです。どうしてか分かりません 。私の評価版はLaravel Framework version 5.3.28

+0

私はあなたが検証は、それは自動的に私の編集フォームにリダイレクトされます失敗した.IF私は手動でリダイレクトしていないよ見て@iCoders – JYoThI

答えて

1

です。投稿方法ではリダイレクトできません。 jsonレスポンスでエラーメッセージを取得する方がよいでしょう。

$validator = Validator::make($request->all(), [ 
      'request_type'=>'required', 
      'description'=>'required', 
      'from'=>'required', 
      'to' => 'required', 
      'requested_to' => 'required', 
      'status' => 'required 
     ]);  


if ($validator->fails()) {  
    return response()->json($validator->messages(), 200); 
} 

.... 
+0

をしてくださいすることができ、私の質問を更新しました。それは私がpostメソッドを使ってfromを投稿している理由のためにURL上のどんなidも表示したくない。 – JYoThI

+0

ですから、リダイレクトはまったく必要ありません。右? –

+0

@JYoThI検証が失敗した場合、エラーメッセージとともに前のページにリダイレクトされます。このリダイレクションが必要ない場合は、jsonレスポンスで同じメッセージを取得できます。それはあなたのために働くのですか? –

関連する問題