Как заставить кнопку сохранить работать в Laravel (таблицы данных)?

#php #html #laravel #visual-studio-code #datatables

Вопрос:

Как мне создать функцию php в моем контроллере, которая сохраняет определенную строку, указанную флажком? Эту строку данных необходимо будет добавить в базу данных SQL при нажатии кнопки отправить. Это то, что я пробовал до сих пор, но, похоже, это не работает

 @extends('layouts.app')
@include('partialViews.navigation')
@section('content')
<div class="container">
<div class="row justify-content-center">
@yield('navigation')
<div class="col-md-8">
<div class="card">
<table id="example" class="data-table table table-striped">
<thead>
<tr>
<th scope="col"></th>
<th scope="col">Stage</th>
<th scope="col">Bedrijf</th>
<th scope="col">Afdeling</th>
<th scope="col">Locatie</th>
<th scope="col">Periode</th>
</tr>
</thead>
<tbody>
@foreach ($stagevoorstelen as $key => $stagevoorstel) 
<tr>
<td scope="row">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="tableMaterialCheck2">
</div>
</td>
<td>{{$stagevoorstel->assignment->title ?? "stagair"}}</td>
<td>{{$stagevoorstel->companyContact1->department->company->name}}</td>
<td>{{$stagevoorstel->companyContact1->department->name ?? ""}}</td>
<td>{{$stagevoorstel->companyContact1->department->company->city}}</td>
<td>{{$stagevoorstel->assignment->year ?? ""}}  {{$stagevoorstel->assignment->semester ?? ""}}</td>
</tr>
@endforeach 
</tbody>
</table>
<div id="buttontjes">
<tr>
<td><button type="submit" id="btn-save" value="create" class="btn  btn-sm">opslaan</button></td>
</tr>
</div>
</div>
</div>
</div>
</div>
@endsection
 

Это контроллер, я понятия не имею, что включить в свою функцию!

 <?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppRepositoriesContractsStageVoorstelRepository;
class student_bekijkstagesController extends Controller
{
    /** 
     * @var StagevoorstelRepository
     */
    private $stageVoorstel;
    /**
     * kaartjesWeergevenTestController Constructor
     *  
     * @param StageVoorstelRepository $stagevoorstel
     */
    public function __construct(StageVoorstelRepository $stageVoorstel)
    {
        //$this->middleware('auth');
        $this->stageVoorstel = $stageVoorstel;
    }
    /**
     * Show the application dashboard.
     *
     * @return IlluminateContractsSupportRenderable
     */
    public function index()
    {
        return view('student_bekijkstages',['stagevoorstelen' => $this->stageVoorstel->getAvailableForStudents()]);
    }
    public function save(Request $request){
        if($request->submit == "Save"){
            
        }
    }
}
 

Комментарии:

1. Я не вижу html-тега формы. Включено ли это в представление??

2. Я им не пользовался!

Ответ №1:

Поскольку вы не используете форму, вы можете использовать JS для сбора checked row данных, и POST это с помощью метода JS или Jquery .post() для вашего серверного PHP, чтобы данные можно было сохранить в БД

Есть примеры, подобные этому: https://datatables.net/forums/discussion/42290/getting-the-checked-rows-in-datatables которые описывают, как из таблиц данных вы можете получить проверенную строку и работать с ней. В документации по таблицам данных также есть множество примеров.

Ответ №2:

Я не вижу никакого тега формы.

 <form action="{{route ('route_name')}}" method="route_method">
...
</form>
 

Также вам нужен @csrf для методов post,put,….

Комментарии:

1. это настоящий ответ? или это больше похоже на комментарий? Пожалуйста, используйте комментарии, чтобы прояснить ситуацию, а затем предложите реальные полезные ответы.

2. @Рон, это ответ. Какой из них проще? Просто добавьте тег формы или напишите строки дополнительного кода в js???