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

2017-01-13 22:59:25 +08:00
 a329377653
<?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.请问是为什么呢?
3360 次点击
所在节点    PHP
9 条回复
gouchaoer
2017-01-13 23:04:41 +08:00
真的有人用 activerecord 做 rest 的基类啊,我一直以为纯 rest 的 api 是不存在的
a329377653
2017-01-13 23:06:52 +08:00
@gouchaoer 新手不太了解,请问为什么生成不了呢?
gouchaoer
2017-01-13 23:07:22 +08:00
刚回答的是另一个人格,不要在意,解决办法很简单。。。 xdebug 单步调试 gii 就完了
kenan2677
2017-01-14 07:07:19 +08:00
lygmqkl
2017-01-14 16:50:02 +08:00
@gouchaoer yii 2.0 用 AR 写 restful 很舒服
wh1012023498
2017-01-15 00:41:14 +08:00
@gouchaoer 用。用过之后能蛋疼。因为没办法完全抽象成资源。。年轻时不懂事呜呜呜。
wh1012023498
2017-01-15 00:45:06 +08:00
@gouchaoer = = 啊。。感觉回答错了。。你说的是 AR 做 REST 的基类? REST 是 yii\base\Controller 的子类。。跟 AR 没啥关系的。。不过就纯 RESTFUL 风格的 API 。。我觉得资源型的接口是 OK 的。。但是= = 如果牵扯到过程式的请求 就会很蛋疼。。因为有些情况很难抽象成资源。我觉得我好痛苦。。
wh1012023498
2017-01-15 01:13:38 +08:00
至于楼主所提到的问题是这样的。。
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
2017-01-15 13:02:23 +08:00
@wh1012023498 感谢可以了,回复那么长辛苦了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/334482

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX