【问题标题】:Why did not update table values with validation in Laravel 5.6?为什么在 Laravel 5.6 中没有通过验证更新表值?
【发布时间】:2019-03-29 20:53:19
【问题描述】:

在 laravel 5.6 应用程序中,我有表名作为车辆,然后我需要更新 VehicleController 更新函数中的一些表值并进行验证,

 $this->validate($request, [
            'provincename'     => 'required|min:3',
            'districtname'    => 'required',
            'townname'    => 'required',
            'brandname'    => 'required',
            'modelname'    => 'required',
            'year'    => 'required',
            'condition'    => 'required',
            'milage'    => 'required',
            'data'    => 'required',
            'price'    => 'required',
            'telephone'    => 'required',
            'categoryname'    => 'required',
            'tramsmission'    => 'required',
            'fueltype'    => 'required',
            'enginecapacity'   => 'required'
         ]);

而我的更新控制器是这样的,

 $vehicle = Vehicle::find($id);

        $vehicle->provincename = $request->input('provincename');
        $vehicle->districtname = $request->input('districtname');
        $vehicle->townname = $request->input('townname');
        $vehicle->brandname = $request->input('brandname');
        $vehicle->modelname = $request->input('modelname');
        $vehicle->modelyear = $request->input('year');
        $vehicle->condition = $request->input('condition');
        $vehicle->milage = $request->input('milage');
        $vehicle->detail = $request->input('data');
        $vehicle->price = $request->input('price');
        $vehicle->telephone = $request->input('telephone');
        $vehicle->categoryname =  $request->input('categoryname');
        $vehicle->transmission = $request->input('transmission');
        $vehicle->fueltype = $request->input('fueltype');
        $vehicle->enginecapacity = $request->input('enginecapacity');
        $vehicle->user_id = Auth::user()->id;

        $vehicle->save();

我的更新没问题。这是工作。但通过控制器验证,它不会更新。未经验证它正在工作。如何解决这个问题?这有什么问题?

【问题讨论】:

  • 也许您传入的数据根据​​您给出的规则无效?
  • 我只验证输入请求没有任何规则
  • 在你的刀片上试试这个,看看它会呈现什么@if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif

标签: php laravel laravel-5.6


【解决方案1】:

试试这种验证格式:

$validatedData = $request->validate([
    'provincename'     => 'required|min:3',
    'districtname'    => 'required',
    'townname'    => 'required',
    'brandname'    => 'required',
    'modelname'    => 'required',
    'year'    => 'required',
    'condition'    => 'required',
    'milage'    => 'required',
    'data'    => 'required',
    'price'    => 'required',
    'telephone'    => 'required',
    'categoryname'    => 'required',
    'tramsmission'    => 'required',
    'fueltype'    => 'required',
    'enginecapacity'   => 'required'
]);

编辑

不要忘记使用验证器。在namespace之后添加use Validator;

【讨论】:

  • 发生此错误消息 1/1) BadMethodCallException 方法验证不存在。
  • 使用laravel的validor:use Validator;namespace之后添加
  • 提莫从联盟出发?大声笑
  • 是的。然后我发现了一只口袋妖怪。我会抓住你的。
  • 这个答案和 OP 的代码完全一样,只是写法不同。 Laravel 控制器包含验证作为特征,这就是为什么当您扩展控制器时可以使用 $this->validate$request->validate( 执行相同的步骤,因为您还需要包含验证。请在此处阅读:laravel.com/docs/5.7/validation
猜你喜欢
  • 1970-01-01
  • 2018-08-21
  • 1970-01-01
  • 2020-05-05
  • 2013-08-07
  • 2018-11-15
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多