You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.8中Voyager Translator分页调用时links方法不存在如何解决

问题原因

当你直接对paginate()返回的LengthAwarePaginator实例调用translate()方法时,Voyager的Translatable逻辑会将整个分页实例转换为自定义的翻译集合类,丢失了原分页实例的分页相关方法(包括links()),因此会报方法不存在的错误。

解决方案

推荐两种适配Laravel 5.8环境的实现方式,都可以保留原分页器的功能同时完成数据翻译:

  • 方式1:通过through方法直接处理分页项(写法更简洁)
    直接在分页实例上调用Laravel分页器自带的through方法,对每个数据项单独做翻译,不会修改分页器本身结构:
$data = Post::where('status', 1)->paginate(15)->through(function ($item) {
    return $item->translate();
});
  • 方式2:单独提取分页集合做转换
    先获取分页实例,再对其中的数据集合做翻译替换:
// 先获取分页实例
$data = Post::where('status', 1)->paginate(15);
// 对分页内的集合做翻译处理后替换回去
$data->setCollection($data->getCollection()->map(function ($item) {
    return $item->translate();
}));

完成上述处理后,你在Blade视图中就可以正常调用$data->links()渲染分页链接,同时每个数据项也已经完成了翻译。

内容的提问来源于stack exchange,提问作者Aagiidu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:00:03