返回

在创新的思维中,Yii2 也能搭建一个简单的 Todo List

后端

Yii 是一个功能强大的 PHP 框架,可以用来开发现代 Web 应用程序。它的组件化和高性能的特性,使得它成为构建复杂应用程序的理想选择。今天,我将以一个简单的 Todo List 系统作为例子,来带你体验 Yii 的开发过程。

搭建环境

在开始之前,你需要确保你的系统已经安装了以下软件:

  • PHP 7.2 或更高版本
  • Composer
  • MySQL 或 PostgreSQL 数据库
  • 一个文本编辑器或 IDE

安装 Yii

首先,你需要通过 Composer 来安装 Yii。你可以使用以下命令:

composer create-project --prefer-dist yiisoft/yii2-app-basic todo-list

这将创建一个名为 todo-list 的目录,其中包含了 Yii 的基本应用程序。

配置数据库

接下来,你需要配置数据库。你可以通过编辑 config/db.php 文件来完成。在这个文件中,你需要指定数据库的类型、主机名、用户名、密码和数据库名称。

例如,如果你使用的是 MySQL 数据库,你可以使用以下配置:

<?php

return [
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=localhost;dbname=todo-list',
    'username' => 'username',
    'password' => 'password',
    'charset' => 'utf8',
];

创建模型

现在,你需要创建一个模型来表示 Todo 项目。你可以通过在 models 目录下创建一个名为 Todo.php 的文件来完成。在这个文件中,你需要定义模型的属性和方法。

例如,你可以使用以下代码来定义 Todo 模型:

<?php

namespace app\models;

use yii\db\ActiveRecord;

class Todo extends ActiveRecord
{
    public $id;
    public $title;
    public $description;
    public $status;

    public static function tableName()
    {
        return 'todos';
    }

    public function rules()
    {
        return [
            [['title', 'description'], 'required'],
            [['status'], 'default', 'value' => 0],
        ];
    }
}

创建控制器

接下来,你需要创建一个控制器来处理 Todo 项目的请求。你可以通过在 controllers 目录下创建一个名为 TodoController.php 的文件来完成。在这个文件中,你需要定义控制器的动作和方法。

例如,你可以使用以下代码来定义 Todo 控制器:

<?php

namespace app\controllers;

use app\models\Todo;
use yii\web\Controller;

class TodoController extends Controller
{
    public function actionIndex()
    {
        $todos = Todo::find()->all();

        return $this->render('index', ['todos' => $todos]);
    }

    public function actionCreate()
    {
        $todo = new Todo();

        if ($todo->load(Yii::$app->request->post()) && $todo->save()) {
            return $this->redirect(['index']);
        }

        return $this->render('create', ['todo' => $todo]);
    }

    public function actionUpdate($id)
    {
        $todo = Todo::findOne($id);

        if ($todo->load(Yii::$app->request->post()) && $todo->save()) {
            return $this->redirect(['index']);
        }

        return $this->render('update', ['todo' => $todo]);
    }

    public function actionDelete($id)
    {
        $todo = Todo::findOne($id);
        $todo->delete();

        return $this->redirect(['index']);
    }
}

创建视图

最后,你需要创建视图来显示 Todo 项目。你可以通过在 views 目录下创建以下文件来完成:

  • index.php:用于显示 Todo 项目列表
  • create.php:用于创建新的 Todo 项目
  • update.php:用于更新现有