在网上找了非常多的方法,但是都不好使最后自己综合网上所有自己琢磨出来的,见笑了
首先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 \yii\web\Controller
{
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' => 'yii\web\UrlManager',
'enablePrettyUrl' => true,
'showScriptName' => false,
//'suffix' => 'path',
],
]
]
$controllerObj->redirect();
$controllerObj->goHome();
示例中的用法, 其他参考 api
-
在Yii中,默认的url应该是这样的:
http://域名/index.php?r=controllerName/actionName&参数1=值1&参数2=值2
对于fronted/web/index.php,目测,frontend应该是网站前台,即frontend目录下有一个web目录,web目录里有index.php文件,这个文件时前台的唯一入口。 -
返回主页不就是在控制内
$this->redirect('/');
翻译出来就是http://域名/这个网址吗?
PS:对第一点补充一下,web目录应该是web server的根目录,比如你要访问fooController下的actionTest()方法,你的url应该这样写:http://域名/index.php?r=foo/test