yii2如何设置默认控制器

Posted

技术标签:

【中文标题】yii2如何设置默认控制器【英文标题】:How to set the default controller in yii2 【发布时间】:2014-10-29 05:54:13 【问题描述】:

我有UserControler,我在虚拟服务器http://basic.com/index.php?r=user/index 中运行它。当我转到http://basic.com 时,如何将UserController 和操作index 设置为默认值

【问题讨论】:

你试过什么?你用谷歌搜索过这个:larryullman.com/2013/02/18/… 【参考方案1】:

您是否尝试过您的配置:

'defaultRoute' => 'user/index'

Default Controller

【讨论】:

我如何在控制器中设置默认值?例如,如果登录将另一个默认路由器【参考方案2】:

这可以在配置中设置,见Default Controller:

[
    'defaultRoute' => 'main',
]

但请注意,这与路由密切相关,完全可以通过urlManager组件自定义。那么如果你想让domain/profile 表现得像domain/user/profile 那么urlManager 的这些规则可能是另一种方法:

'rules' => array(
    '<action:\w+>' => 'user/<action>', // <-- use UserController by default
    '<controller:\w+>/<id:\d+>' => '<controller>/view',
    '<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
    '<controller:\w+>/<action:\w+>' => '<controller>/<action>',
),

希望这会对某人有所帮助:)

【讨论】:

【参考方案3】:

使用 yii2 我可以在 urlmanager 中使用:

'rules'=> [
        ['pattern'=>'<action>', 'route'=>'controller/<action>'],
]

【讨论】:

【参考方案4】:

这不是问题的答案,但了解以下内容可能会有所帮助: yii\web\Application 中有一个 catchAll 属性,定义为:

指定一个控制器动作的配置应该处理所有用户请求。

用法:

'catchAll' => ['controller/action']

所以,对http://basic.com 的每个请求都会调用controller/action

【讨论】:

【参考方案5】:

就像很少有人说的那样,您需要在配置文件中添加defaultRoute。 以下是它的外观:

//config/web.phpbasic 模板或 backend/config/main.phpadvanced

$config = [
    ...
    'components' => [
        ...
    ],
    'params' => $params,
    'defaultRoute' => 'user/index',
];

【讨论】:

【参考方案6】:

尝试其他解决方案...如果它们不起作用,请使用我的简单技巧...

只需在根目录下创建一个 index.php 页面。

然后,在该文件中,编写以下代码:

return header('Location: http://your page location');

【讨论】:

【参考方案7】:

从您的配置文件夹中打开web.php 文件,并添加以下内容:

'defaultRoute' =&gt; 'admin'

到您的$config 数组。

【讨论】:

【参考方案8】:

请注意,当strictParsingurlManager 配置中设置为启用时,defaultRoute 将被忽略。参考GitHub上的问题:https://github.com/yiisoft/yii2/issues/5892

建议使用以下配置作为衡量标准:

[
    ...
    'defaultRoute' => 'default/index',
    ...
    'urlManager' => [
        'enablePrettyUrl' => true,
        'enableStrictParsing' => true,
        ...
        'rules' => [
            ...
            '' => '',   // <- this line should be added
        ],
    ],
    ...
]

【讨论】:

【参考方案9】:

如果“defaultRoute”不起作用 - 检查“urlManager”的设置。也许那里设置了默认路由。

'urlManager' => [
        'enablePrettyUrl' => true,
        'showScriptName' => false,
        'rules' => [

            '' => 'site/index',  // this line should be chenged to ''=>''.

            '<controller:\w+>/<action:\w+>/' => '<controller>/<action>',
        ],
    ],

【讨论】:

以上是关于yii2如何设置默认控制器的主要内容,如果未能解决你的问题,请参考以下文章

yii2开发后记

Yii2.0开发初学者必看

给yii2框架的dropDownList设置默认值

yii 关于如何改变默认访问的控制器(site)

在Yii2 gridview中禁用分页

RESTful 响应如何在 Yii2 中返回 JSON 而不是 XML?