【发布时间】:2023-01-23 18:13:04
【问题描述】:
我有一个 Laravel 5.8 项目,在 Blade 上我添加了这个:
@if(empty($user->usr_name))
<div class="row">
<div class="col-md-12">
<div class="form-group">
<span class='text-danger'>*</span>
<label>Mobile Number</label>
<input type="text" class="form-control" name="mobile" value="{{ !empty($user->member->mbr_mobile) ? $user->member->mbr_mobile : old('mobile') }}" required="required">
</div>
</div>
</div>
@endif
@if(empty($user->usr_email))
<div class="row">
<div class="col-md-12">
<div class="form-group">
<span class='text-danger'>*</span>
<label>Email</label>
<input type="text" class="form-control" name="email" value="{{ !empty($user->usr_email) ? $user->usr_email : old('email') }}" required="required">
</div>
</div>
</div>
@endif
所以如果用户的usr_name设置为NULL,那么用户就可以输入自己的用户名了。
如果用户的usr_email为EMPTY,那么他可以输入他的电子邮件地址。
如果这些字段之一不为空,则它不会出现在页面上。
现在我还需要将这些字段设置为必填字段:
$data = $request->validate([
'email' => 'required|unique:users,usr_email',
'mobile' => 'required|unique:users,usr_name',
]);
但这是错误的,因为如果用户已经有用户名,则必须省略所需的规则,这同样适用于用户电子邮件。
所以问题是,如果一个字段出现在表单上,如何使它成为必填字段?否则它应该是nullable。
【问题讨论】:
-
如果字段不为空。 - 使用禁用标签将其禁用。 - 或者通过动态添加一个类来隐藏它。 - 或将其添加为隐藏字段。
-
考虑使用
sometimes验证规则。 -
还有
required_if规则
标签: php laravel laravel-5.8 laravel-validation laravel-request