2020-03-15 09:49:55 1838次浏览 2条回答 0 悬赏 10 金钱

把权威只能中的创建小部件的代码复制后,提示:Class 'app\components\HelloWidget' not found
1、是在根目录创建目录 components
2、在 components 内创建 HelloWidget.php 文件
3、在 frontend/side/index 视图文件中,引用类:use app\components\HelloWidget;
4、在 frontend/side/index 视图文件中空白处,<?= HelloWidget::widget(['message' => 'Good morning']) ?>

请问,是哪里错误了?

补充于 2020-03-16 15:02

我使用的是 advanced 模板,在/common/config/bootstrap.php 文件中,复制一条别名定义语句修改成下:
Yii::setAlias('@components', dirname(dirname(DIR)) . '/components');
修改后,系统就能找到文件了。

最佳答案

  • 蓝色主旋律 发布于 2020-03-16 08:53 举报

    说下我的看法,我觉得是楼主使用基础版的内容。

    1. 正确的使用命名空间和引用命名空间。

    根目录下就有 components, 打开其他的文件,发现命名空间是 namespace components; 那新建文件也要是

    所以在使用的时候 也应该是 use components\HelloWidget

    1. 如果新目录是要注册的
    // common/config/bootstrap.php // 高级版
    Yii::setAlias('@目录文件名', dirname(dirname(__DIR__)) . '/目录文件名');
    
  • 回答于 2020-03-15 13:03 举报

    错在 你把 基础版 的示例 弄到了 高级版 里,同样的操作 你要是在 基础版里 做的话,肯定是 没问题的
    如果是在 高级版里,你要 这样:
    1、不要在 根目录中创建 components,或者在 frontend / backend 里,或者在 common 里
    2、namespace 不要用 app\components ,用 frontend\components / backend\components 或者 common\components

您需要登录后才可以回答。登录 | 立即注册
冰红茶zxy
见习主管

冰红茶zxy

注册时间:2019-04-29
最后登录:2022-06-21
在线时长:5小时21分
  • 粉丝0
  • 金钱50
  • 威望30
  • 积分400

热门问题