use*_*183 3 php flash-message twitter-bootstrap laravel laravel-5
我有一个问题.我正在使用Laravel构建一个应用程序,在我上传图片的页面上,我需要一条闪存成功消息,说明您已成功上传新图片.当我上传,它工作,显示Flash消息,但当我刷新,或我转到其他页面时,消息仍然保留在那里.然后在另一次刷新后它消失了.在其他页面上,例如创建新帖子,flash消息可以正常工作,而无需在刷新或转到其他页面后显示.我正在使用imageintervention.io api上传图片,我提到它是因为我不希望你对代码感到困惑.
public function update_avatar(Request $request)
{
// Handle the upload of avatar
if ($request->hasFile('avatar'))
{
$avatar = $request->file('avatar');
$filename = time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(300, 300)->save( public_path('/uploads/avatars/' . $filename ) );
$user = Auth::user();
$user->avatar = $filename;
$user->save();
Session::flash('success', 'You have successfully uploaded new picture!');
}
return view('pages.profile', array('user' => Auth::user()) );
}
Run Code Online (Sandbox Code Playgroud)
lag*_*box 12
您不应该在执行此操作后返回视图.您应该返回一个重定向到GET路由,在那里您将显示该视图(view - pages.profile).这是POST重定向GET流程.
闪烁数据仅在NEXT请求中可用.您正在显示视图的同一请求中闪烁.这就是刷新然后显示flash消息的原因,因为刷新导致新请求,这是下一个请求.
你真的不应该有一个方法来进行表单处理和显示视图,因为它会引起混乱.
有一个方法可以执行重定向到显示视图的路径的处理.您可以同时闪烁和重定向.
return redirect()->route(...)->with('success', ....);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2228 次 |
| 最近记录: |