Laravel框架可以开发各种不同类型的项目,内容管理系统(Content Management System,CMS)是一种比较典型的项目,常见的网站类型(如门户、新闻、博客、文章等)都可以利用CMS进行搭建。CMS用于对信息进行分类管理,将信息有序、及时地呈现在用户面前,满足人们发布信息、获取信息的需求,保证信息的共享更加快捷和方便。本学期将讲解如何使用Laravel框架开发内容管理系统。
(1)对外只提供一个入口,public/index.php。
(2)采用MVC设计模式
(3)支持Composer依赖管理工具,可以为项目自动安装依赖包。
(4)采用OPM方式操作数据库
(5)注重代码的模块化和可扩展性
(6)自带各种方便的服务
(7)具有路由功能
(8)提供Artisan命令行工具
(1)本项目分为前台和后台。前台的功能包括用户登录与注册、内容列表、内容详细页、广告展示、评论和热门内容等。
前台页面:
后台登录页面:
(2)后台在未登录的状态下会自动跳转至登录页面。输入用户名“admin”、密码“123456”和验证码后,单击“登录”按钮,即可进行登录。
(3)登录后,页面顶部右侧显示了当前登录的用户名“admin”和“退出”按钮,单击“退出”按钮即可退出后台系统。
(4)后台页面的左侧有一个菜单栏,用户可以在菜单栏中选择一个菜单项进行操作。
项目中需要使用到的技术点包括文件上传、分页和会话技术。整个项目开发基于实现功能的步骤来完成,先实现后台开发,提供数据支持,再完成前台的数据展示。
(1)在C:\web\apache2.4\htdocs\cms目录下打开终端,执行如下命令,安装Laravel。
composer create-project --prefer-dist laravel/laravel ./ 5.8.*
(2)Laravel安装完成后,在Apache的conf\extra\httpd-vhosts.conf配置文件中创建一个虚拟主机。然后,编辑Windows系统的hosts文件,添加一条解析记录“127.0.0.1 cms.test”。
(3)在本书的配套源代码包中,将内容管理系统的前台和后台的静态资源复制到项目对应的目录下。
(4)登录MySQL服务器,创建数据库cms,将cms作为内容管理系统的数据库。
(5)打开项目,在config\database.php数据库配置文件中,将数据库名称修改为cms。
(6)在.env文件中配置正确的数据库配置信息。完成上述步骤后,即可在项目中访问数据库。
app:应用目录,保存项目中的控制器、模型等
bootstrap:保存框架启动的相关文件
config:配置文件目录
database:数据库迁移文件和数据填充文件
public:应用入口文件index.php和前端资源文件(如CSS、JavaScript等)
resources:存放视图文件、语言包和未编译的前端资源文件
routes:存放应用中定义的所以路由
storage:存放编译后的模板,Session文件、缓存文件、日志文件等
tests:自动化测试文件
vendor:存放通过Composer加载的依赖
(1)在命令行中创建迁移文件。
(2)在迁移文件的up()方法中添加表结构信息。
(3)迁移文件创建完成后,执行迁移。
(4)创建填充文件。
(5)打开AdminUserTableSeeder.php文件,在run()方法中编写填充代码。
(6)通过命令行执行填充文件。
(7)数据表创建成功后,执行创建模型命令。
(8)打开app\Admin.php,在模型中指定要操作的表名。
-- phpMyAdmin SQL Dump
-- version 5.1.0
-- https://www.phpmyadmin.net/
--
-- Host: localhost:8889
-- Generation Time: May 22, 2023 at 09:55 AM
-- Server version: 5.7.34
-- PHP Version: 7.3.29
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `mana`
--
-- --------------------------------------------------------
--
-- Table structure for table `adcontent`
--
CREATE TABLE `adcontent` (
`id` int(10) UNSIGNED NOT NULL COMMENT '主键',
`advid` int(11) NOT NULL COMMENT '广告位id',
`path` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '图片路径',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `adcontent`
--
INSERT INTO `adcontent` (`id`, `advid`, `path`, `created_at`, `updated_at`) VALUES
(17, 13, 'f0ff843fb6ed8ee1dfc2b67f4023757c.jpeg|fadf7171289819c7088012eac3bb04a0.jpeg|513c6cba999fcbcd9c1bc79d7d522d28.jpeg|1de45c99d10e9189584282fcebd04f88.jpeg', '2023-05-16 00:08:34', '2023-05-16 00:08:34');
-- --------------------------------------------------------
--
-- Table structure for table `admin_user`
--
CREATE TABLE `admin_user` (
`id` int(10) UNSIGNED NOT NULL COMMENT '主键',
`username` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
`password` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
`salt` char(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码salt',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `admin_user`
--
INSERT INTO `admin_user` (`id`, `username`, `password`, `salt`, `created_at`, `updated_at`) VALUES
(1, 'gx', '5231b3ad4d6ccc56b860bdd4cf6347db', '0460c4ba14ec265361197ce0bad0373f', NULL, NULL);
-- --------------------------------------------------------
--
-- Table structure for table `adv`
--
CREATE TABLE `adv` (
`id` int(10) UNSIGNED NOT NULL COMMENT '主键',
`name` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '广告位名称',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `adv`
--
INSERT INTO `adv` (`id`, `name`, `created_at`, `updated_at`) VALUES
(13, 'imgbox', '2023-05-16 00:02:59', '2023-05-17 17:35:27');
-- --------------------------------------------------------
--
-- Table structure for table `category`
--
CREATE TABLE `category` (
`id` int(10) UNSIGNED NOT NULL COMMENT '主键',
`pid` int(11) NOT NULL DEFAULT '0' COMMENT '父栏目id',
`name` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '栏目名称',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序值',
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
--
-- Dumping data for table `category`
--
INSERT INTO `category` (`id`, `pid`, `name`, `sort`, `