【问题标题】:Laravel flash messages failLaravel Flash 消息失败
【发布时间】:2016-03-07 08:19:29
【问题描述】:

我正在使用 laravel 5.1 和 flash 消息。我想在验证器失败时向用户显示一条消息。

我的代码如下所示:

/* 
    Validation
*/

$rules = array(
    'username'  => 'alpha_numeric_spaces|required|min:3|max:12|not_in:edit,password|unique:users,username', 
    'email'     => 'email|unique:users,email', 
    'password'  => 'required|min:6|confirmed',
    'rules'     => 'required|'

);

$validator = Validator::make(Input::all(), $rules);

if ($validator->fails()) {
    flash()->error($validator->messages());
    return redirect()->back()->withInput();
}

但我收到错误消息的错误文本:

{
    "username": ["The username has already been taken."],
    "email": ["The email has already been taken."]
}

我的问题是:我收到格式错误的消息。

"username": ["用户名已经被占用。"],

而不是

用户名已被占用。

问题图片: HERE

【问题讨论】:

  • 您需要在刀片中使用 foreach。
  • @Tommy,如果我的回答有帮助,请点赞并选择最佳答案,以感谢我的时间。

标签: php laravel flash-message


【解决方案1】:

尝试在您的控制器中使用Session::flash

Session::flash('error', $validator->messages());

在你的刀片模板中还有Session::get()

@if (Session::has('error'))
    <div class="alert alert-warning" align="center">{{ Session::get('error') }}</div>
@endif 

这应该可以,但是如果您仍然遇到完全相同的错误,请尝试迭代:

@foreach (Session::get('error') as $er => $errorMessage )
    {{ $errorMessage[0] }}
@endforeach

【讨论】:

  • 感谢您的回答。问题是我收到格式错误的消息““用户名”:[“用户名已被使用。”],而不是“用户名已被使用”。
  • 如果您得到的对象与您的帖子中的对象相同,则添加的代码应该可以工作。请尝试我的代码并告诉我它是否有效。
  • 如果您在控制器中使用Session:: 并在视图中使用@foreach 代码,您将无法获得相同的消息。你会看到另一种错误(因为错误的迭代逻辑)或者它会起作用,但你永远不会得到{ "username": ["The username has already been taken."], "email": ["The email has already been taken."] }
猜你喜欢
  • 2022-10-26
  • 2015-11-18
  • 2021-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 1970-01-01
相关资源
最近更新 更多