你应该阅读有关PHP 中的命名空间 http://php.net/manual/en/language.namespaces.php首先,了解一下 Yii 2 使用命名空间的风格以及它在您正在使用的特定应用程序(基本/高级)中的组织方式。
您想向控制器添加什么样的功能?大多数时候最好覆盖特定的控制器(例如对于网络,它将是yii\web\控制器 http://www.yiiframework.com/doc-2.0/yii-web-controller.html)而不是基类。
假设您使用的是基本应用程序,代码应如下所示:
基础控制器
namespace app\components;
class BaseController extends \yii\web\Controller
{
public function init()
{
parent::init();
}
}
用户控制器
namespace app\controllers;
class UserController extends \app\components\BaseController
{
public actionIndex()
{
// ...
}
}
Notice how UserController
正在扩展您的定制BaseController
。如果你做all您的应用程序的控制器扩展BaseController
,您可以在所有应用程序的控制器上拥有相同的特性/功能。
Why?说你想要你的entire frontend
需要登录。通常,您必须手动修改每个控制器中的规则。你could声明规则BaseController
使一切都需要登录,并排除login
, error
, signup
,以及您需要允许公众访问的任何其他页面。
对于 Yii2 的新手来说,还有一些事情应该知道。在“高级”模板中,您实际上有多个应用程序。 “前端”和“后端”是他们自己的应用程序。您实际上可以复制“frontend”(或“backend”)目录并将其命名为“mainsite”之类的名称,并拥有第三个应用程序(只需搜索“frontend”的所有实例并将其重命名为“mainsite”。在“environments”目录中,您可以复制前端,将其命名为“mainsite”并修改它以满足您的需求,因此可以通过以下方式合并它的文件init
如果需要的话。您确实还需要编辑environments/index.php
添加您自己的初始化环境。
“console”实际上也是一个应用程序,但不是用于 Web 访问,而是用于通过命令行访问,通常用于您自己的目的,例如处理 cron 作业或修剪旧数据。也许您提供网络托管,在“控制台”中您可以添加代码来创建他们的托管帐户。我很少使用控制台,但它很有用。
主要用于创建网站需要执行的后台和维护任务。
我想提的最后一件事是,你可以创建你自己的应用程序随你怎么便! Yii2 框架不是你的basic
or advanced
应用程序,它实际上在你的内部vendor
目录(通过 Composer 安装):) 您正在使用的文件实际上只是 Yii 为您布置内容的方式。按照他们的做法,您可以根据需要创建自己的文件结构。您可以废弃它,并从头开始创建您自己的 Yii 应用程序(根本不使用高级或基本!)。不要被限制于basic
or advanced
!