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

如何在Laravel页面中展示最近创建的页面?

在自定义页面展示最近创建的页面的解决方案

我来帮你搞定这个问题!核心问题是你没有把“最近页面”的数据从控制器传递到前端视图,所以才会出现变量未定义的错误。按照下面的步骤操作就能解决:

1. 修改前端页面控制器(page方法)

你的page.blade.php视图是由page方法返回的,所以要在这里获取最近创建的页面数据,然后传递给视图。修改后的代码如下:

public function page($slug) { 
    $page = MenuPage::where('slug',$slug)->firstOrFail(); 
    // 获取最近创建的5个页面,按创建时间倒序排列
    $recentPages = MenuPage::take(5)->latest()->get();
    // 把当前页面和最近页面数据一起传递给视图
    return view('pages.page', compact('page', 'recentPages')); 
}
  • 小提示:take(5)表示只取5条数据,你可以根据需求调整这个数字;latest()默认按created_at字段倒序排序,如果你的表中存储创建时间的字段名不是这个,可以改成latest('your_custom_date_field')。

2. 在page.blade.php中渲染最近页面

现在你可以在视图的任意位置(比如侧边栏、页面底部)添加这段代码来展示最近页面:

<div class="recent-pages-section">
    <h3>最近创建的页面</h3>
    <ul>
        @foreach($recentPages as $recentPage)
            <li>
                <a href="{{ route('page', $recentPage->slug) }}">{{ $recentPage->title }}</a>
            </li>
        @endforeach
    </ul>
</div>
  • 注意事项:确保你的路由已经命名为page,如果还没命名,路由定义应该是这样的:
    Route::get('/page/{slug}', [YourControllerName::class, 'page'])->name('page');
    
    如果不想用命名路由,也可以直接写URL:href="/page/{{ $recentPage->slug }}"

为什么之前会报错?

你之前把后端管理页面的@foreach($pages as $page)代码放到了page.blade.php,但前端的page控制器并没有传递$pages变量(后端的index方法才会传递这个变量给管理页面),所以才会出现Undefined variable: pages的错误。现在我们传递的是专门用于展示最近页面的$recentPages变量,就不会有这个问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:39:47