按照官方文档做遇到的坑 Namespace missing? [ 2.0 版本 ]
官方文档说的做数据库调用 报错!
真是郁闷 本来就是小白 完全照文档做竟然也有坑。
我用的是yii2 advanced 版
最后改了两处 终于正确显示出数据库里的数据。
一处是改 common/models/Country里面的
namespace app\models;
为 namespace common\models;
另一处是 改\frontend\controllers\CountryController.php 里面的
namespace app\controllers;
use yii\web\Controller;
use yii\data\Pagination;
use app\models\Country;
为
namespace frontend\controllers;
use yii\web\Controller;
use yii\data\Pagination;
use common\models\Country;
终于成功显示了数据库里的数据。 官方文档导致学习曲线太陡峭!
litide
注册时间:2015-06-26
最后登录:2018-05-19
在线时长:4小时58分
最后登录:2018-05-19
在线时长:4小时58分
- 粉丝0
- 金钱160
- 威望10
- 积分300
共 4 条评论
这么多人学习yii2,但是都不认为这是坑,这说明这不是坑,而是一种理解。
yii2是一个框架,这是真正的yii2,而yii2 advanced是在yii2框架上面做的一个通用的使用方式,虽然这个也是官方出品,但是,你完全可以不用他的frontend backend common,自己来组织文件结构。
现在回答你的问题, app代表命名空间的开始部分,在yii2 advanced 模板中的common\config\bootstrap.php文件中,你应该可以看到:
<?php Yii::setAlias('common', dirname(__DIR__)); Yii::setAlias('frontend', dirname(dirname(__DIR__)) . '/frontend'); Yii::setAlias('backend', dirname(dirname(__DIR__)) . '/backend'); Yii::setAlias('console', dirname(dirname(__DIR__)) . '/console'); Yii::setAlias('myapp', dirname(dirname(__DIR__)) . '/myapp');
譬如下面的myapp 是我自己定义的一个别名,那么你上面的代码,我需要改成:
namespace myapp\models; use myapp\models\Country;
所以这不是一个坑,app是一个代表,你放到哪个包下面,这个app就代表哪个包。
yii2还是很不错的,对新手是有点上手难一点,不光新手,就是毕业3年的程序员,也得用上半年左右,才能摸清,不是因为这个东西有多难,而是因为yii2封装的东西比较多,看完文档,在使用,都有一个过程。不过也有很多人在用yii2,但是只是用其中的一部分功能。呵呵、
确实会坑到一些小‘白 随意给你个差评 yii需要适合各种小白
app只是代称,里边要是写个xxx代表,你岂不是直接蒙圈了。
确实会坑到一些小‘白’..
虽说上手难,但是多接触之后,会发现YII 还是很不错的。