繁体   English   中英

如何在yii2中设置默认控制器

[英]How to set the default controller in yii2

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

您是否尝试过配置:

'defaultRoute' => 'user/index'

默认控制器

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

//config/web.php 基本模板中的//config/web.php高级模板中的backend/config/main.php

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

可以在配置中设置,请参见默认控制器

[
    'defaultRoute' => 'main',
]

但是请注意,这与路由密切相关,路由可以完全由urlManager组件自定义。 然后,如果您要假设domain/profile的行为类似于domain/user/profileurlManager这些规则可能是另一种方法:

'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>',
),

希望这会帮助某人:)

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

'defaultRoute' => 'admin'

到您的$config数组。

在此处输入图片说明

使用yii2,我可以使用以下命令在urlmanager中做到这一点:

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

这不是问题的答案 ,但可能会有所帮助: catchAll yii\\web\\Application有一个catchAll属性,其定义为:

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

用法:

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

因此,对http://basic.com的每个请求都将调用controller/action

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

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

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

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

请注意,在urlManager配置strictParsing设置为enabled时,会忽略defaultRoute 请参阅GitHub上的问题: https : //github.com/yiisoft/yii2/issues/5892

建议使用以下配置作为措施:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM