也许我错过了一些东西,但我无法弄清楚如何做到这一点。
我有一个索引视图,列出了我的层表中的所有记录。该页面有一个“创建新层”按钮,用于显示表单。用户输入新层的数据并点击提交按钮。在我的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(或其他东西)?
由于
答案 0 :(得分:0)
我不认为你可以操纵用户的浏览历史而不诉诸Javascript或其他东西。当然不是单独使用Laravel。 所以,不要。你是在思考这个问题。你为什么如此关心浏览器的历史?你为什么要操纵它,以免它反映用户实际经历的页面?它有点挫败了历史的目的......
如果您的应用导航足够直观且熟悉,则用户不会觉得需要使用本机浏览器的后退/前进按钮。不要认为你的用户会犯最基本的浏览错误,除非你有数据支持它。
话虽如此,约定在这个问题上没有给你太多选择:通常你要么引导用户回到索引 - 即Redirect::route('tiers.index')
- 或者新引导的项目 - 即{{ 1}}。两者都完全可以接受,并且肯定在用户的预期结果范围内。
如果Redirect::route('tiers.show', $tier->id)
是用户只能在一定限度内添加的内容(每个用户一个,每个类别一个,每天一次等),那么我会尝试将他从创建页面重定向,以防止他填写了一份不会通过验证的新表格。否则,请选择上面的其中一个页面,然后继续进行下一个开发挑战。