入口脚本 http://www.yiichina.com/doc/guide/2.0/structure-entry-scripts
应用主体 http://www.yiichina.com/doc/guide/2.0/structure-applications
1. 在启动yii时,入口脚本是应用启动流程中的第一环,一个应用(不管是网页应用还是控制台应用)只有一个入口脚本。
网页应用: 通过web服务器(浏览器)进行访问时运行的机制, 配置文件: ./web/index.php
控制台应用: 通过命令行(cmd/terminal)进行访问时运行的机制, 配置文件: ./yii
该入口脚本作用(具体内容查看官网):
定义全局常量;
注册 Composer 自动加载器;
包含 Yii 类文件;
加载应用配置;
创建一个应用实例并配置;
调用 yii\base\Application::run() 来处理请求。
2. 在入口脚本中
$config = require(__DIR__ . ‘/../config/web.php‘);
(new yii\web\Application($config))->run();
指明了应用运行时先访问web.php文件,执行完该文件才会执行我们想要执行的控制器(controller)
3. 在web.php中我自己添加了两个属性
‘defaultRoute‘ => ‘home‘,
‘modules‘ => [
‘home‘ => ‘app\home\Module‘(这是自己创建的文件夹和初始文件,用来测试使用)
]
modules(模块): 即将某个文件作为该应用包含的模块,在应用初始化时会同时加载。
defaultRoute: 默认应用访问某个模块, 当未添加该属性时,web应用默认显示app\controllers\SiteController::actionIndex() 的结果, 控制台应用默认 yii\console\controllers\HelpController::actionIndex()
这里设置该属性,访问Module文件
4. 进入Module文件
<?php namespace app\home; class Module extends \yii\base\Module { public $defaultRoute = ‘test‘; public function init() { parent::init(); } }
需要继承\yii\base\Module使用框架自带的方法初始化
$defaultRoute: 设置改文件(home)下的控制器文件(controller)下的某个文件为默认文件
init: 根据defaultRoute对默认文件进行加载
5. 进入TestController文件:
class TestController extends Controller { public $defaultAction = ‘test‘; public $enableCsrfValidation = false; public function behaviors() { return ArrayHelper::merge([ [ ‘class‘ => Cors::className(), ‘cors‘ => [ // ‘Access-Control-Allow-Origin‘ => [‘*‘], ‘Origin‘ => [‘http://localhost:1024‘], ‘Access-Control-Request-Method‘ => [‘get‘], ‘Access-Control-Allow-Credentials‘ => true, ], ], ], parent::behaviors()); } public function actionTest(){ $controllerName = Yii::$app->controller->id; $actionName = Yii::$app->controller->action->id; return $this->asJson($controllerName); // return $this->asJson(‘yii run successfully in test method!‘ + $controllerName); } }
$defaultAction: 默认加载某个方法
这里基本初始化完成, 可以在TestController中设置,将URL与controller下的action一一对应来实现前后端的交互.