YII2如何修改默认控制器/方法
在网上找了非常多的方法,但是都不好使最后自己综合网上所有自己琢磨出来的,见笑了
首先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-
在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
- 上一篇: JS截取字符串常用方法详细整理
- 下一篇: Yii2下拉框实现