我想创建一个这样的目录树:
所以如果我调用localhost / mysite / web / index.php?r = help / default / index我应该得到索引视图。
所以我用gii创建了一个模块。我的模块类是" app \ modules \ help \ help"。我不得不两次使用帮助,以便将模块放在子目录中。 (这是我无法得到的。为什么不为每个模块创建Yii子目录?)
在下一步中,我创建了独立行动
<?php
namespace app\modules\help\controllers;
use yii\base\Action;
class IndexAction extends Action
{
public function run()
{
$this->controller->render('index');
}
}
在下一步中,我修改了控制器以使用独立操作
<?php
namespace app\modules\help\controllers;
use yii\web\Controller;
class DefaultController extends Controller
{
public function actions()
{
return [
'index' => 'app\modules\help\controllers\default\IndexAction',
];
}
}
如果我现在在浏览器中调用我的视图,则会收到以下错误:
Unknown Class – yii\base\UnknownClassException
Unable to find 'app\modules\help\controllers\default\IndexAction' in file: E:\wamp\www\my_website/modules/help/controllers/default/IndexAction.php. Namespace missing?
但如果我在我的电脑上转到此路径E:\ wamp \ www \ my_website / modules / help / controllers / default /,我会看到IndexAction.php 有人能帮我吗?
独立操作位于控制器的子目录中。所以命名空间应该是
namespace app\modules\help\controllers\default;
但是这导致了这个错误:
PHP Parse Error – yii\base\ErrorException
syntax error, unexpected 'default' (T_DEFAULT), expecting identifier (T_STRING)
修改
如果我在IndexAction.php中使用此命名空间app \ modules \ help \ controllers \ IndexAction,则会出现以下错误。即使我在控制器中更改路径,我也会得到unknownClassException:
Unknown Class – yii\base\UnknownClassException
Unable to find 'app\modules\help\controllers\default\IndexAction' in file: E:\wamp\www\my_website/modules/help/controllers/default/IndexAction.php. Namespace missing?
如果我在IndexAction.php中使用此命名空间app \ modules \ help \ controllers \ default,我会得到:
PHP Parse Error – yii\base\ErrorException
syntax error, unexpected 'default' (T_DEFAULT), expecting identifier (T_STRING)
答案 0 :(得分:1)
D.Mill在评论中说。 默认是保留关键字。我不得不重命名目录,它现在工作得很好。
答案 1 :(得分:0)
您使用的是错误的命名空间 用这样的代码替换你的代码(注意反斜杠)
public function actions()
{
return [
'index' => '\app\modules\help\controllers\default\IndexAction',
];
}