📅  最后修改于: 2023-12-03 14:41:24.602000             🧑  作者: Mango
Gii是一个支持生成代码的Web版工具,包括生成模型、控制器、视图、表格CRUD操作、表单、模板、测试,简化了我们的开发流程。本文将介绍如何使用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应用程序。