laravel - Laravel - 有没有更好的方法来检查带有刀片中用户先前输入值的复选框?
问题描述
我有一个复选框
<input type="checkbox" name="example">
由于验证失败,用户提交表单并返回,所以我想显示复选框的先前状态
<input
type="checkbox"
name="example"
{!! old('example') ? 'value="1" checked' : 'value="0"' !!}>
这里的第一个问题是,现在如何处理验证?如果是,0
或者1
我会添加布尔验证,但现在第一次是on
,之后是0
or 1
。
有人可能会说,如果您{!! old('example') ? 'value="1" checked' : 'value="0"' !!}
最初使用它,它的价值将on
不再存在。
所以我的第一个问题变成了这个:最初的值为old('example')
null 所以复选框没有选中属性,复选框的值为0
. 现在,当用户提交表单时,该表单old('example')
具有值(IT IS NOT NULL),因此这次复选框已选中属性,并且它的值是不可取的1
。
========
我遇到的另一个问题是,如果old('example')
有真值(这意味着用户已经选中了复选框),我应该放一些东西来检查复选框。但它还没有完成。我想检查example
数据库中的值,所以如果old('example')
有错误值(这意味着用户没有选中复选框)我想检查 的值example
,如果它的值是1
检查复选框并设置值复选框为 1 否则为 0。所以我想到的是:
<input
type="checkbox"
name="example"
value="{!! old('example', isset($collection) ? $collection->example : null) == '1' : '1' : '0' !!}">
现在的问题是那old('example')
将是on
或什么都不是。的值$collection->example
将是1
或0
或空。因此,如果我将它与 '1' 进行比较,即使old('example')
为真,它也不会为真,同样,如果我将它与 进行比较,on
即使 的值为真,它也不会$collection->example
为真。所以让我们这样做:
@if(old('example') == 'on' || (isset($collection) && $collection->example))
<input type="checkbox" name="example" value="on" checked="checked">
@else
<input type="checkbox" name="example">
@endif
通过上面的这段代码,问题得到了解决。但是还有其他更好的方法吗?
所以我的问题是如何处理后端的验证,当然还有如何在不涉及 jQuery 之类的情况下以更好的方法处理前端的复选框?
解决方案
我想它会解决你的问题试试看。
刀片文件:
<input type="checkbox" name="example" value="{{ old('example') ?? '1' }}"
{{ old('example') == '1' ? 'checked' : null }} required>
required 将强制用户选中前端的复选框,而在后端,您可以使用 required 验证,因为我们不能信任前端验证。
控制器:
public function store(Request $request)
{
$request->validate([
'example' => 'required',
]);
}
推荐阅读
- django - 如何借助一对多关系在 Django 中使用外键从课程中获取主题
- excel - Excel VBA 运行时错误“70”:权限被拒绝
- javascript - js - 浅拷贝对象,保留原型,但不运行构造函数
- xamarin.forms - Xamarin.Forms 热重载在 UWP 中不起作用
- c# - 是否可以绑定另一个用户控件的属性?
- ios - 使用 AVFoundation 时,如何监听 Control Center Screen 和 Notification Center Screen 活动
- r - 如何解决:geom_linerange 需要以下缺失的美学:x、ymin、ymax
- python - 如何根据条目由字母和数字组成的列对数据框进行排序?
- python - 密码管理器的 Fernet 令牌无效错误
- apache - Flask 中没有名为 numpy 的模块