入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

YII2如何修改默认控制器/方法

创建时间:2017-08-11 投稿人: 浏览次数:300

在网上找了非常多的方法,但是都不好使最后自己综合网上所有自己琢磨出来的,见笑了

首先Yii2中在/vendor/yiisoft/yii2/web/Application.php的第28行  

public $defaultRoute = "site";  /*这个是网上都有的,但是改的是框架源码,所以不建议使用*/

1、找到了自己扩展的配置文件在/config/web.php。

  在 $conifg=[] 里添加了一行代码: "defaultRoute" => "index", 。

  这样,默认控制器就从Yii默认的site变成了想要的index了。

2、不论前后台找到/config/mian.php在第一个数组里面,添加 "defaultController"=>"Index",

3、在/protected/config/main.php添加配置,

  <?php
    return array(
     "name"=>"Auto",
     "defaultController"=>"auto",

4、配置文件在/config/web.php 或者main.php里面。

  在 $conifg=[] 里添加了一行代码:

  "defaultRoute"=>"exam",

注意!注意!注意!

以上四种更改默认控制器的方法亲测无效!!!

0、下面这是我自己总结出来的:

  /protected/config/main.php或/backend/config/main.php中

  代码如下:

  <?php
    $params = array_merge(
          require(__DIR__ . "/../../common/config/params.php"),
          require(__DIR__ . "/../../common/config/params-local.php"),
          require(__DIR__ . "/params.php"),
          //require(__DIR__ . "/../../common/config/db.php"),
          require(__DIR__ . "/params-local.php")
    );

    return [
        "name"=>"Exam",

        "defaultRoute"=>"exam",

  红色即为正确设置方式。

 

 

  设置默认action

 

  在XxxController.php中设置

  代码如下:

  <?php

  class XxxController extends yiiwebController
  {
      public $defaultAction = "test";

    public function actionIndex()
      {
          ...
      }

      public function actionTest()
      {
          ...
      }
        ...

    如此,此时访问###/web/index.php就会

    默认转到###/web/index.php?r=Xxx/test

    ok,完事,收工




比如fronted/web/index.php 展现的内容是怎么确定的(index本身不是展现页面的)
2 对于一个app,常用到主页返回,那么gethomeurl在哪里设置的呢?

本来想根据源码分析 时间有限太特么啰嗦了
直接进入 common/config/main.php

return [
    //应用的默认路由 goHome默认会跳转到这里
    "defaultRoute" => "controller/action"

    还有一种就是配置系统urlManeger组件
    ‘components’ => [
        "urlManager" => [
            //这个baseUrl 最终也会决定homeUrl的去处相当于给当前应用指定一个域名然后真个应用的                                路由都基于这个域名跳转
            "baseUrl" => "http://www.test.com",
            "class" => "yiiwebUrlManager",
            "enablePrettyUrl" => true,
            "showScriptName" => false,
            //"suffix" => "path",
        ],
    ]

]
$controllerObj->redirect(); $controllerObj->goHome(); 示例中的用法, 其他参考 api

  1. 在Yii中,默认的url应该是这样的: http://域名/index.php?r=controllerName/actionName&参数1=值1&参数2=值2
    对于fronted/web/index.php,目测,frontend应该是网站前台,即frontend目录下有一个web目录,web目录里有index.php文件,这个文件时前台的唯一入口。

  2. 返回主页不就是在控制内 $this->redirect("/"); 翻译出来就是http://域名/这个网址吗?

PS:对第一点补充一下,web目录应该是web server的根目录,比如你要访问fooController下的actionTest()方法,你的url应该这样写:http://域名/index.php?r=foo/test



声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。