yii 控制器的默认行为的修改(路由默认行为的修改)

一、应用中
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的值既可以改变默认控制器

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值