【问题标题】:How can I redirect with old input in Laravel?如何在 Laravel 中使用旧输入重定向?
【发布时间】:2015-07-12 05:08:29
【问题描述】:

我有一个登录模式。当用户登录身份验证失败时,我想重定向回此模式:

  • 错误消息
  • 和旧输入。


控制器

// if Auth Fail 
return Redirect::to('/')
                ->with('error','Username/Password Wrong')
                ->withInput(Request::except('password'))
                ->withErrors($validator);

表格

{!! Form::open(array('url' => '/', 'class' => 'login-form')) !!}

  <div class="form-group">
    <label for="username">Username</label>
    <input type="text" class="form-control"  id="username" name="username" placeholder="Enter Username" required>
  </div>
  <div class="form-group">
    <label for="password">Password</label>
    <input type="password" class="form-control" id="password" name="password" placeholder="Enter Password" required>
  </div>
  <button type="submit" class="btn btn-primary">Login</button>

{!! Form::close() !!}

正如您在我的图片中看到的那样,似乎显示了错误消息,但似乎没有填充用户名的旧输入。

有人可以纠正我吗? 我忘了做什么吗? 在 Laravel 中完成这样的事情最有效的方法是什么?

【问题讨论】:

    标签: php forms laravel laravel-5 blade


    【解决方案1】:

    试试这个

     return redirect()->back()
           ->with('error','username is invalid')
           ->withInput();
    

    确保您的输入元素中有value="{{ old('username') }}"

    【讨论】:

      【解决方案2】:

      对于我的项目,我需要另一种方式:

      在验证返回中插入一个GET 请求以获取一些以前的数据:

         // if the validator fails, redirect back to the form
          if ($validator->fails()) {
              //let's send some data back (Orlando,Florida):
              return Redirect::to('auth/register?city=Orlando&State=Florida')
                  ->withErrors($validator)
      
      
          }else{
           //validation success
          }
      

      【讨论】:

        【解决方案3】:

        您可以像这样访问最后的输入:

        $username = Request::old('username');

        正如@Arian Acosta 所指出的,您可以简单地这样做

        &lt;input type="text" ... value="{{ old('username') }}" ... &gt;.

        docs 中所述,在刀片视图中更方便。


        控制器中有几种可能性:

        而不是 -&gt;withInput(Request::except('password'))

        做:

        a) Input::flash();

        或:

        b) Input::flashExcept('password');

        并使用以下命令重定向到视图:

        a) -&gt;withInput(Input::except('password'));

        分别。与:

        b) -&gt;withInput();

        docs about Old Input 供进一步阅读...

        【讨论】:

        • 您的解决方案对我有用。我现在可以显示我的旧输入。非常感谢。
        • 请起飞Request::flash();我不需要这样做。
        • 很高兴我能帮上忙。是的,因为Request::except('password') 已经做到了。
        • old() 也是全局的,不需要使用 Request::old('username')。只需执行 value="{{ old('username') }}"
        • Input::flash() 很酷,当您使用“请求 POST 路由后重定向到 GET 路由的名称是什么 - 再次 HTTP 模式?”啊PRG模式
        【解决方案4】:

        您缺少输入元素上的值...

        value="{{ Input::get ('username', '') }}"
        

        【讨论】:

        • 这行不通!我试过&lt;input type="text" class="form-control" id="username" name="username" placeholder="Enter Username" required value="{{ Input::get ('username', '') }}" &gt;,但似乎什么都没有。
        猜你喜欢
        • 2019-12-23
        • 2016-06-12
        • 2015-09-13
        • 2022-11-24
        • 2017-06-23
        • 2015-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多