【问题标题】:The 0 field is required. Laravel 5.5 Validation error0 字段是必需的。 Laravel 5.5 验证错误
【发布时间】:2018-06-12 07:12:23
【问题描述】:

我有一个“需要 0 字段”。当我没有名为 0 的字段时,尝试将数据保存到数据库时出错。没有来自控制器的验证,数据会保存,但如果我只验证要验证的六个字段中的一个字段,我仍然会收到错误消息。我该如何解决这个问题。请帮忙看看这是我的看法

<form method="post" action="{{ url('agent/add_tenantProperty') }}" data-toggle="validator">
                {{ csrf_field() }}
                <div class="row">
                  <div class="col-md-6">
                    <div class="form-group">
                      <label for="txtMovieTitle">Tenant</label>
                     <select id="ddlGenge" class="form-control" name="tenant_id" required="">
                       @foreach($tenants as $tenant)
                        <option value="{{ $tenant->id }}">
                          {{ $tenant->designation }} {{ $tenant->firstname }} {{ $tenant->lastname }}
                        </option>
                       @endforeach
                      </select>
                       <div class="help-block with-errors"></div>
                    </div>
                  </div>
                  <div class="col-md-6">
                    <div class="form-group">
                      <label for="ddlGenge">Asset Category</label>
                      <select id="ddlGenge" class="form-control" name="asset_id" required="">
                        <option>Choose a Property</option>
                        @foreach($assets as $asset)
                         <option value="{{ $asset->id }}">{{ $asset->category }}</option>
                        @endforeach
                      </select>
                       <div class="help-block with-errors"></div>
                    </div>
                  </div>
                </div>
                <div class="row">
                  <div class="col-md-6">
                    <div class="form-group">
                      <label for="txtDirector">Asset description</label>
                      <select id="ddlGenge" class="form-control" name="description" required="">
                        <option>Choose a Description</option>
                        @foreach($assets as $asset)
                          <option value="{{ $asset->description }}">{{ $asset->description }}</option>
                        @endforeach
                      </select>
                    <div class="help-block with-errors"></div>
                    </div>
                  </div>
                  <div class="col-md-6">
                    <div class="form-group">
                      <label for="txtProducer">Location</label>
                      <select id="ddlGenge" class="form-control" name="address" required="">
                        <option>Choose an Address</option>
                        @foreach($assets as $asset)
                          <option value="{{ $asset->address }}">{{ $asset->address }}</option>
                        @endforeach
                      </select>  
                    <div class="help-block with-errors"></div>
                    </div>
                  </div>
                </div>
                <div class="row">
                  <div class="col-md-6">
                    <div class="form-group">
                      <label for="txtWebsite">Standard price</label>
                      <input id="txtWebsite" type="text" class="form-control" name="price" required="">
                      <div class="help-block with-errors"></div>
                    </div>
                  </div>
                  <div class="col-md-6">
                    <div class="form-group">
                      <label for="txtWriter">Date</label>
                      <input id="txtWriter" type="date" class="datepicker form-control" name="occupation_date"
                             required="">
                    <div class="help-block with-errors"></div>
                    </div>
                  </div>
                </div>
                <button type="submit" class="btn btn-outline btn-primary pull-right">Submit</button>
                <br/>
              </form>

和我的控制器

public function store(Request $request)
{
    //validation
    $this->validate($request, array([
        'tenant_id' => 'required',
        'asset_id' => 'required',
        'description' => 'required',
        'address' => 'required',
        'price' => 'required',
        'occupation_date' => 'required',
    ]));

    //create and save new data
    $tenantProperty = New TenantProperty();
    $tenantProperty->tenant_id = $request->tenant_id;
    $tenantProperty->asset_id = $request->asset_id;
    $tenantProperty->description = $request->description;
    $tenantProperty->address = $request->address;
    $tenantProperty->price = $request->price;
    $tenantProperty->occupation_date = $request->occupation_date;
    $tenantProperty->save();
    //redirect
    return redirect('agent/tenantProperty_list');
}

路线如下

 Route::get('add_tenantProperty', 'TenantPropertyController@create')->name('/add_tenantProperty');
Route::post('add_tenantProperty', 'TenantPropertyController@store');

【问题讨论】:

  • 您是否尝试过在Laravel Validation 页面上使用$validatedData = $request-&gt;validate([..

标签: php mysql laravel


【解决方案1】:

当您只写$request 时,它会传递整个请求对象,但验证函数希望两个参数都是数组。

所以做一点改变,你会很高兴的:

$this->validate($request, array(  // Removed `[]` from the array.
    'tenant_id' => 'required',
    'asset_id' => 'required',
    'description' => 'required',
    'address' => 'required',
    'price' => 'required',
    'occupation_date' => 'required',
));

【讨论】:

  • 谢谢你尝试过这种方式,但这就是我得到的 Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_RECOVERABLE_ERROR) 类型错误:参数 1 传递给 App\Http\Controllers\Controller::validate( ) 必须是 Illuminate\Http\Request 的实例,给定数组,在 /Applications 中调用
  • @Omotola,我的错。问题是数组内的[]。删除它们。检查我更新的答案。
【解决方案2】:

上面的答案是正确的,这是我问的laravel 5.5上解决验证问题的另一种方法

$validation = validator::make($request->all(), [
        'tenant_id' => 'required',
        'asset_id' => 'required',
        'description' => 'required',
        'address' => 'required',
        'price' => 'required',
        'occupation_date' => 'required',
    ]);

欲了解更多信息,请访问https://laravel.com/docs/5.5/validation#manually-creating-validators

【讨论】:

    【解决方案3】:
     $request->validate([ 
    '0'=>'',
    'tenant_id' => 'required',
    'asset_id' => 'required',
    'description' => 'required',
    'address' => 'required',
    'price' => 'required',
    'occupation_date' => 'required',]);
    

    【讨论】:

    • 欢迎来到 StackOverflow!虽然此答案可能会为 OP 的需求提供解决方案,但请添加解释以使其更易于理解,不仅适用于 OP,而且适用于整个社区
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 2018-05-29
    • 2022-10-04
    • 2021-08-01
    • 1970-01-01
    相关资源
    最近更新 更多