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

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

【问题讨论】:

标签: php yii yii2 config default


【解决方案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>',
                        ],
                    ],
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-01-02
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-05-23
                  • 2013-08-13
                  • 2014-12-13
                  • 2016-08-23
                  相关资源
                  最近更新 更多