【问题标题】:Laravel Validator fails everytime even i has posted data每次我发布数据时,Laravel 验证器都会失败
【发布时间】:2021-10-17 06:35:01
【问题描述】:

我是 laravel 的新手,正在尝试使用 Validator 类。尽管表单发布数据,但每次都会失败。我已经用谷歌搜索并挖掘了很多以从互联网上获得答案,但没有一个对我有用。请大家帮我解决这个问题。

这是我的控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Validator;

class AuthenticationController extends Controller
{
    //
    public function login()
    {
        return view('login');
    }
    public function register()
    {
        return view('register');
    }
    public function addUser(Request $request)
    {
        $Validator=Validator::make($request->all(),array('fname'=>'required'));
        if($Validator->fails())
        {
            return redirect()->back()->withInput()->withErrors($Validator->messages());
        }
    }
    
}

这是注册刀片视图文件

<!DOCTYPE html>
<html>
<head>
  <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<!------ Include the above in your HEAD tag ---------->
  <title>Login</title>
</head>
<body>


<div class="wrapper fadeInDown">
  <div id="formContent">
    <!-- Tabs Titles -->
                   
  <!-- Login Form -->
    <form method="POST" action="{{url('/register.submit')}}">
      <input type="text" id="first-name" class="fadeIn second" name="
      fname" placeholder="First Name">
      @if($errors->has('fname'))
      <div class="alert-danger">
      {{$errors->first('fname')}}
      </div>
      @endif
      @csrf
      
      <input type="text" id="last-name" class="fadeIn second" name="
      lastname" placeholder="Last Name">
      @if($errors->has('last_name'))
      <div class="alert-danger">
      {{$errors->first('last_name')}}
      </div>
      @endif

      <input type="text" id="email" class="fadeIn second" name="
      email" placeholder="Email">
      @if($errors->has('email'))
      <div class="alert-danger">
      {{$errors->first('email')}}
      </div>
      @endif
      
      <input type="password" id="password" class="fadeIn third" name="login" placeholder="password">
      @if($errors->has('password'))
      <div class="alert-danger">
      {{$errors->first('password')}}
      </div>
      @endif

      <input type="password" id="confirm-password" class="fadeIn third" name="confirmpassword" placeholder="Confirm Password">
      @if($errors->has('confirm_password'))
      <div class="alert-danger">
      {{$errors->first('confirm_password')}}
      </div>
      @endif

      <input type="submit" class="fadeIn fourth" value="Register">
    </form>

    <!-- Remind Passowrd -->
    <div id="formFooter">
      <a class="underlineHover" href="{{url('login')}}">Already have account SignIn</a>&nbsp;&nbsp;&nbsp;
      <a class="underlineHover" href="{{url('forget_password')}}">Forget Password</a>
    </div>

  </div>
</div>
</body>
</html>

【问题讨论】:

  • 如果我们像 if($validator->fails()){ return $request->all()} 这样编码,它会显示所有已发布的数据在提交表单时已填满。跨度>
  • 它甚至会击中您的addUser 方法吗?您有一个 URL /register.submit,确定这不是路由名称吗?它是否映射到您的 addUser 方法?我们可以看到你的路线吗?
  • 这是我定义的路由 Route::post('/register.submit','AuthenticationController@addUser')->name('register.submit');
  • name=" fname" 实际上是在两行吗?
  • @brombeer 你打对了,实际上它是从 sublime 自动换行的,而我像 name='fname' 在新行中手动扭曲并测试了它的工作正常!!!

标签: laravel laravel-8 laravel-validation


【解决方案1】:

实际上进入视图文件编辑器 sublime 已经像

<input type="text" id="first-name" class="fadeIn second" name="
      fname" placeholder="First Name">

所以(我希望如此)当我编辑代码时,laravel 将其视为 name='fname'

<input type="text" id="first-name" class="fadeIn second" 
    name="fname" placeholder="First Name">

      

修改后一切正常。

【讨论】:

    【解决方案2】:

    确保您的name 属性实际上在一个 行中,并且不要分布在两行中。在此处的代码标签中显示这些将导致: name=" fname"

    当您在 HTML 中显示此类字符串时,您很可能会看到空格被去除,但 PHP/Laravel 将其识别为空格,因此您的验证失败。

    【讨论】:

      猜你喜欢
      • 2020-12-06
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多