📅  最后修改于: 2023-12-03 15:21:21.235000             🧑  作者: Mango
Yii 控制器是一个基于 PHP 的 Web 应用程序框架。它充分利用了最新的 PHP 技术和最佳的性能实践,以提高开发人员的生产力和 Web 应用程序的质量。Yii 框架的核心组件包括 MVC(模型-视图-控制器)架构、图像处理、模板引擎、表单验证和数据库抽象。其中,控制器(Controller)是其 MVC 架构的一个关键组件之一。
控制器是一个处理请求并生成响应的 PHP 类。它充当 Model 和 View 中间的协调者,负责将输入的请求路由到正确的处理方法(即 Action)中,并将处理后的结果返回给 View 展示。在 Yii 的 MVC 架构下,控制器通常保存在 controllers
文件夹下。
控制器是一个 PHP 类,通常应该具有以下结构:
yii\web\Controller
或其子类,以获得更多的功能和操作方法。action[MethodName]()
,例如 actionIndex()
。下面是一个简单的控制器示例:
<?php
namespace app\controllers;
use yii\web\Controller;
class SiteController extends Controller
{
public function actionIndex()
{
return $this->render('index');
}
}
render()
render()
方法用于渲染一个视图文件并输出结果,接受一个字符串参数,指定要渲染的视图文件的路径。如果不指定,将默认渲染与控制器的处理方法同名的视图文件。
public function actionIndex()
{
return $this->render('index');
}
redirect()
redirect()
方法用于将用户重定向到另一个 URL 地址,接受一个字符串参数,指定要重定向的 URL 地址。
public function actionLogin()
{
if ($this->checkLogin()) {
return $this->redirect(['/user/profile']);
} else {
return $this->render('login');
}
}
asJson()
asJson()
方法用于将数据以 JSON 格式输出给客户端,接受一个参数,指定要输出的数据。
public function actionApi()
{
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
return $this->asJson(['message' => 'Hello, World!']);
}
get()
get()
方法用于获取 GET 请求参数,接受一个字符串参数,指定要获取的参数名称。
public function actionSearch()
{
$keyword = Yii::$app->request->get('keyword');
// ...
}
过滤器是一种在控制器处理方法之前或之后执行的代码块,它可以用于增强控制器的功能和安全性。在 Yii 中,过滤器使用注释来定义。下面是一个示例:
/**
* Class SiteController
* @package app\controllers
*
* @property Request $request
* @method string getUniqueId()
*/
class SiteController extends Controller
{
/**
* {@inheritdoc}
*/
public function behaviors()
{
return [
[
'class' => \yii\filters\HttpCache::class,
'only' => ['index'],
'lastModified' => function () {
return time();
},
'etagSeed' => function () {
return Yii::$app->user->id;
},
],
[
'class' => \yii\filters\AccessControl::class,
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
],
];
}
上面的代码定义了两个过滤器:HttpCache
和 AccessControl
。HttpCache
用于启用 HTTP 缓存,AccessControl
用于控制用户访问权限。
控制器是 Yii 框架 MVC 架构的核心组件之一,可以通过路由请求调用相应的处理方法来实现业务逻辑。控制器还可以使用过滤器来增强它的功能和安全性。熟悉 Yii 控制器的使用和常用操作,有助于开发高效、可靠、安全的 Web 应用程序。