V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
a329377653
V2EX  ›  PHP

yii 使用 gii 的 Model Generator 生成不了代码

  •  
  •   a329377653 · 2017-01-13 22:59:25 +08:00 · 3252 次点击
    这是一个创建于 2667 天前的主题,其中的信息可能已经有所发展或是发生改变。
    <?php
    namespace core\base;

    use yii\db\ActiveRecord;

    class BaseActiveRecord extends ActiveRecord
    {
    }

    我创建了一个 BaseActiveRecord 类 放在 core\base 文件下
    当用 gii 生成时, Base Class 填写为 core\base\BaseActiveRecord 一直提示 Class 'core\base\BaseActiveRecord' does not exist or has syntax error.请问是为什么呢?
    9 条回复    2017-01-15 13:02:23 +08:00
    gouchaoer
        1
    gouchaoer  
       2017-01-13 23:04:41 +08:00 via Android
    真的有人用 activerecord 做 rest 的基类啊,我一直以为纯 rest 的 api 是不存在的
    a329377653
        2
    a329377653  
    OP
       2017-01-13 23:06:52 +08:00
    @gouchaoer 新手不太了解,请问为什么生成不了呢?
    gouchaoer
        3
    gouchaoer  
       2017-01-13 23:07:22 +08:00 via Android   ❤️ 1
    刚回答的是另一个人格,不要在意,解决办法很简单。。。 xdebug 单步调试 gii 就完了
    kenan2677
        4
    kenan2677  
       2017-01-14 07:07:19 +08:00 via iPhone
    lygmqkl
        5
    lygmqkl  
       2017-01-14 16:50:02 +08:00 via iPhone
    @gouchaoer yii 2.0 用 AR 写 restful 很舒服
    wh1012023498
        6
    wh1012023498  
       2017-01-15 00:41:14 +08:00
    @gouchaoer 用。用过之后能蛋疼。因为没办法完全抽象成资源。。年轻时不懂事呜呜呜。
    wh1012023498
        7
    wh1012023498  
       2017-01-15 00:45:06 +08:00
    @gouchaoer = = 啊。。感觉回答错了。。你说的是 AR 做 REST 的基类? REST 是 yii\base\Controller 的子类。。跟 AR 没啥关系的。。不过就纯 RESTFUL 风格的 API 。。我觉得资源型的接口是 OK 的。。但是= = 如果牵扯到过程式的请求 就会很蛋疼。。因为有些情况很难抽象成资源。我觉得我好痛苦。。
    wh1012023498
        8
    wh1012023498  
       2017-01-15 01:13:38 +08:00   ❤️ 1
    至于楼主所提到的问题是这样的。。
    Yii2 有两套模板一套叫 basic 一套叫 advanced
    basic 模板只有一个应用。。所以它的根命名空间 默认是是 app 。目测你用的不是这个。
    详细代码在 yii\base\Application preinit 。你会发现框架默认给项目根目录设置了一个别名叫 app 。。
    如果你要修改命名空间,你可以重写设置一个别名。。

    如果是用的 advanced 的话,需要看下入口文件
    index.php
    ```
    <?php
    // comment out the following two lines when deployed to production
    defined('YII_DEBUG') or define('YII_DEBUG', true);
    defined('YII_ENV') or define('YII_ENV', 'dev');

    require(__DIR__ . '/../vendor/autoload.php');
    require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
    require(__DIR__ . '/../config/bootstrap.php');//这个是重点。。

    $config = yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/../config/main.php'),
    require(__DIR__ . '/../config/main-local.php')
    );
    $application = new \yii\web\Application($config);
    $application->run();
    ```
    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('@core', dirname(dirname(__DIR__)) . '/core');//加上这句就可
    ```
    a329377653
        9
    a329377653  
    OP
       2017-01-15 13:02:23 +08:00
    @wh1012023498 感谢可以了,回复那么长辛苦了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2254 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:50 · PVG 10:50 · LAX 19:50 · JFK 22:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.