Yii2 中的默认路由是 @app/controllers/SiteController。但是如果我从头开始构建。
composer require yiisoft/yii2
然后我创建自己的索引.php并为应用程序设置配置
(new yii'web'Application($config))->run();
并且应用程序始终尝试在应用程序命名空间中本地默认的Contoller。 但是如果我把站点控制器放在另一个命名空间中。 它给了我 404 错误,
索引.php
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/repo/config/web.php');
(new yii'web'Application($config))->run();
网络.php
'id' => 'repo',
'basePath' => dirname(__DIR__),
'controllerNamespace' => 'repo''controllers',
'defaultRoute' => 'site/index',
文件夹结构
/vendor
-yiisoft
/repo
-config
---web.php
-controllers
---SiteController.php
站点控制器.php
<?php
namespace repo'controllers;
use Yii;
use yii'web'Controller;
class SiteController extends Controller{
public function actionIndex(){
echo 'welcome to the site';
}
}
?>
如果我给 SiteController.php命名空间应用程序/控制器它可以工作,但是一旦我将其更改回存储库/控制器,它就会说找不到页面。
在你的配置文件中试试这个:
'controllerNamespace' => 'newnamespace'controllers',
'defaultRoute' => 'new/index',
yii''base''Application 对象有一个公共属性 controllerNamespace,默认为 app''controllers
,需要相应地更改它来更改默认的控制器命名空间。
将此添加到您的应用程序配置中:
[
...
'controllerNamespace' => 'app''other''namespace'controllers',
...
],
默认路由是site
(对于 yii''web''Application),可以用相同的方式更改它(defaultRoute 属性):
[
...
'defaultRoute' => 'otherDefaultRoute',
...
],
我发现我忘了定义根别名。
// $className is a fully qualified class name without the leading backslash
$classFile = Yii::getAlias('@' . str_replace('''', '/', $className) . '.php');
所以如果我在配置中定义根别名@repo。 然后它可以工作
'aliases' => [
'@repo' => dirname(__DIR__),
],