【YII控制器介绍和用法示例】在MVC结构中, 控制器的作用是处理来自用户的请求并生成响应。传入的请求由控制器进行分析, 传递到模型, 将模型结果定向到视图中, 最后生成响应。
控制器动作控制器包含用户调用以执行请求的动作。一个控制器可以有多个请求。
以下代码是一个示例, 其中包含两个更新和在控制器文件SiteController.php中创建的动作。
<
?php namespace frontend\controllers;
use Yii;
use frontend\models\Yiicrud;
use frontend\models\SearchYiicrud;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
/** * YiicrudController implements the CRUD actions for Yiicrud model. */ class YiicrudController extends Controller { /** * @inheritdoc */ public function behaviors() { return [ 'verbs' =>
[ 'class' =>
VerbFilter::className(), 'actions' =>
[ 'delete' =>
['POST'], ], ], ];
}public function actionUpdate($id) { $model = $this->
findModel($id);
if ($model->
load(Yii::$app->
request->
post()) &
&
$model->
save()) { return $this->
redirect(['view', 'id' =>
$model->
id]);
} else { return $this->
render('update', [ 'model' =>
$model, ]);
} } /** * Deletes an existing Yiicrud model. * If deletion is successful, the browser will be redirected to the 'index' page. * @param integer $id * @return mixed */ public function actionDelete($id) { $this->
findModel($id)->
delete();
return $this->
redirect(['index']);
}
查看上面的代码, 动作更新(actionUpdate()), 它将首先根据请求的ID加载模型, 然后尝试使用请求数据包括新的模型实例并保存模型。然后, 它将被重定向以查看具有模型ID的操作。否则, 它将返回更新操作。
动作删除(actionDelete()), 它将根据请求的ID加载模型, 然后将其删除。它将被重定向到索引动作。
路线
在Yii URL中, 你必须已经注意到有一个r。这是路线。
例如:http://localhost/index.php?r = site / index
在上面的示例中, 路由为站点/索引。
其中包括以下部分:
moduleID:仅当控制器属于非应用程序模块时才适用。
controllerID:一个字符串, 用于标识同一模块内所有控制器中的控制器。在上面的示例中, 它是站点。
actionID:一个字符串, 用于标识控制器中所有动作中的动作名称。在上面的示例中, 它是索引。
路由格式为:
ControllerID / ActionID
如果属于模块, 则采用以下格式:
ModuleID/ControllerID/ActionID
推荐阅读
- YII cookie介绍和用法示例
- Yii CRUD数据库操作实例图解
- Linux安装YII详细步骤图解(最全面)
- Yii2快速安装简要步骤
- YII教程入门介绍
- Yii项目结构详细解释
- 使用Charles对Android App的https请求进行抓包
- Android ANR 分析
- Android activity间通讯几种方式