由于业务需要,需要在产品分类表中增加一个字段,因此需要重写fecshop\models\mongodb\Category.php,使用了classMap来加载新的model,程序运行的时候一直提示命名空间丢失,不知道是哪里配置错误了,麻烦大家帮忙看下。谢谢!
重写的Category.php如下:
<?php
namespace appadmin\local\local_models\mongodb;
use yii\mongodb\ActiveRecord;
class Category extends ActiveRecord
{
/**
* mongodb collection 的名字,相当于mysql的table name
*/
public static function collectionName()
{
return 'category';
}
/**
* mongodb是没有表结构的,因此不能像mysql那样取出来表结构的字段作为model的属性
* 因此,需要自己定义model的属性,下面的方法就是这个作用
*/
public function attributes()
{
return [
'_id',
'parent_id',
'name',
'status',
'url_key',
'level',
'thumbnail_image',
'image',
'filter_product_attr_selected',
'filter_product_attr_unselected',
'description',
'menu_custom',
'title',
'meta_description',
'meta_keywords',
'include_in_menu',
'is_feature',
'available_sort_by',
'default_sort_by',
'theme',
'active_from',
'active_to',
'created_at',
'updated_at',
'created_user_id',
'ori_id',//..此处为增加字段
//other
/*
category filter
category product
*/
];
}
}
YII的classmap配置如下:
<?php
return [
//'fecshop\app\appfront\helper\test\My' => '@appfront/helper/My.php',
"fecshop\models\mongodb\Category"=>"appadmin\local\local_models\mongodb\Category.php",
];
执行时报错如下:
Http status: 500 Internal Server Error
ajaxOptions: error
thrownError: Internal Server Error
Exception (Unknown Class) 'yii\base\UnknownClassException' with message 'Unable to find 'fecshop\models\mongodb\Category' in file: appadmin\local\local_models\mongodb\Category.php. Namespace missing?'
in G:\WorkSpace\php\fecshop\vendor\yiisoft\yii2\BaseYii.php:295
Stack trace:
#0 [internal function]: yii\BaseYii::autoload('fecshop\\models\\...')
#1 G:\WorkSpace\php\fecshop\vendor\fancyecommerce\fecshop\services\category\CategoryMongodb.php(37): spl_autoload_call('fecshop\\models\\...')
#2 G:\WorkSpace\php\fecshop\vendor\fancyecommerce\fecshop\services\Category.php(61): fecshop\services\category\CategoryMongodb->getByPrimaryKey('57b6afecf656f25...')
#3 [internal function]: fecshop\services\Category->actionGetByPrimaryKey('57b6afecf656f25...')
#4 G:\WorkSpace\php\fecshop\vendor\fancyecommerce\fecshop\services\Service.php(48): call_user_func_array(Array, Array)
#5 G:\WorkSpace\php\fecshop\vendor\fancyecommerce\fecshop\app\appadmin\modules\AppadminbaseBlockEdit.php(50): fecshop\services\Service->__call('getByPrimaryKey', Array)
#6 G:\WorkSpace\php\fecshop\vendor\fancyecommerce\fecshop\app\appadmin\modules\AppadminbaseBlockEdit.php(50): appadmin\local\local_services\Categoryext->getByPrimaryKey('57b6afecf656f25...')
#7 G:\WorkSpace\php\fecshop\vendor\fancyecommerce\fecshop\app\appadmin\modules\Catalog\block\category\Index.php(30): fecshop\app\appadmin\modules\AppadminbaseBlockEdit->init()
#8 G:\WorkSpace\php\fecshop\vendor\yiisoft\yii2\base\Object.php(107): fecshop\app\appadmin\modules\Catalog\block\category\Index->init()
#9 G:\WorkSpace\php\fecshop\vendor\fancyecommerce\fec\controllers\FecController.php(41): yii\base\Object->__construct()
#10 G:\WorkSpace\php\fecshop\vendor\fancyecommerce\fecshop\app\appadmin\modules\Catalog\controllers\CategoryController.php(29): fec\controllers\FecController->getBlock()
#11 [internal function]: fecshop\app\appadmin\modules\Catalog\controllers\CategoryController->actionIndex()
#12 G:\WorkSpace\php\fecshop\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)
#13 G:\WorkSpace\php\fecshop\vendor\yiisoft\yii2\base\Controller.php(156): yii\base\InlineAction->runWithParams(Array)
#14 G:\WorkSpace\php\fecshop\vendor\yiisoft\yii2\base\Module.php(523): yii\base\Controller->runAction('index', Array)
#15 G:\WorkSpace\php\fecshop\vendor\yiisoft\yii2\web\Application.php(102): yii\base\Module->runAction('catalog/categor...', Array)
#16 G:\WorkSpace\php\fecshop\vendor\yiisoft\yii2\base\Application.php(380): yii\web\Application->handleRequest(Object(yii\web\Request))
#17 G:\WorkSpace\php\fecshop\appadmin\web\index.php(55): yii\base\Application->run()
#18 {main}
不知道应该如何进行配置才不会提示命名空间丢失?