【问题标题】:Redirect back to form after checking values in Laravel在 Laravel 中检查值后重定向回表单
【发布时间】:2018-04-21 08:50:25
【问题描述】:

我有一个表单,它通过 POST 将数据发送到控制器函数,该函数显示一个视图,其中概述了用户输入的内容。我这个视图用户有 2 个选项 - 如果数据正常则保存数据或编辑它们。

有没有办法用输入重定向回来?我想不通,所以我在视图中使用带有隐藏输入的表单,该表单携带数据,然后通过 POST 方法将其发送到显示表单功能。但我认为这不是正确的方法,应该有更简单的东西。

谢谢

【问题讨论】:

标签: php forms laravel redirect controller


【解决方案1】:

你试过这个吗..?

public function store()
{
   //.....    

   return redirect()->back()->withInput();  
}

【讨论】:

    【解决方案2】:

    你可以使用

    back()->withInput();

    或者如果您想重定向到另一个 URL,请使用

    return Redirect::route('ROUTE.NAME')->withInput();

    【讨论】:

    • 好吧,这可以从控制器中调用...当我在视图中时我需要重定向
    【解决方案3】:

    这就是你要做的事情:

    • 假设用户想要保存数据并单击确定,您可以简单地将这些信息通过模型或通过查询构建器存储到数据库中

      DB::table('usersinput')->insert([
         ['email' => 'taylor@example.com', 'name' => 'taylor'],
         ['email' => 'dayle@example.com', 'name' => 'dayle']
      ]);
      
    • 假设用户单击编辑,然后您可以返回带有值的视图

      $email = "dayle@example.com";
      $name = "dayle";
      return view('welcome', compact('email', 'name'));
      
    • 在视图中您可以将输入值设置为数据

      <form>
        email:<br>
        <input type="text" name="{{ $email }}"><br>
        name:<br>
        <input type="text" name="{{ $name }}">
      </form>
      

    【讨论】:

    • 嗯,我不确定这个......我怎么能称之为“return view('welcome', compact('email', 'name'));”当我在一个视图中。或者我只是错过了一些东西
    • 你调用"return view('welcome', compact('email', 'name'));"通过控制器。
    • 但是怎么做呢?在控制器中,我从表单接收数据并将它们显示在视图中......所以我不再在控制器中,而是向可以单击“保存”或“编辑”的用户显示视图。所以必须有例如 导致另一个控制器方法或其他东西。对吗?
    • 当你点击编辑时,它会进入另一个控制器或视图吗?
    • 现在我这样做了:在视图中有一个隐藏的表单,其中包含所有数据,当您单击“保存”或“编辑”时,它通过 POST 请求将数据发送到控制器。它处理数据并显示视图。
    【解决方案4】:

    假设你使用的是 Laravel 5.5

    在阅读了 Nisarg Shah 回答的 cmets 之后,我想我会做的就是保存他在会话中首次传递的数据,并在最终保存之后(在编辑或按下保存按钮之后)从会话中删除数据。

    所以在我们到达你的控制器方法的第一个表单之后,在这里我们将数据保存到一个会话中并向用户显示一个他可以看到数据的视图,在这里你可以在某处打印带有{{ session('key') }} 的数据查看所有数据。

    用户现在可以选择编辑数据,然后编辑按钮将转到特定路线,在这里您将返回一个带有他可以编辑的表单的视图,然后在编辑后发布到另一条路线,您只需在其中保存数据正常。

    如果他在“确认”视图上按保存,您将再次使按钮转到特定 url,并在控制器方法中检索会话数据并将其保存到数据库中。

    【讨论】:

    • 哦,是的,这就是我要找的……谢谢 :)
    • 很高兴听到 :) 如果它解决了您的问题,请标记它。
    猜你喜欢
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 2017-03-15
    • 2015-05-17
    • 2015-05-22
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多