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
微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?