Laravel 拉威尔背部()->;withInput();不起作用

Laravel 拉威尔背部()->;withInput();不起作用,laravel,redirect,login,Laravel,Redirect,Login,我目前正在关注一个关于登录表单的视频教程。下面是在Auth::trument()失败的情况下使用的代码: 这将使用户返回表单并再次填写输入(电子邮件、密码)。但是,当登录正常工作时,字段保持为空 我怎样才能解决这个问题 这是我的表格: {!! Form::open(array('route' => 'handleLogin')) !!} <div class="form-group has-feedback"> {!! Form::tex

我目前正在关注一个关于登录表单的视频教程。下面是在Auth::trument()失败的情况下使用的代码:

这将使用户返回表单并再次填写输入(电子邮件、密码)。但是,当登录正常工作时,字段保持为空

我怎样才能解决这个问题

这是我的表格:

{!! Form::open(array('route' => 'handleLogin')) !!}
        <div class="form-group has-feedback">
            {!! Form::text('email', null, array('class' => 'form-control', 'placeholder' => 'EMail')) !!}
            <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
        </div>
        <div class="form-group has-feedback">
            {!! Form::password('password', array('class' => 'form-control', 'placeholder' => 'Password')) !!}
            <span class="glyphicon glyphicon-lock form-control-feedback"></span>
        </div>
        <div class="row">
            <div class="col-xs-8">
                <div class="checkbox icheck">
                    <label>
                        <input type="checkbox"> Remember Me
                    </label>
                </div>
            </div>
            <!-- /.col -->
            <div class="col-xs-4">
                {!! Form::token() !!}
                {!! Form::submit(null, array('class' => 'btn btn-primary btn-block btn-flat')) !!}
            </div>
            <!-- /.col -->
        </div>
        {!! Form::close() !!}

现成的Laravel提供了web和api中间件组,其中包含您可能希望应用于web UI和api路由的常见中间件: App/Http/Kernal.php

    protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
        'auth:api',
    ],
  ];

请看一下
web
,其中包含
StartSession
ShareErrorsFromSession
,它们负责会话处理,因此如果要显示验证错误或保留旧数据,则必须将其包括在中间件组中。在这种情况下,它的
web

开箱即用,Laravel提供了web和api中间件组,其中包含您可能希望应用于web UI和api路由的常见中间件: App/Http/Kernal.php

    protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
    ],

    'api' => [
        'throttle:60,1',
        'auth:api',
    ],
  ];
请看一下
web
,其中包含
StartSession
ShareErrorsFromSession
,它们负责会话处理,因此如果要显示验证错误或保留旧数据,则必须将其包括在中间件组中。在这种情况下,它的
web

尝试更改

return back()->withInput();

试着改变

return back()->withInput();


因此,正如我们所讨论的,问题在于
web
中间件。在以前的Laravel 5.2框架版本中,如果您想启用会话和错误变量,必须将路由封装在
web
中间件中

从版本
5.2.27
开始,情况不再如此,因为默认情况下,该中间件组已应用于所有路由

有意使用
5.2.27版或更高版本,并使用web中间件组,会导致这些变量出现问题,常见问题是会话变量未传递,以及类
\light\View\middleware\ShareErrorsFromSession
提供的
$errors
变量,设置了Laravel验证API返回的,但为空**

摘要

  • 如果您有Laravel 5.2.27及更高版本,则不需要将路由包装在
    web
    中间件组中
  • 如果版本低于该版本,则需要这样做,以便使用会话变量并获得验证错误
来源


  • 因此,正如我们所讨论的,问题在于
    web
    中间件。在以前的Laravel 5.2框架版本中,如果您想启用会话和错误变量,必须将路由封装在
    web
    中间件中

    从版本
    5.2.27
    开始,情况不再如此,因为默认情况下,该中间件组已应用于所有路由

    有意使用
    5.2.27版或更高版本,并使用web中间件组,会导致这些变量出现问题,常见问题是会话变量未传递,以及类
    \light\View\middleware\ShareErrorsFromSession
    提供的
    $errors
    变量,设置了Laravel验证API返回的,但为空**

    摘要

    • 如果您有Laravel 5.2.27及更高版本,则不需要将路由包装在
      web
      中间件组中
    • 如果版本低于该版本,则需要这样做,以便使用会话变量并获得验证错误
    来源


    您必须做出条件,如果表单返回时出现
    错误,则应填写该表单

    {{old('nom')}
    函数查找给定字段的前一个填充值
    ,并对其进行回显

    您可以按如下方式使用它:

    <div class="col-sm-8">
        <input type="text" 
               class="form-control form-control-sm @error('nom') is-invalid @enderror" 
               id="nom"
               name="nom"
               placeholder="Ecriver le nom votre ecole "
               value="{{old('nom')}}"
               >
    </div>
    

    如果表单返回时出现
    错误
    ,则必须填写该条件

    {{old('nom')}
    函数查找给定字段的前一个填充值
    ,并对其进行回显

    您可以按如下方式使用它:

    <div class="col-sm-8">
        <input type="text" 
               class="form-control form-control-sm @error('nom') is-invalid @enderror" 
               id="nom"
               name="nom"
               placeholder="Ecriver le nom votre ecole "
               value="{{old('nom')}}"
               >
    </div>
    
    
    
    您使用的是什么Laravel版本?@tiagor我使用的是Laravel 5.2。还使用我发现的内容编辑了我的问题。如果任何
    $this->validate()
    规则失败,您将立即重定向回。添加文档本节中包含的代码。如果显示任何内容,则表示正在触发validate(),这就是代码没有到达
    else
    的原因。我不能肯定,因为我不知道你定义了什么规则。另外,关于输入,在任何情况下,默认情况下,Laravel已经发回了输入,因此,你可以尝试添加
    old('email')
    ,看看它是否有效<代码>{!!Form::text('email',old('email'),array('class'=>'表单控件','placeholder'=>'email'))!!}
    @TiagoRL已经添加了此代码。没有得到任何错误。以下是我的规则:
    “email”=>“required”| email | exists:users、“password”=>“required”
    。很遗憾,old()也不起作用。提前谢谢。你用的是什么版本的Laravel?@Tiagor我用的是Laravel 5.2。还使用我发现的内容编辑了我的问题。如果任何
    $this->validate()
    规则失败,您将立即重定向回。添加文档本节中包含的代码。如果显示任何内容,则表示正在触发validate(),这就是代码没有到达
    else
    的原因。我不能确定,因为我不知道您定义了什么规则。另外,关于输入,在任何情况下,默认情况下,Laravel已经发回了输入,因此,您可以尝试添加
    old('email')
    ,看看我是否