2017-09-27 11 views
1

現在、データシートのデータをデータベースに保存しようとしています。私は、datatables内のフォームフィールドに取り組んでいて、入力値を変更してデータベースに戻したいと思っています。理想的には、IDが既に存在しない場合はデータベース内の別のテーブルに保存することができますが、現在は変更を加えて元のテーブルに戻すことのみを試みています。 私はlaravel 5.4とdatatablesプラグインを使用しています。 私はlaracast、スタックオーバーフロー、およびデータテーブルでさまざまな投稿を探してきました。私は自分のデータを自分のコントローラーに保存し、オブジェクトを返すようにしました。私はモデルの保護された$キャストを変更して、devのツールにどのような値が入っているのかを確認しようとしました。私はまた、私のコントローラでは無駄な複数の保存メソッドを試してみました。Laravel 5.4とDatatables - Ajax - データの保存/送信 - サーバー側

スクリーンショット1 enter image description here

スクリーンショット2 enter image description here

ルート:

Route::get('/plunker', ['uses'=>'[email protected]']); 
Route::get('/plunker/ttotgetposts', ['as'=>'plunker.ttotgetposts','uses'=>'[email protected]']); 
Route::post('/plunker', '[email protected]')->name('saveOrUpdate'); 

モデル:

レスポンスとコードは以下を参照してください

ビュー:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <meta http-equiv="X-UA-Compatible" content="ie=edge"> 
    <title>Save test</title> 


    <link rel="stylesheet" href="/css/bootstrap-3.min.css"> 
    <link rel="stylesheet" type="text/css" href="/css/jquery-ui.css"> 

    <link rel="stylesheet" type="text/css" href="/css/led.css"> 
    <link rel="stylesheet" type="text/css" href="/css/jquery-ui.structure.min.css"> 
    <link rel="stylesheet" type="text/css" href="/css/jquery-ui.theme.min.css"> 
    <link rel="stylesheet" type="text/css" href="/css/dataTables.jqueryui.min.css"> 
    <link rel="stylesheet" type="text/css" href="/css/ssstyle.css"> 
    <script src="/js/jquery-1.12.4.js"></script> 
    <script src="/js/jquery.dataTables.min.js"></script> 
    <script src="/js/dataTables.jqueryui.min.js"></script> 
    <script src="/js/jquery-ui.min.js"></script> 
    <script src="/js/jquery-ui.accordion.multiple.js"></script> 
    <script src="/js/demo.js"></script> 

</head> 
<body> 

<h3>ttot Save Test</h3> 
<div> 
    <div class="containershe"> 
     <table id="books" class="ttotsave" style="width:100%"> 
      <thead> 
      <tr><th>ID</th> 
       <th>Name</th> 
       <th>Inducted</th> 
       {{--<th>Edit</th>--}} 
       {{--<th>Delete</th>--}} 
      </tr> 
      </thead> 
     </table> 
    </div> 
    <button data-token="{{ csrf_token() }}" type="submit">Submit</button> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
      oTable = $('#books').DataTable({ 
       "processing": true, 
       "serverSide": true, 
       "scrollY": "500px", 
       "scrollX": true, 
       "scrollCollapse": true, 
       "paging": true, 
       "ajax": "{{ route('tabletotable.ttotgetposts') }}", 
       "dataSrc" : "", 
       "columns": [ 
        {'data': 'id', render: function (data, type, row) 
        { 
         if (data) { 
          var id = $('<div />').text(data).html(); 
         } 
         else { 
          var id = ''; 
         } 

         return '<input type="text" id="id" name="id[' + $('<div />').text(row.id).html() + ']" value=" ' + id + ' ">'; 
        } }, 
        {'data': 'book_name', render: function (data, type, row) 
        { 
         if (data) { 
          var name = $('<div />').text(data).html(); 
         } 
         else { 
          var name = ''; 
         } 

         return '<input type="text" id="name" name="name[' + $('<div />').text(row.id).html() + ']" value=" ' + name + ' ">'; 
        } }, 
        {'data': 'date_inducted', render: function (data, type, row) 
        { 
         if (data) { 
          var date = $('<div />').text(data).html(); 
         } 
         else { 
          var date = ''; 
         } 

         return '<input type="text" id="inducted" name="inducted[' + $('<div />').text(row.id).html() + ']" value=" ' + date + ' ">'; 
        } }, 
       ] 
      }); 


      $('button').click(function() { 
       var data = oTable.$('input, select').serialize(); 

       $.ajax({ 
        headers: { 
         'X-CSRF-TOKEN': $('button').data('token'), 
        }, 
        type: "POST", 
        url: 'tabletotable', 


        dataSrc : 'data', 
        dataType: 'JSON', 
        data: data, 

        async: 'false', 


        success: function() 
        { 
         alert('saved'); 
         console.log('my message' + response + data); 
        } 
       }); 
      }); 

     }); 
    </script> 
</div> 

</body> 
</html> 

コントローラー:

<?php 

namespace App\Http\Controllers; 

use App\Books; 
use App\Inducted; 
use Illuminate\Foundation\Bus\DispatchesJobs; 
use Illuminate\Routing\Controller as BaseController; 
use Illuminate\Foundation\Validation\ValidatesRequests; 
use Illuminate\Foundation\Auth\Access\AuthorizesRequests; 
use Illuminate\Http\Request; 

use DataTables; 
use DB; 

class Controller extends BaseController 
{ 
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests; 

    public function plunker() 
    { 
     return view('plunker'); 
    } 

    public function ttotGetPosts() 
    { 
     $users = DB::table('books')->select('*'); 
     return DataTables::of($users) 
      ->make(true); 
    } 

    public function saveOrUpdate(Request $request){ 
     dd($request->all()); 
     DB::table('books')->where('id','=', $request->get('id')) 
      ->update(['book_name' => $request->get('name'), 
       'date_inducted' => $request->get('inducted')]); 
     return redirect('/index')->with('status','Successfully updated !'); 
    } 
} 

あなたはちょうど私が知っている必要とするより多くの情報が

種類が

答えて

0

に関しては、この

を試してみてください210
+0

くそ.......あなたの血の伝説。私はこれを数日間ずっと磨いてきました:)私は4ヶ月間しか開発しておらず、まだ物事の周りに頭を浮かべています。ありがとうヒープ – Jason

関連する問題