ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php – 检查POST请求是否有空字段的Laravel方法是什么?

2019-07-27 03:31:09  阅读:309  来源: 互联网

标签:php laravel laravel-5 validation postdata


要求是更新用户角色.角色可以为空(留空),一个或多个,如表单字段roles []中所提供.

这是视图形式:

@foreach ($roles as $role)
  <div class="checkbox">
     <label><input name="roles[]" type="checkbox" value="{{$role->id}}" {{ $user->roles->contains($role->id) ? 'checked' : '' }}>{{$role->name}}</label>
  </div>
@endforeach

UserController :: update()中的条件是:

if ($request->roles) {
    // update user roles
}

除了一个案例,一切正常.有时用户必须没有任何角色.

if($request-> roles),isset($request-> roles)和!empty($request-> roles)..都给出了相同的老式回复(null,”,true / flase ).

案例:当分配了一个或多个角色时:

  +request: ParameterBag {#41 ▼
    #parameters: array:6 [▼
      "_method" => "PUT"
      "_token" => "a8oIPQFBMbhjanikX8v83qeOcfRE0N4UKTcTQDig"
      "name" => "New User Name"
      "email" => "newuser@testserver.asap"
      "password" => ""
      "roles" => array:2 [▼
        0 => "2"
        1 => "3"
      ]
    ]
  }

案例:当没有分配角色或需要删除(分离)先前分配的角色时:

  +request: ParameterBag {#41 ▼
    #parameters: array:5 [▼
      "_method" => "PUT"
      "_token" => "a8oIPQFBMbhjanikX8v83qeOcfRE0N4UKTcTQDig"
      "name" => "New User Name"
      "email" => "newuser@testserver.asap"
      "password" => ""
    ]
  }

所以问题(要求)是:

如何区分HTML Post表单的字段值是否已提交为空(在此处未选中)或视图表单中是否存在此类字段?
在Laravel中是否有一种雄辩的方法来从Request对象中查找/列出表单文件?

[PS:尝试另一个隐藏的领域或做一些前端jQuery将不被赞赏]

解决方法:

您需要在应用程序的设计中识别此问题.

How to differentiate when the field value of an HTML Post form has been submitted as empty(unchecked here) or if there was no such a field in the view form? Is there an eloquent* way in Laravel to find/list the form fileds from the Request object?

该形式何时不应该有角色[]字段?您应该有一个标记,告诉您的应用程序该表单没有roles []字段.

类似的是,当普通用户更新他/她的个人资料时使用此表单时,他/她将无法更新他/她的角色.

因为您的问题确实是表单的默认行为,如本问题所述:Submit an HTML form with empty checkboxes

因此,对于没有角色字段和具有角色字段的表单的不同过程的表单,将存在不同的过程.

要添加到您的实现,您可以检索角色字段,如下所示:

$roles = $request->input('roles', []);

之后,您可以使用同步到模型的关系方法.

$user->roles()->sync($roles);

标签:php,laravel,laravel-5,validation,postdata
来源: https://codeday.me/bug/20190727/1550047.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有