crowprince 2016-08-06 15:48:11 4974次浏览 0条评论 2 1 0

一、应用中
1.每个应用有一个由yii\base\Application::defaultRoute属性指定的默认控制器;当请求没有指定 路由,该属性值作为路由使用。 对于yii\web\Application网页应用,它的值为 'site', 对于 yii\console\Application控制台应用,它的值为 help, 所以URL为http://hostname/index.php 表示由 site 控制器来处理。
可以在 应用配置 中修改默认控制器,如下所示:

[
    'defaultRoute' => 'main',
]

2.控制器部署
可通过配置 yii\base\Application::controllerMap 来强制上述的控制器ID和类名对应, 通常用在使用第三方不能掌控类名的控制器上。
配置 应用配置 中的application configuration,如下所示:

[
    'controllerMap' => [
        // 用类名申明 "account" 控制器
        'account' => 'app\controllers\UserController',

        // 用配置数组申明 "article" 控制器
        'article' => [
            'class' => 'app\controllers\PostController',
            'enableCsrfValidation' => false,
        ],
    ],
]

3.默认操作
每个控制器都有一个由 yii\base\Controller::defaultAction 属性指定的默认操作, 当路由 只包含控制器ID, 会使用所请求的控制器的默认操作。
默认操作默认为 index,如果想修改默认操作, 只需简单地在控制器类中覆盖这个属性,如下所示:

namespace app\controllers;

use yii\web\Controller;

class SiteController extends Controller
{
    public $defaultAction = 'home';

    public function actionHome()
    {
        return $this->render('home');
    }
}

二、模块中
1.可配置yii\base\Module::controllerNamespace属性来自定义控制器类的命名空间, 如果一些控制器不再该命名空间下,可配置yii\base\Module::controllerMap属性让它们能被访问, 这类似于 应用主体配置 所做的。

2.和访问应用的控制器类似,路由 也用在模块中控制器的寻址, 模块中控制器的路由必须以模块ID开始,接下来为控制器ID和操作ID。 例如,假定应用使用一个名为 forum 模块, 路由forum/post/index 代表模块中 post 控制器的 index 操作, 如果路由只包含模块ID,默认为 default 的yii\base\Module::defaultRoute 属性来决定使用哪个控制器/操作, 也就是说路由 forum 可能代表 forum 模块的default 控制器。
改变defaultRoute的值既可以改变默认控制器
跟多文章:http://blog.csdn.net/lx_96?viewmode=contents

觉得很赞
    没有找到数据。
您需要登录后才可以评论。登录 | 立即注册