Laravel项目搭建入门指南

本文将介绍Laravel的基础构建模块,并探讨如何使用Laravel搭建一个小型项目。

Laravel是一个强大而优雅的PHP Web应用框架,因其简单性、多样性和强大的功能而在开发者中获得了极高的流行度。多年来,Laravel已成为大小项目的优选PHP框架。

预备知识:开始使用Laravel

在深入Laravel开发之前,我们必须确保安装了所有必要的工具和软件。以下是我们需要的:

  • PHP。Laravel基于PHP运行,因此首先确保你的系统已安装PHP。如果不确定是否已安装,打开终端或命令提示符并输入php -v。如果已安装PHP,你将看到版本号。如果没有,则需要安装它。

    在你的机器上安装PHP,我们有几个选项:

    本地安装。你可以直接在你的电脑上安装PHP。访问PHP下载页面以获取适合你操作系统的最新版本。

    Laravel Homestead。为了更简化的设置,特别是如果你是PHP开发新手,可以考虑使用Laravel Homestead。Homestead是一个预打包的Vagrant盒子,为Laravel提供了一个完整的开发环境。你可以在这里找到安装指南

  • Composer。Laravel使用Composer进行依赖管理。Composer是PHP默认的依赖管理器,广泛使用且文档齐全。

  • Laravel安装器。我们可以通过Laravel安装器将Laravel全局安装在系统中,这是一个便捷的命令行工具,能简化创建新Laravel项目的过程。要在你的系统上全局安装它,请按照以下步骤操作:

    1. 打开终端或命令提示符。
    2. 运行以下Composer命令:
    composer global require laravel/installer
    

    安装完成后,确保Composer的全局bin目录已添加到系统的“PATH”中,这样你就能在任何位置运行laravel命令了。

    如果你偏好Homestead之外的轻量级替代方案,可以考虑Laravel Herd。Herd是一个专为Laravel项目定制的基于Docker的本地开发环境。你可以在这里了解更多关于Herd的信息以及如何设置它

通过配置PHP、Composer和Laravel安装器(或探索如Homestead或Herd等选项),你将为踏上Laravel之旅做好充分准备。接下来的章节,我们将详细介绍如何创建一个新的Laravel项目、探索其目录结构以及配置开发环境。

创建新的Laravel项目

环境准备就绪后,接下来是创建一个新的Laravel项目。要创建一个全新的“空白”项目,可以使用以下终端命令:

composer create-project --prefer-dist laravel/laravel project-name

project-name替换为实际的项目名称。此命令将下载最新版本的Laravel,并设置一个包含所有必要文件和依赖项的新项目目录。

目录结构:探索Laravel项目

创建新Laravel项目后,我们将面对一个组织良好的目录结构。理解这一结构对于高效开发Laravel应用至关重要。以下是一些关键目录及其用途的概述:

  • app目录包含了我们应用程序的核心逻辑,包括控制器、模型和服务提供者。
  • bootstrap目录存放了Laravel的引导和配置文件。
  • config目录中可以找到应用程序各个组件的配置文件,方便我们在项目中统一查找和定制设置,如数据库连接和服务等。
  • Database目录用于定义Laravel的Eloquent ORM所需的数据库迁移和种子数据,Eloquent简化了数据库管理。
  • public目录存放公开访问的资源,如CSS、JavaScript和图片,还包括应用程序的入口点index.php文件。
  • resources目录存储应用程序的原始、未编译的资源,如Blade模板、Sass和JavaScript。
  • routes目录管理Laravel的路由配置。
  • storage目录用于存储临时文件、缓存和日志。
  • vendor目录由Composer管理,存放项目的依赖包,所有下载的库都会存放在此目录中。

配置部分:数据库设置和环境变量

要配置数据库连接,我们需要在项目根目录中打开.env文件。在此文件中,我们可以指定数据库类型、主机、用户名、密码和数据库名称。得益于Eloquent ORM,Laravel支持多种数据库连接,使其适用于各种项目需求。

理解.env文件

.env文件是我们定义特定环境配置值的地方,如数据库连接详情、API密钥及其他设置。以下是一个.env文件中可能出现的简单示例:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=my_username
DB_PASSWORD=my_password

在此示例中:

  • DB_CONNECTION指定我们使用的数据库驱动类型(如MySQL、PostgreSQL、SQLite)。
  • DB_HOST指定数据库服务器所在的主机。
  • DB_PORT指定数据库服务器运行的端口。
  • DB_DATABASE指定我们想要连接的数据库名称。
  • DB_USERNAMEDB_PASSWORD指定访问数据库所需的用户名和密码。

使用环境变量

确保敏感信息如数据库凭据的安全至关重要。Laravel推荐使用环境变量来实现这一点。我们不应在.env文件中硬编码凭据,而应在配置文件中引用它们。

例如,在我们的Laravel配置文件中(位于config/目录下),我们可以这样引用数据库配置:

'mysql' => [
    'driver' => env('DB_CONNECTION', 'mysql'),
    'host' => env('DB_HOST', '127.0.0.1'),
    'port' => env('DB_PORT', '3306'),
    'database' => env('DB_DATABASE', 'forge'),
    'username' => env('DB_USERNAME', 'forge'),
    'password' => env('DB_PASSWORD', ''),
    // ...
],

这里,env()函数从.env文件中检索指定环境变量的值。如果找不到该变量,它会回退到作为第二个参数提供的默认值。

通过使用配置文件,我们可以将敏感数据存储在更安全的位置,并轻松地在不同环境(如开发和生产)之间切换配置。

随着Laravel项目的创建、目录的组织和数据库的配置,我们准备好开始构建我们的Web应用程序了。在接下来的章节中,我们将专注于路由、控制器以及使用Blade模板来构建前端视图。

路由、控制器和视图:Laravel应用程序的核心

在Laravel中,路由、控制器和视图协同工作,以处理HTTP请求并渲染动态网页。理解这些概念对于使用Laravel创建Web应用程序至关重要。

简而言之,HTTP请求由路由接收,路由知道应由哪个控制器处理该操作。控制器负责处理信息,并通过视图展示处理后的信息。

路由

在Laravel中,我们可以在routes/web.php文件中定义路由。一个基本的路由定义如下所示:

Route::get('/welcome', function () {
    return view('welcome');
});

此示例设置了一条路由,当访问时,将返回welcome视图。如前所述,路由还可用于调用控制器动作,从而更高效地组织代码。

创建控制器

控制器作为路由与应用逻辑之间的桥梁。要创建控制器,可使用make:controller命令:

php artisan make:controller YourControllerName

新控制器包含对应于应用中不同动作的方法,例如显示页面或处理表单数据。

视图与Blade模板

Laravel中的视图负责向用户展示应用数据。默认情况下,Laravel使用名为Blade的模板引擎,简化了动态、可复用视图的创建。以下是在控制器方法中渲染视图的示例:

public function index()
{
    $data = ['name' => 'John'];
    return view('welcome', $data);
}

在此例中,welcome视图通过数据进行渲染,这里'name'被传递给它。

Blade是一个功能强大的模板引擎,支持通过条件语句、循环等创建动态内容。

数据库迁移与填充

Laravel的数据库迁移与填充系统使我们能够定义数据库架构并填充初始数据。可以将迁移视为版本控制的数据库变更,而填充则是添加示例数据的过程。

迁移和填充是确保不同环境下数据库一致性的强大工具。

创建迁移时,可使用make:migration命令:

php artisan make:migration create_table_name

随后编辑生成的迁移文件以定义表结构,并使用Artisan执行迁移:

php artisan migrate

填充常用于为测试和开发初始化数据。创建填充器可使用make:seeder命令并通过以下方式运行:

php artisan db:seed

为数据库交互创建模型

Laravel的Eloquent ORM通过允许我们像操作对象一样操作数据库,简化了数据库交互。创建模型可使用make:model命令:

php artisan make:model YourModelName

在模型中定义表和关系,以便轻松检索和操作数据。例如,从users表检索所有记录:

$users = YourModelName::all();

掌握了这些知识,包括路由、控制器、视图、数据库迁移、填充和模型,我们就能顺利使用Laravel构建动态Web应用。接下来的章节中,我们将深入探讨如何创建一个简单的CRUD应用,并探索Laravel的更多高级特性。

在Laravel中创建简单的CRUD应用

让我们通过构建一个CRUD应用来提升Laravel的学习之旅——在这个例子中,我们将创建一个简单的书籍注册应用,允许我们创建、读取、更新和删除书籍。这个实践练习将帮助我们理解如何在Laravel中实现CRUD操作。

鉴于本文篇幅,我们将只关注创建应用的初始页面,因此完成这个应用的任务就交给你了!

步骤1:为书籍表创建迁移

要为books表生成迁移,请使用以下命令:

php artisan make:migration create_books_table

此命令生成一个迁移文件,用于在数据库中创建books表。接下来,编辑我们刚创建的迁移文件(database/migrations/YYYY_MM_DD_create_books_table.php),定义表结构:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateBooksTable extends Migration
{
    public function up()
    {
        Schema::create('books', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->string('author');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('books');
    }
}

在此迁移文件中,我们定义了books表的结构,包括其列(idtitleauthortimestamps)。然后,我们需要运行迁移以创建表:

php artisan migrate

此命令执行迁移文件,并在数据库中创建books表。

步骤2:为书籍表创建填充器

接下来,我们要为books表生成一个填充器,以便用一些初始数据填充它:

php artisan make:seeder BooksTableSeeder

此命令生成一个填充器文件,用于用初始数据填充books表。

编辑填充器文件(database/seeders/BooksTableSeeder.php),定义示例书籍数据:

use Illuminate\Database\Seeder;

class BooksTableSeeder extends Seeder
{
    public function run()
    {
        DB::table('books')->insert([
            ['title' => 'Book 1', 'author' => 'Author A'],
            ['title' => 'Book 2', 'author' => 'Author B'],
            ['title' => 'Book 3', 'author' => 'Author C'],
        ]);
    }
}

在本种子文件中,我们定义了将被插入到books表中的示例书籍数据。在此特定情况下,我们创建了编号从1到3的书籍和字母从A到C的作者。

运行种子文件以填充books表:

php artisan db:seed --class=BooksTableSeeder

此命令执行种子文件,并将定义的示例数据填充到books表中。

步骤3:创建控制器

为管理书籍生成一个控制器:

php artisan make:controller BookController

此命令生成一个控制器文件(BookController.php),其中包含处理与书籍相关的CRUD操作的方法。控制器创建完成后,让我们专注于在BookController中实现CRUD方法。该控制器位于app/Http/Controllers/BookController.php

use App\Book; // 导入Book模型

public function index()
{
    $books = Book::all();
    return view('books.index', compact('books'));
}

public function create()
{
    return view('books.create');
}

public function store(Request $request)
{
    $book = new Book;
    $book->title = $request->input('title');
    $book->author = $request->input('author');
    $book->save();

    return redirect()->route('books.index');
}

// 类似地实现edit、update、show和delete方法

在该控制器文件中,我们定义了处理与书籍相关的CRUD操作的方法。例如,index方法从数据库检索所有书籍,并将它们传递给index视图,而store方法根据通过表单提交的数据创建新的书籍记录。create()方法负责显示创建新书籍记录的表单。当用户导航到与此方法关联的路由时,Laravel将执行此函数并返回名为books.create的视图。

步骤4:创建视图

在`resources/views`目录下创建用于列出、创建和编辑书籍的视图。

示例视图(`create.blade.php`):

@extends('layout')

@section('content')
  <h1>Create a New Book</h1>
  <form method="POST" action="{{ route('books.store') }}">
    @csrf
    <div class="form-group">
      <label for="title">Title</label>
      <input type="text" name="title" class="form-control" id="title" placeholder="Enter book title">
    </div>
    <div class="form-group">
      <label for="author">Author</label>
      <input type="text" name="author" class="form-control" id="author" placeholder="Enter author name">
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>
  <a href="{{ route('books.index') }}">Back to the list</a>
@endsection

在此示例中,`create`视图包含一个用于添加新书籍的表单。该表单将数据提交给`BookController`的`store`方法。`@csrf`指令生成一个CSRF令牌,以防止跨站请求伪造。

通过这个示例,你应该能够自行实现控制器的方法和视图,以完成剩余的CRUD操作,所以开始动手吧!

结论

在本文中,我们探讨了Laravel应用程序的基础:如何使用命令行帮助我们构建应用程序,Laravel应用程序的结构,以及如何在Laravel中创建一个CRUD应用程序。

I hope this article was useful and that you’re now capable of using Laravel to create your applications and expand the information here with more advanced topics. More information on Laravel can be found at the official Laravel website.

Source:
https://www.sitepoint.com/laravel-project-setup-beginners-guide/