Laravel required_unless 验证

标签 laravel validation laravel-5

我在使用 required_unless 验证时遇到问题。

我想做的是说当 building numberempty 或其他方式时 building name 是必需的,所以 building当 building name 时,需要编号。目前两者都需要。

public function rules(Request $request)
{
    $id = $request->input('entity_id');
    $entity = Entity::with('address')
        ->find($id);
    $validation = $entity->id;
    return [
        'name' => 'required|alpha_special|unique:entities,name,'.$validation.'|min:3|max:30',
        'type' => 'required',
        'email' => 'required|email|unique:entities,email,'.$validation,
        'building_name' => 'alpha|required_unless:building_number,value',
        'building_number' => 'numeric|required_unless:building_name,value',
        'street' => 'required|alpha_spaces',
        'town' => 'nullable|alpha',
        'city' => 'nullable|alpha',
        'postcode' => 'required|max:8',
        'telephone' => 'required|telephone',
        'ical' => 'nullable|active_url',
    ];
}

查看:

<div class="hidden multi form-group{{ $errors->has('building_name') ? ' has-error' : '' }}">
                          <div class="building_name_message form-control alert-warning" style="display: none;"></div>
                            <label  id="building_name_label" for="building_name" >Building Name</label>
                            <input  id="building_name" type="text" class="form-field form-control" placeholder="Building name (If applicable)" name="building_name" value="{{ old('building_name') }}">
                              @if ($errors->has('building_name'))
                                <span class="help-block">
                                  <strong>{{ $errors->first('building_name') }}</strong>
                                </span>
                              @endif
                          <div class="building_number_message form-control alert-warning" style="display: none;"></div>
                            <label  id="building_number_label" for="building_number" >Building Number</label>
                            <input  id="building_number" type="text" class="form-field form-control" placeholder="Building Number (If applicable)" name="building_number" value="{{ old('building_number') }}">
                              @if ($errors->has('building_number'))
                                <span class="help-block">
                                  <strong>{{ $errors->first('building_number') }}</strong>
                                </span>
                              @endif
                              <div class="form-navigation">
                                <button type="button" class="previous btn btn-info pull-left">&lt; Previous</button>
                                <button type="button" id="next" class="next btn btn-info pull-right">Next &gt;</button>
                              </div>
                        </div>

最佳答案

您必须在空值检查的验证中放置 null 而不是 value

'building_name' => 'alpha|required_unless:building_number,null',
'building_number' => 'numeric|required_unless:building_name,null',

另一种方法是使用 required_without 作为:

'building_name' => 'alpha|required_without:building_number',
'building_number' => 'numeric|required_without:building_name',

参见文档 here

更新

由于上述验证分别检查了 building_namebuilding_numberalphanumeric 类型,您可以更改顺序验证规则,以便它首先检查 required_without 并且如果不存在则不检查值。

'building_name' => 'required_without:building_number|alpha',
'building_number' => 'required_without:building_name|numeric',

这可能适用于您的情况。

希望,你明白。

关于Laravel required_unless 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45209014/

相关文章:

html - PDF 作为 HTML 中的空白页

javascript - 如何在 Laravel Mix 中使用全局 JS 变量?

php - 有没有办法在 laravel 中使用 eloquent 仅在时间戳列中按日期排序?

javascript - 使用 jquery 验证动态输入字段

php - SQLSTATE[23000] : Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails in Laravel 5

php - 多个字段的 Laravel SUM 使用原始查询返回 null

php - 如何正确捕获 PHP 异常 (Laravel 5.1)

php - 如何在 Lumen 中使用 DRY 和服务层?

javascript - 客户端表单验证和交互的最佳 JavaScript 解决方案?

validation - 如何强制MVC验证IValidatableObject