【问题标题】:How to make a field required if it appearing on a form如果出现在表单上,​​如何使字段成为必填字段
【发布时间】: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


【解决方案1】:
<div class="row">
    <div class="col-md-12">
        <div class="form-group">
            <span class='text-danger'>*</span>
            @if(empty($user->usr_name))
                <label>Mobile Number</label>
                <input type="text" class="form-control" name="mobile" value="{{ 
                !empty($user->member->mbr_mobile) ? $user->member->mbr_mobile : 
                old('mobile') }}"
            @elseif(empty($user->usr_email))
                <label>Email</label>
                <input type="text" class="form-control" name="email" value="{{ 
                !empty($user->usr_email) ? $user->usr_email : old('email') }}"
            @endif 
            required="required">
        </div>
    </div>
</div>

然后

    if($request->email){
       $data = $request->validate([
            'email' => 'required|unique:users,usr_email',
       ]);
    } else {
       $data = $request->validate([
            'mobile' => 'required|unique:users,usr_name',
       ]);
    }

laravel 5 不再支持使用 8 或更高版本

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 2018-09-30
    相关资源
    最近更新 更多