📜  Gii-生成控制器(1)

📅  最后修改于: 2023-12-03 14:41:24.602000             🧑  作者: Mango

Gii-生成控制器

介绍

Gii是一个支持生成代码的Web版工具,包括生成模型、控制器、视图、表格CRUD操作、表单、模板、测试,简化了我们的开发流程。本文将介绍如何使用Gii生成控制器。

安装Gii

在Web应用程序的配置文件中,您需要启用Gii并设置安全密钥。默认情况下,Gii被集成在Yii中,所以不需要单独安装。

config/web.php中添加以下代码:

if (YII_ENV_DEV) {
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
        'allowedIPs' => ['127.0.0.1', '::1']
    ];
}

以上代码将Gii配置在开发环境下。确定只在可靠的IP地址下使用Gii,以确保生成的代码和敏感数据不会泄漏。

生成控制器

在浏览器中输入网址http://yourdomain.com/gii,进入Gii工具页面。

在顶部菜单中选择“Generator”,然后在下拉菜单中选择“Controller Generator”。

在弹出页面中,输入生成控制器的相关信息,如控制器ID、模型类、基础名称空间等,并选择要生成的操作。

点击“Preview”预览内容,并进行必要的修改。最后点击“Generate”即可生成控制器。

<?php

namespace app\controllers;

use Yii;
use app\models\Post;
use app\models\PostSearch;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;

/**
 * PostController implements the CRUD actions for Post model.
 */
class PostController extends Controller
{
    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['post'],
                ],
            ],
        ];
    }

    /**
     * Lists all Post models.
     * @return mixed
     */
    public function actionIndex()
    {
        $searchModel = new PostSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

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

    /**
     * Displays a single Post model.
     * @param integer $id
     * @return mixed
     * @throws NotFoundHttpException if the model cannot be found
     */
    public function actionView($id)
    {
        return $this->render('view', [
            'model' => $this->findModel($id),
        ]);
    }

    /**
     * Creates a new Post model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     * @return mixed
     */
    public function actionCreate()
    {
        $model = new Post();

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        }

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

    /**
     * Updates an existing Post model.
     * If update is successful, the browser will be redirected to the 'view' page.
     * @param integer $id
     * @return mixed
     * @throws NotFoundHttpException if the model cannot be found
     */
    public function actionUpdate($id)
    {
        $model = $this->findModel($id);

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        }

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

    /**
     * Deletes an existing Post model.
     * If deletion is successful, the browser will be redirected to the 'index' page.
     * @param integer $id
     * @return mixed
     * @throws NotFoundHttpException if the model cannot be found
     */
    public function actionDelete($id)
    {
        $this->findModel($id)->delete();

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

    /**
     * Finds the Post model based on its primary key value.
     * If the model is not found, a 404 HTTP exception will be thrown.
     * @param integer $id
     * @return Post the loaded model
     * @throws NotFoundHttpException if the model cannot be found
     */
    protected function findModel($id)
    {
        if (($model = Post::findOne($id)) !== null) {
            return $model;
        }

        throw new NotFoundHttpException('The requested page does not exist.');
    }
}

以上代码是一个由Gii生成的基础控制器。它包含了常用的CRUD操作,并使用了Yii的一些核心特性,如模型、过滤器和异常处理。

总结

Gii是Yii框架的一个重要工具,可以大大减少我们的开发时间和工作量。掌握Gii的使用方法,可以让我们更加高效地开发Web应用程序。