让按钮在不更改页面的情况下执行控制器方法 - Laravel
Make button do Controller method without changing page - Laravel
您好,我正在尝试制作一个按钮,点击后我会保存文本字段中写入的信息以及当前用户的登录 ID。
单击后只需刷新页面(或什么都不做)并将该信息保存在数据库中。
但是我的按钮什么也没做...
我的控制器:
public function addSchool(Request $request)
{
DB::table('schools')->insertGetId([
'id_professor' => Auth::id(),
'escola' => $request->input('escola')
]);
return redirect('/teacher');
}
我有文本字段和按钮的区域:
<div class="form-group">
<h3 style="color: #000000" for="escola">Nome da Escola</h3>
<input type="text" id="escola" name="escola" class="form-control">
</div>
<div>
<button type="submit" class="btn btn-danger">Registar Escola</button
</div>
我没有在此处添加任何 web.php(路由文件),因为我不希望它转到任何页面。
这些是我的Database Columns
您无法使用没有路线的方法仅 PHP 进行保存。
如果您想这样做,请查看 livewire 组件,它允许您将 Javascript 与 PHP 一起使用。
但是你需要很少的人理解Javascript。
我建议您创建一个带有名称的路由,并将其指向方法
这里web.php
Route::post('/post-form', [YourController::class, 'addSchool'])->name('addschool');
然后在你看来
<form action="{{route('addschool')}}" method="post">
@csrf
<div class="form-group">
<h3 style="color: #000000" for="escola">Nome da Escola</h3>
<input type="text" id="escola" name="escola" class="form-control"/>
</div>
<div>
<button type="submit" class="btn btn-danger">Registar Escola</button>
</div>
</form>
您可以通过 ajax 从前端调用附加到按钮的点击事件来实现。它会动态地将请求发送到您指定的控制器方法,您可以在前端指定位置显示响应(数据)而无需页面加载
例如看看给定的代码
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$(".btn-submit").click(function(e){
e.preventDefault();
var escola = $("input[name=escola]").val();
$.ajax({
type:'POST',
url:'{{route('addschool')}}',
data:{name:escola},
success:function(data){
alert(data.success);
//add your login here for the response
}
});
});
您好,我正在尝试制作一个按钮,点击后我会保存文本字段中写入的信息以及当前用户的登录 ID。 单击后只需刷新页面(或什么都不做)并将该信息保存在数据库中。
但是我的按钮什么也没做...
我的控制器:
public function addSchool(Request $request)
{
DB::table('schools')->insertGetId([
'id_professor' => Auth::id(),
'escola' => $request->input('escola')
]);
return redirect('/teacher');
}
我有文本字段和按钮的区域:
<div class="form-group">
<h3 style="color: #000000" for="escola">Nome da Escola</h3>
<input type="text" id="escola" name="escola" class="form-control">
</div>
<div>
<button type="submit" class="btn btn-danger">Registar Escola</button
</div>
我没有在此处添加任何 web.php(路由文件),因为我不希望它转到任何页面。
这些是我的Database Columns
您无法使用没有路线的方法仅 PHP 进行保存。 如果您想这样做,请查看 livewire 组件,它允许您将 Javascript 与 PHP 一起使用。 但是你需要很少的人理解Javascript。 我建议您创建一个带有名称的路由,并将其指向方法
这里web.php
Route::post('/post-form', [YourController::class, 'addSchool'])->name('addschool');
然后在你看来
<form action="{{route('addschool')}}" method="post">
@csrf
<div class="form-group">
<h3 style="color: #000000" for="escola">Nome da Escola</h3>
<input type="text" id="escola" name="escola" class="form-control"/>
</div>
<div>
<button type="submit" class="btn btn-danger">Registar Escola</button>
</div>
</form>
您可以通过 ajax 从前端调用附加到按钮的点击事件来实现。它会动态地将请求发送到您指定的控制器方法,您可以在前端指定位置显示响应(数据)而无需页面加载
例如看看给定的代码
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$(".btn-submit").click(function(e){
e.preventDefault();
var escola = $("input[name=escola]").val();
$.ajax({
type:'POST',
url:'{{route('addschool')}}',
data:{name:escola},
success:function(data){
alert(data.success);
//add your login here for the response
}
});
});