【问题标题】:laravel error messages not display after first redirection第一次重定向后不显示 laravel 错误消息
【发布时间】:2019-05-09 11:58:15
【问题描述】:

如果传入的请求参数没有通过给定的验证规则,我将用户重定向回上一页。 即使会话中存在验证错误消息,它们也不会在第一次重定向后显示。 当我再次刷新页面时,会显示错误消息。

Blade
@if ($errors->any())
    <div class="alert alert-danger alert-dismissible fade show" role="alert">
      <ul>
          @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
          @endforeach
      </ul>   
      <button type="button" class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">&times;</span>
      </button>
    </div>
@endif




Controller    
public function index()
{
    $this->validation();
    $perpage = request()->input('perpage',10);
    $perpage = $perpage<10 ? 10 : $perpage; 

    $musics = Music::where('title','like','%'.request()->input('title').'%')->paginate($perpage);

    $page = request()->input('page',1);
    $page_count = intval(ceil($musics->total()/$perpage));
    if($page < 1 || (!empty($page_count) && $page > $page_count)){
        return redirect(request()->fullUrlWithQuery(['page' => 1]));
    }

    return view('admin.musics.index',
        [
            'musics'=>$musics,
            'perpage'=>$perpage,
            'page'=>$page,
            'page_count'=>$page_count
        ]);
}

private function validation()
{
    $validator = Validator::make(request()->all(), [
        'title' => 'nullable|max:255',
        'page' => 'numeric|min:1',
        'perpage' => 'numeric|min:10|in:10,20,30,50,100,200,300,500,1000'

    ]);

    if ($validator->fails()) {
        return back()
                ->withErrors($validator)
                ->withInput();
    }
}

例如,在第一张图片中,您看到参数perpage 应该是数字 10,20,30,50,100,200,300,500,1000 之一是 22,所以会发生错误,会话中存在错误消息但它不是显示!

在第二张图片中,我更正了参数perpage并刷新页面,现在显示错误!


我意识到redirect 不起作用。 当验证失败时,重定向不起作用! 为什么会发生? 我的路线规则是:

Route::namespace('Admin')->prefix('admin')->group(function(){

    Route::get('musics','MusicsController@index');

});

我将 return back() 更改为 return redirect()-&gt;back() and return Redirection::back() ,但它不起作用!
有什么问题?
重点是我使用一页(我的意思是它不像插入动作,我有两个方法,创建方法和存储方法,我不想将表单提交到中间页面然后返回)。

【问题讨论】:

  • 使用return redirect-&gt;back()-&gt;withErrors($validator)-&gt;withInput(); 而不是return back()-&gt;...
  • @ajafari 我改了,但问题没有解决。

标签: php laravel validation redirect


【解决方案1】:

试试

return Redirect::back()
->withErrors($validator)
->withInput(); 

【讨论】:

  • 我改了,但问题没有解决。
猜你喜欢
  • 1970-01-01
  • 2014-12-31
  • 2016-10-11
  • 1970-01-01
  • 2016-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多