我在laravel btw工作。
在控制器中,我在try / catch中有一些逻辑。逻辑是按ID查找用户。如果搜索到错误的ID,我想捕获并刷新页面,并显示错误消息,例如“该用户ID不存在”。
我知道我可以使用的三种方法是:back()
,Redirect::to('users')
和redirect()->route('users')
。
首先,我应该使用哪个?
其次,我已经尝试了每一个,但我得到的错误信息或者不是我想要的行为。
back()
我什么都没看到。我重定向到同一页面就好了。但是我使用back()->withInput(['error' => $error])
传递的数据没有显示在页面上。我的模板中有{{isset($error) ? $error : ''}}
,等待设置$ error变量。有没有不同的方法来做到这一点?更好的方式?
redirect()->to('users')
这与back()类似,因为它会重定向我,但我似乎无法将数据传递给页面。
redirect()->route('users')
这与back()类似,因为它会重定向我,但我似乎无法将数据传递给页面。
我想这是一个简单的问题。我刚接触php和laravel并且可以使用一点方向。
谢谢!
答案 0 :(得分:1)
使用输入验证如下所示
'id' => 'exists:users,id'
然后你可以做
return redirect('users')->withError($validator)
在登录表单中,您可以按
显示未找到电子邮件的消息$errors->first('id')
答案 1 :(得分:0)
redirect()->route('users')->with('error', "I have a error");
Session::get('error')
答案 2 :(得分:0)
您可以使用任何您想要的方法,我建议您使用back()
。
要传递错误消息,我正在使用:
Session::flash('error', 'Wrong ID')
在Blade
模板中,我使用的是:
@if (Session::has('error'))
<div class="alert alert-warning" align="center">{{ Session::get('error') }}</div>
@endif
完美无缺。