我的数据库没有更新
dd(request()->has('validated'));
这是我的web.php的样子:
Route::patch('prof/theme/{id}/validated', 'Theme\ThemeController@valide')->name('prof.theme.validated');
这是我的ThemeController.php的样子:
public function valide(Theme $theme) {
$theme->update([
'validated' => request()->has('validated')
]);
return back();
}
这是我的show.blade.php的样子:
<form action="{{route('prof.theme.validated', $theme)}}" method="POST">
@csrf
@method('PATCH')
@if ($theme->validated)
<button type="submit" class="btn btn-danger text-center" style="width: 350px">
INVALIDER LE THEME
</button>
@else
<button type="submit" class="btn btn-success text-center" name="validated" id="validated" style="width: 350px">
VALIDER LE THEME
</button>
@endif
</form>
此代码不会显示任何错误,但不会产生预期的作用。我的变量“ validated”是布尔值
答案 0 :(得分:1)
谢谢Harshith VA !!!!多亏了您的想法,我才得以解决问题。我保留了您的观点并以这种方式使用了您的控制器想法
public function valide(Request $request, Theme $theme) {
$theme->validated = $request->has('validated');
$theme->save();
return back();
}
感谢您的帮助
答案 1 :(得分:0)
从第一眼看,我认为这是由于您已将name="validated"
添加到<button>
而不是添加为<input>
。
<form action="{{route('prof.theme.validated', $theme)}}" method="POST">
@csrf
@method('PATCH')
@if ($theme->validated)
<button type="submit" class="btn btn-danger text-center" style="width: 350px">
INVALIDER LE THEME
</button>
@else
<input type="hidden" name="validated" value="true">
<button type="submit" class="btn btn-success text-center" style="width: 350px">
VALIDER LE THEME
</button>
@endif
</form>
在这里,我们使用validated
输入添加一个隐藏的输入字段。这样做应该将validated
键/值传递给控制器。
另一点。 dd()
用于终止和转储数据,并且将停止执行任何正在运行的脚本。因此,一旦执行此操作,它将不会保存到数据库。
以上假设您并不是说dd()
时它不会保存到数据库。
还要注意,->has()
检查输入是否存在。您应该使用request('validated')
来获取其值。