Laravel在提交创建表单后重定向回列表

时间:2014-08-19 18:29:12

标签: php laravel-4

也许我错过了一些东西,但我无法弄清楚如何做到这一点。

我有一个索引视图,列出了我的层表中的所有记录。该页面有一个“创建新层”按钮,用于显示表单。用户输入新层的数据并点击提交按钮。在我的TierController中,我有以下内容:

public function store()
{
//
$data = Input::all();

$tier = new Tier();
$tier->name=$data['name'];
$tier->price = $data['price'];

$tier->save();

return Redirect::back()->with('message',"Tier created successfully.");
}

这会将我带回空的创建表单并显示消息,但是用户必须按下后退按钮才能返回索引视图,该视图在我点击刷新之前不会显示新数据。在使用刷新的数据单击提交按钮后,我希望系统自动返回到索引视图。

我知道我可以执行Redirect :: to('tiers.index') - > with('message','Tier created successfully')但我遇到的问题是浏览器历史记录看起来像

tier.index -> tier.create -> tier.index

当用户点击后退按钮时,这会让用户感到非常困惑,因为创建视图会显示出来并让他们感到厌烦。

有没有办法做一个不会在历史记录中留下tier.create视图并重新刷新索引数据的Redirect :: back(或其他东西)?

由于

1 个答案:

答案 0 :(得分:0)

我不认为你可以操纵用户的浏览历史而不诉诸Javascript或其他东西。当然不是单独使用Laravel。 所以,不要。你是在思考这个问题。你为什么如此关心浏览器的历史?你为什么要操纵它,以免它反映用户实际经历的页面?它有点挫败了历史的目的......

如果您的应用导航足够直观且熟悉,则用户不会觉得需要使用本机浏览器的后退/前进按钮。不要认为你的用户会犯最基本的浏览错误,除非你有数据支持它。

话虽如此,约定在这个问题上没有给你太多选择:通常你要么引导用户回到索引 - 即Redirect::route('tiers.index') - 或者新引导的项目 - 即{{ 1}}。两者都完全可以接受,并且肯定在用户的预期结果范围内。

如果Redirect::route('tiers.show', $tier->id)是用户只能在一定限度内添加的内容(每个用户一个,每个类别一个,每天一次等),那么我会尝试将他从创建页面重定向,以防止他填写了一份不会通过验证的新表格。否则,请选择上面的其中一个页面,然后继续进行下一个开发挑战。