Laravel 验证单个输入字段

Posted

技术标签:

【中文标题】Laravel 验证单个输入字段【英文标题】:Laravel validation for individual input fields 【发布时间】:2017-11-09 06:03:48 【问题描述】:

我在我的 jquery 中使用 ajax 调用将用户输入从我的刀片发送到我的控制器。

我有一个输入字段

<div class="col-md-3">
    <input type="text" class="form-control inputProfilePage" id="fname" name="fname" placeholder="First Name"
           value=" Auth::user()->fname ">
  </div>
  <div class="col-md-3">
    <input type="text" class="form-control inputProfilePage" id="lname" name="lname" placeholder="Last Name"
           value=" Auth::user()->lname ">
  </div>

fname 代表名字,lname 代表姓氏

在我的 jquery 中我有一个电话

$('.selectProfilePage').change(function()
          var val = $(this).val();
          var field = $(this).attr('id');
          updateProfilePage(val, field);
      );

field 是字段的名称,val 是用户输入的值。

updateProfilePage 是一个 ajax 调用

function updateProfilePage(val, field) 
          $.ajaxSetup(
              headers: 
                  'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
              
          );
          $.ajax(
              type: 'POST',
              url: '/userprofilepage',
              data: 
                  val: val,
                  field: field
              ,
              success: function (msg) 
                  console.log("Profile page has been updated:" + val);
              ,
              error: function (msg) 
                  console.log("Profile page has not been updated:" + msg);
              
          );
      

在我的路由文件中,这调用了我的 store 函数。我正在努力解决的是如何验证用户输入的值。这是我的控制器中的存储方法

 public function store(Request $request)
    
            $this->validate($request, [
                'val' => 'alpha'
            ]);
    

如果用户输入的不是字母,我想在刀片上打印一条错误消息。

我在刀片中添加了以下代码,但仍然没有出现错误

<div class="alert alert-error">
   <ul>
       @foreach($errors->all() as $error)
           <li>$error</li>
       @endforeach
   </ul>
</div>

那我做错了什么?如果用户在姓氏的名字的输入中输入任何非字母的内容,我希望在我的刀片中显示错误。

【问题讨论】:

【参考方案1】:

每次加载页面时服务器都会生成刀片语法,当您以 ajax 发送表单时,页面不会重新加载,要在警报框中添加错误我会这样做:(未测试)

function updateProfilePage(val, field) 
          $.ajaxSetup(
              headers: 
                  'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
              
          );
          $.ajax(
              type: 'POST',
              url: '/userprofilepage',
              data: 
                  val: val,
                  field: field
              
          ).done(function () 
                $('.alert').find('ul').append('<li>Profile page has been updated:' + data + '</li>');
          ).fail(function () 
                $('.alert').find('ul').append('<li>Profile page has not been updated:' + data + '</li>');
          ).always(function (e) 
                console.log(e);
          );
      

【讨论】:

以上是关于Laravel 验证单个输入字段的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5 & 在单个字段中验证多个电子邮件地址

Laravel:重复字段(和字段组):表单模型绑定

Laravel 验证数组迭代

laravel 中动态输入字段的验证

在使用 Laravel 进行验证期间检查输入中是不是存在字段

在 Laravel 5 中验证动态添加的输入字段