Формы, не передающие данные в базу данных, но без ошибок Laravel 5.8.22 - PullRequest
2 голосов
/ 21 июня 2019

Я новичок в Laravel и пробую вставку нескольких данных в несколько таблиц в соответствии с этим учебником .Я реплицировал проект, но данные не попадают в базу данных при вставке с формами.Я вижу данные при ручной вставке через PhPMyAdmin, поэтому сомневаюсь, что это проблема с подключением к базе данных.

Просмотр формы :

<form>
    <section>
        <div class="panel panel-header">

            <div class="row">
                <div class="col-md-6">
                    <div class="form-group">
                        <input type="text" name="customer_name" class="form-control" placeholder="Please enter your name">
                    </div></div>
                <div class="col-md-6">
                    <div class="form-group">
                        <input type="text" name="customer_address" class="form-control" placeholder="Please enter your Address">
                    </div></div>
            </div></div>
        <div class="panel panel-footer" >
            <table class="table table-bordered">
                <thead>
                <tr>
                    <th>Product Name</th>
                    <th>Brand</th>
                    <th>Quantity</th>
                    <th>Budget</th>
                    <th>Amount</th>
                    <th><a href="#" class="addRow"><i class="glyphicon glyphicon-plus"></i></a></th>
                </tr>
                </thead>
                <tbody>
                <tr>
                    <td><input type="text" name="product_name[]" class="form-control" required=""></td>
                    <td><input type="text" name="brand[]" class="form-control"></td>
                    <td><input type="text" name="quantity[]" class="form-control quantity" required=""></td>
                    <td><input type="text" name="budget[]" class="form-control budget"></td>
                    <td><input type="text" name="amount[]" class="form-control amount"></td>
                    <td><a href="#" class="btn btn-danger remove"><i class="glyphicon glyphicon-remove"></i></a></td>
                </tr>
                </tbody>
                <tfoot>
                <tr>
                    <td><input type="submit" name="" value="Submit" class="btn btn-success"></td>
                </tr>
                </tfoot>
            </table>
        </div>
    </section>
</form>
<script type="text/javascript">
    $('.addRow').on('click',function(){
        addRow();
    });
    function addRow()
    {
        var tr='<tr>'+
            '<td><input type="text" name="product_name[]" class="form-control" required=""></td>'+
            '<td><input type="text" name="brand[]" class="form-control"></td>'+
            '<td><input type="text" name="quantity[]" class="form-control quantity" required=""></td>'+
            '<td><input type="text" name="budget[]" class="form-control budget"></td>'+
            ' <td><input type="text" name="amount[]" class="form-control amount"></td>'+
            '<td><a href="#" class="btn btn-danger remove"><i class="glyphicon glyphicon-remove"></i></a></td>'+
            '</tr>';
        $('tbody').append(tr);
    };
    $('.remove').live('click',function(){
        var last=$('tbody tr').length;
        if(last==1){
            alert("you can not remove last row");
        }
        else{
            $(this).parent().parent().remove();
        }

    });
</script>

OrderController store функция:

public function store(Request $request)
{
    $data=$request->all();
    $lastid=Orders::create($data)->id;
    if(count($request->product_name) > 0) {
        foreach($request->product_name as $item=>$v) {
            $data2=array(
                         'orders_id'=>$lastid, 
                         'product_name'=>$request->product_name[$item],
                         'brand'=>$request->brand[$item], 
                         'quantity'=>$request->quantity[$item], 
                         'budget'=>$request->budget[$item], 
                         'amount'=>$request->amount[$item]            
                         );
            Items::insert($data2);
        }
    }
    return redirect()->back()->with('success','data insert successfully');
}

И маршруты :

Route::post('/orders','OrderController@store');
Route::get('/orders','OrderController@index');
Route::get('/items/{id}','OrderController@items');

Что я делаю не так?Или это просто проблема совместимости?Спасибо

1 Ответ

1 голос
/ 21 июня 2019

Вы забыли добавить действие и метод к тегу <form>.Я думаю, именно поэтому форма не отправляет данные.
Также вам нужно будет отправить токен csrf в запросе.

<form method="POST" action="/orders">
    @csrf
    // ...
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...