litide 2016-01-22 00:38:38 10532次浏览 4条评论 0 1 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;

终于成功显示了数据库里的数据。 官方文档导致学习曲线太陡峭!

觉得很赞
  • 评论于 2016-01-22 09:22 举报

    这么多人学习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,但是只是用其中的一部分功能。呵呵、

    1 条回复
    评论于 2017-02-20 17:26 回复

    确实会坑到一些小‘白 随意给你个差评 yii需要适合各种小白

    , , , 觉得很赞
  • 评论于 2016-01-25 10:32 举报

    app只是代称,里边要是写个xxx代表,你岂不是直接蒙圈了。

  • 评论于 2016-01-26 17:48 举报

    确实会坑到一些小‘白’..

  • 评论于 2019-03-07 14:03 举报

    虽说上手难,但是多接触之后,会发现YII 还是很不错的。

您需要登录后才可以评论。登录 | 立即注册