
是一种 PHP *** 应用程序框架,语法简洁明了。它有一个庞大的软件包库,可以处理编程中的许多繁琐工作,让你专注于发挥创造力。
Laravel 的一个创造性用途就是创建个人博客。本教程介绍如何使用 Laravel 创建并发布博客。
如需预览项目,请查看。
要学习本教程,请确保您具备以下条件:
确保 Apache 和 MySQL 模块服务正在 XAMPP 控制面板中运行。如果没有,请单击 “Actions” 栏中每个服务的 “Start” 按钮。您的 XAMPP 控制面板应该如下所示:

XAMPP 控制面板
默认情况下,MySQL/MariaDB 在端口 3306 上运行。如果要更改端口,请记录下来。
如果您使用的是 XAMPP 以外的 *** 服务器,请确保您运行的是 或其他服务器软件,并已在本地计算机上安装了 。
http://localhost/phpmyadmin/ 。应该会显示如下内容:
在浏览器中打开 phpMyAdmin。
phpMyAdmin 是用于 MySQL 和 MariaDB 的数据库管理工具。
Info 你可以使用任何数据库管理系统,但本教程使用的是 MariaDB,它与 Laravel 的连接与 MySQL 类似。两个数据库的 Laravel 配置是一样的。
现在可以开始使用 Laravel 创建博客了。在本教程中,我们使用的是一台运行在 windows 系统上的电脑。
laravel new blog 命令创建一个名为 blog 的 Laravel 项目。cd blog 命令打开项目的 blog 目录。php artisan serve 命令,检查是否成功创建了项目。
Laravel 欢迎页面
返回浏览器中的 phpMyAdmin,创建一个名为 blog 的数据库,从而创建并配置数据库。

在 phpMyAdmin 面板中创建数据库
DB_DATABASE 和 DB_PASSWORD 值更改为你创建的值。连接详情应如下所示:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=blog DB_USERNAME=your-db-username DB_PASSWORD=your-db-password
其他数据库连接细节与 .env 文件中的相同。如果在配置过程中更改了任何连接值,如将 DB_PORT 从 3306 改为 3307,请确保在 .env 文件中更新。
接下来,创建数据库模型并迁移更改。
php artisan make:model Post -mc ,创建一个名为 Post 的模型、一个名为 posts 的表、一个迁移文件和一个控制器。
通过命令行创建模型、迁移文件和控制器。
yyYY_MM_DD_ID_create_posts_table.php 。up() *** 中,创建一个包含 title, description, 和 image 属性的模式。public function up() {
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title')->nullable();
$table->text('description')->nullable();
$table->string('image')->nullable();
$table->timestamps();
});
}
php artisan migrate 迁移更改,如下图所示:
Laravel 数据库迁移

在 phpMyAdmin 中显示已迁移的文章表
添加视图和控制器可以实现数据库集的业务逻辑。视图是显示模型数据对象的用户界面。控制器管理模型和视图之间的数据执行流。
npm install ,然后运行 npm run dev 。之一条命令安装所需的 npm 软件包。第二条命令启动 Vite 开发服务器。index 控制器 *** 。该控制器 *** 向浏览器渲染一个简单的文本。为此,请在 PostController 类中添加以下代码:public function index() {
$post = "Laravel Tutorial Series One!";
return view('posts.index', ['post'=>$post]);
}
该 *** 将 $post 作为上下文变量传递给索引 Blade 模板的 views 部分。 $post 包含要显示的文本,这里显示 “Laravel Tutorial Series One!”。稍后你将用文章循环来替换它。
Blog
@yield('content')
Mini-Blog © 2023
通过使用此 HTML 代码,您可以导入 Bootstrap 5.2.3 版本和 Vite,以捆绑 JavaScript 和 CSS 资产。生成的页面有一个带导航栏的页眉和一个带脚本的页脚。在正文中,借助 @yield('content') ,动态内容会从其他 Blade 文件渲染而来。
posts 目录中包含用于执行创建和读取操作的 Blade 文件。
@extends('layouts.app')
@section('content')
Blog list
The Blog 1 - {{ $post }}
@endsection
该代码由布局页面上的 app.blade.php 文件扩展而来。在浏览器中呈现时,它会显示每篇博客文章的内容,以及从 layouts 文件夹中的 app.blade.php 文件继承的导航栏和页脚。在 section 标记之间,您可以传递控制器中的内容,以便在执行应用程序时在浏览器中呈现。
RouteServiceProvider 就能自动加载路由。 RouteServiceProvider 是负责加载应用程序路由文件的类。AppHttpControllersPostController 导入 PostController。Route::resource('posts', PostController::class); 来设置路由。php artisan serve 在终端执行应用程序。http://127.0.0.1:8000/posts ,查看新的博文列表。页面应如下所示:

在浏览器中显示博客应用程序
在下一节中,我们将定义用于显示所有文章、创建文章和存储文章的控制器 *** 。然后,在相应部分添加路由并创建刀片文件。
通过输入标题、添加描述和上传图片来 *** 博文。然后,按顺序显示博文。
post 类的 use HasFactory; 代码块下方,添加 protected $fillable = ['title', 'description', 'image']; 。这段代码将保护您的模型属性不被大量赋值。
use AppModelsPost; 导入 Post 模型。index and create controller methods created earlier in the PostController class with the code below:用下面的代码替换之前在 PostController 类中创建的 index 和 create 控制器 *** :// Show all posts
public function index() {
$posts = Post::orderBy('created_at', 'desc')->get();
return view('posts.index', ['posts' => $posts]);
}
// Create post
public function create() {
return view('posts.create');
}
在您刚刚创建的 index *** 中,PHP 应用程序会获取所有文章,按时间顺序排列,然后将它们存储到 posts 变量中。在返回视图中,文章作为上下文变量传入 views/posts 目录中的 index.blade.php 文件。如果用户尝试创建新帖, create *** 会返回 create.blade.php 文件,并将其放置在 views/posts 目录中。
store 控制器 *** (在数据库中存储博客文章)。将此代码添加到 PostController 类的 index 和 create 控制器 *** 下面。// Store post
public function store(Request $request) {
// validations
$request->validate([
'title' => 'required',
'description' => 'required',
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
]);
$post = new Post;
$file_name = time() . '.' . request()->image->getClientOriginalExtension();
request()->image->move(public_path('images'), $file_name);
$post->title = $request->title;
$post->description = $request->description;
$post->image = $file_name;
$post->save();
return redirect()->route('posts.index')->with('success', 'Post created successfully.');
}
store *** 会处理客户端关于其主体中数据的请求,因此它需要将 request 作为参数。下一步是验证创建 post 时使用的字段,并从 Post 模型中创建一个文章实例。然后将输入的字段数据分配给创建的实例并保存。页面将重定向到 index 视图,并显示 “Post created successfully” 的 Flash 文本。
在 web.php 文件中注册路由:
names([ 'index' => 'posts.index', 'create' => 'posts.create', 'store' => 'posts.store', 'show' => 'posts.show', ]);
该控制器使用这些路由来创建、存储和显示数据对象。
要创建视图,请回到 PostController 类:
@extends('layouts.app')
@section('content')
Add Post
@csrf
@if ($errors->any())
@foreach ($errors->all() as $error)
{{ $error }}
@endforeach
@endif
Title
Description
Add Image
Save
@endsection
在这段代码中,create.blade.php 使用 @extends('layouts.app') 继承了 layouts 目录中 app.blade.php 的内容。这些内容包括页眉、导航栏和页脚。在 h1 标签中添加 Add Post 文本后,使用包含 {{route('posts.store')}} 操作的 post *** 创建了一个表单。
enctype="multipart/form-data" 代码允许上传图片,而 csrf 可保护表单免受跨站攻击。然后,错误信息会显示无效的字段条目,并使用 field attributes 为表单创建标签和输入。
@extends('layouts.app')
@section('content')
Add Post
Mini post list
@if ($message = Session::get('success'))
{{ $message }}
@endif
@if (count($posts) > 0)
@foreach ($posts as $post)
{{$post->title}}
{{$post->description}}
@endforeach
@else
No Posts found
@endif
@endsection
这段代码添加了一个 Add Post 按钮。点击后,它将创建一个文章,并将任何数据传递到页面的正文中。 if 条件检查数据库中是否有数据。如果有数据,则通过。如果没有,则显示 “No Posts found”。
现在,您可以使用 php artisan serve 运行应用程序,创建并显示博客文章。打开 http://127.0.0.1:8000 ,页面应如下所示:

博客应用程序出现在浏览器中
如果您添加了一个文章,就会显示如下内容:

博客应用程序在浏览器中显示文章
使用 部署和测试您的 Laravel 应用程序:
在项目根文件夹中创建名为 .htaccess 的文件,并添加以下代码:
RewriteEngine On RewriteRule ^(.*)$ public/$1 [L]
这段代码会将应用程序请求重定向到部署中的 public/index.php。
为您的项目创建一个存储库并发布代码。您可以使用 GitHub、GitLab 或 Bitbucket 来托管您的代码并将其部署到 。
在 MyKinsta 上创建数据库:

在 MyKinsta 中创建数据库
详细信息包括 Database name, Display name, Database type, Version, Database username, Data center location, 和 Size。本演示使用 MariaDB 作为数据库,Size 为 Db3(1cpu/4GB 内存/10GB 磁盘空间,65 美元/月)。您可以根据具体需要选择数据库类型和大小。
将应用程序部署到 MyKinsta:

添加应用程序服务时的 MyKinsta 面板
MyKinsta 会将您重定向到 “Add Application” 页面。
数据库和应用程序托管后,将数据库连接到应用程序,然后构建并部署。
要连接数据库,请使用托管数据库的外部连接。在托管数据库的 “Info” 选项卡上,可以看到 External connections,如下图所示:

托管数据库的外部连接

托管数据库的环境变量
如果你考虑对手动编辑的 env 变量进行标记,以区别于其他变量,那么这张截图就很方便了。
APP_URL 是托管应用程序的 URL,DB_CONNECTION 是 mysql 。
接下来,添加一个迁移数据库的进程。
php artisan migrate --force 作为启动命令。pod 大小和实例可以保留默认值。Laravel 可以轻松快速地开发一个简单的博客。其快速的页面加载、强大的控制器架构和出色的安全性,让提高应用程序的性能变得轻而易举。同时,MyKinsta 可让您快速有效地发布和交付 *** 应用程序。MyKinsta 的灵活定价模式基于使用量,消除了隐性成本。
扫描二维码推送至手机访问。
版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。
宝塔面板现在已经成为国内许多站长必备的服务器管理必备工具。相比直接使用SSH+FTP来管理服务器,宝塔面板可以提供可视化管理,包括文件管理、数据库管理、数据备份、SSL配置等等。 如果你希望更简单高效地管理您的网站及服务器,宝塔面板是不错的选择。下面是一些宝塔面板安装及常见问题:...
Linux面板环境安装,主要支持LNMP和LAMP、Tomcat、node.js。不过对于大部分站长来说,主要是LNMP和LAMP两个环境的安装。 LNMP和LAMP两个环境的最大区别是,前者采用Nginx作为Web服务器,后者则采用Apache作为Web服务器。(选择哪个作为您的Web服务器,可...
使用宝塔面板,您可以快速地创建一个FTP管理账户,对网站文件进行管理。但有必要提醒大家的是,使用FTP远不如使用SFTP安全,你可以查看文章“”进一步了解两者之间的差异。 此外,宝塔面板的文件管理模块其实已经能够满足站长的大部分文件管理需求。当然,如果你非得要使用FTP管理服务器文件,可以参照以下...
宝塔的数据库管理,是基于phpmyadmin管理和新建数据库。其最大的便利性就是类似,通过面板可以快速访问进行管理操作,无需单独访问phpmyadmin的主页。 此外,在宝塔面板进行数据库管理,你也对数据库名、用户名及密码等信息一目了然,及可以对数据库执行快速备份或者导入。 添加数据...
宝塔面板设置主要涉及的是宝塔控制后台自身的参数,包括诸如面板的开关、自动更新及SSL、面板端口设置等。虽然这部分不涉及服务器自身的管理,但对宝塔面板的设置也有其重要。 特别是面板端口、安全入口及面板密码等涉及安全的参数设置。 启动和关闭面板 如果你长时间无需使用到宝塔面板,可以考虑...
经过几个小时的努力工作后,您是否感到眼睛疲劳或难以阅读代码?许多程序员在开始头疼之前从没想过要切换字体。 如果您经常发现在尝试扫描一千行代码时眼睛模糊不清,或者在停止编码数小时后头疼,那么可能是时候尝试一种新字体了。即使您没有遇到这些症状,设计良好的字体通常也比默认系统字体具有更好的可读性。...