使用 Laravel-Admin 实现后台管理文章跳转至前端文章详情页面功能

admin 阅读:187 2024-03-04
先上效果图: 在许多网站和应用程序中,管理者需要在后台管理界面对文章进行编辑和管理。在 Laravel 框架中,Laravel-Admin 提供了一个功能强大且易于使用的后台管理解决方案。本文将介绍如何利用 Laravel-Admin 实现在后台管理界面中点击文章链接跳转至前端文章详情页面的功能。

环境准备

在开始之前,确保已经安装了 Laravel 和 Laravel-Admin,并且配置好了数据库连接。

代码实现

第一步:编写重定向控制器

<?php

namespace App\Admin\Controllers;

use App\Models\Article;
use Encore\Admin\Controllers\AdminController;
use Illuminate\Http\Request;

class RedirectController extends AdminController
{
    public function redirectToArticle(Request $request, $articleId)
    {
        // 从请求中获取 site_id 参数
        $siteId = $request->input('site_id');

        // 根据 site_id 查询对应的域名
        $domain = WebsiteConfigList::where('site_id', $siteId)->value('domain');

        // 根据文章 ID 查询文章信息
        $article = Article::findOrFail($articleId);

        // 根据文章分类 ID 查询分类信息,并生成分类别名字典
        $cat_ids = [$article->id, $article->parent_id];
        $category_dict = ArticleCategory::table('article_categories')
            ->select('id', 'alias')
            ->where('site_id', $siteId)
            ->whereIn('id', $cat_ids)
            ->pluck('alias', 'id')
            ->toArray();

        // 构建 URL 路径
        $url = '';
        if ($article->pid && isset($category_dict[$article->pid])) {
            $url .= '/' . $category_dict[$article->pid];
        }
        if ($article->cid && isset($category_dict[$article->cid])) {
            $url .= '/' . $category_dict[$article->cid];
        }
        $url .= '/' . $articleId . '.html';

        // 拼接目标 URL 地址
        $url = 'https://' . $domain . $url;

        // 将用户重定向到目标 URL 地址
        return redirect()->away($url);
    }
}

第二步:定义路由

<?php

use App\Admin\Controllers\RedirectController;
use Illuminate\Support\Facades\Route;

Route::get('/redirect/{articleId}', [RedirectController::class, 'redirectToArticle'])->name('redirect');

第三步:在后台管理界面添加链接

$grid->column('111', '发布预览')->display(function () {
    $url = admin_url('/redirect/'.$this->id); // 假设该路由对应了 `redirectToArticle` 方法
    return "<a href='{$url}' target='_blank'>查看详情</a>";
});

总结

通过以上步骤,我们成功地实现了在 Laravel-Admin 后台管理界面中点击文章链接跳转至前端文章详情页面的功能。这样,管理者可以方便地在后台管理界面预览和管理文章,并且能够快速地查看文章的详细信息。
声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!