1.rewriteMap的功能是最近加上去的,也就半个月左右,最省劲的方法你您完全重新安装
2.您也可以不重新安装,您需要把fecshop进行升级,升级文档参看:http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-about-update.html
升级后,vendor文件夹下面的文件是最新的,但是,根目录的本地文件是无法升级的,您需要手动更改。
首先,@appfront/web/index.php 添加代码:
/**
* Yii 重写block controller model等
* 也就是说:除了compoent 和services,其他的用RewriteMap的方式来实现重写
* 重写的类可以集成被重写的类
*/
$yiiRewriteMap = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../config/YiiRewriteMap.php'),
require(__DIR__ . '/../../common/config/YiiRewriteMap.php')
);
if(is_array($yiiRewriteMap) && !empty($yiiRewriteMap)){
Yii::$rewriteMap = $yiiRewriteMap;
}
添加完的index.php的全部代码为:
<?php
error_reporting(E_ALL || ~E_NOTICE); //除去 E_NOTICE 之外的所有错误信息
#ini_set('session.cookie_domain', '.fancyecommerce.com'); //初始化域名,
$http = ($_SERVER['SERVER_PORT'] == 443) ? 'https' : 'http';
$homeUrl = $http.'://'.$_SERVER['HTTP_HOST'].rtrim(dirname($_SERVER['SCRIPT_NAME']), '\\/');
/**
* fecshop 使用合并配置(config)数组进行加速,true 代表打开。
* 打开配置加速开关前,您需要执行 http://domain/index-merge-config.php 进行生成单文件配置数组。
* 注意:打开后,当您修改了配置,都需要访问一次上面的链接,重新生成单文件配置数组,否则修改的配置不会生效
* 建议:本地开发环境关闭,开发环境如果访问量不大,关闭也行,如果访问量大,建议打开
*/
$use_merge_config_file = false;
defined('YII_DEBUG') or define('YII_DEBUG', false);
defined('YII_ENV') or define('YII_ENV', 'prod');
require __DIR__.'/../../vendor/autoload.php';
require __DIR__.'/../../vendor/fancyecommerce/fecshop/yii/Yii.php';
require __DIR__.'/../../common/config/bootstrap.php';
require __DIR__.'/../config/bootstrap.php';
if ($use_merge_config_file) {
$config = require '../merge_config.php';
} else {
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__.'/../../common/config/main.php'),
require(__DIR__.'/../../common/config/main-local.php'),
require(__DIR__.'/../config/main.php'),
require(__DIR__.'/../config/main-local.php'),
// fecshop services config
require(__DIR__.'/../../vendor/fancyecommerce/fecshop/config/fecshop.php'),
// fecshop module config
require(__DIR__.'/../../vendor/fancyecommerce/fecshop/app/appfront/config/appfront.php'),
// thrid part confing
// common modules and services.
require(__DIR__.'/../../common/config/fecshop_local.php'),
// appadmin local modules and services.
require(__DIR__.'/../config/fecshop_local.php')
);
}
$config['homeUrl'] = $homeUrl;
/**
* yii class Map Custom
*/
$yiiClassMap = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../config/YiiClassMap.php'),
require(__DIR__ . '/../../common/config/YiiClassMap.php')
);
if(is_array($yiiClassMap) && !empty($yiiClassMap)){
foreach($yiiClassMap as $namespace => $filePath){
Yii::$classMap[$namespace] = $filePath;
}
}
/**
* Yii 重写block controller model等
* 也就是说:除了compoent 和services,其他的用RewriteMap的方式来实现重写
* 重写的类可以集成被重写的类
*/
$yiiRewriteMap = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../config/YiiRewriteMap.php'),
require(__DIR__ . '/../../common/config/YiiRewriteMap.php')
);
if(is_array($yiiRewriteMap) && !empty($yiiRewriteMap)){
Yii::$rewriteMap = $yiiRewriteMap;
}
/*
* 添加fecshop的服务 ,Yii::$service , 将services的配置添加到这个对象。
* 使用方法:Yii::$service->cms->article;
* 上面的例子就是获取cms服务的子服务article。
*/
new fecshop\services\Application($config['services']);
unset($config['services']);
$application = new yii\web\Application($config);
$application->run();
更换了代码,您需要创建 @appfront/config/YiiRewriteMap.php ,示例代码如下:
return [
/**
* \fecshop\models\mongodb\Category 为原来的类
* \appfront\local\local_models\mongodb\Category 为重写后的类
* 重写后的类可以集成原来的类。
*/
'\fecshop\models\mongodb\Category' => '\appfront\local\local_models\mongodb\Category',
];