YII控制器介绍和用法示例

【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

    推荐阅读