目的:我想重写首页这个文件,如下图: 做法步骤开始: 我按照手册上的做法,不知道有没有问题,大家给给意见! 第一步,我在项目fecshop下面的common/config下面的创建一个新的文件YiiRewriteMap.php,原本是没有的。,如下图: 第二步,打开YiiRewriteMap.php文件,代码如下: 第三步,在fecshop/appfront/local/local_modules下创建文件夹Cms/block/home,然后在home文件夹下创建文件Index.php,代码跟如下:
可是最终发现,这个Index.php文件并没有被重写,我想请问一下,这是什么原因,还有我那一步做错了,请大神们指点一下,这里先谢谢你们了。
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', ];
我这个是>=1.1.3.5,这个是最新的吗
然而手册上是"fancyecommerce/fecshop": ">=1.1.2.9",请问也需要升级吗?
这个是我的composer.json参数
@LOVE520 #2楼 https://github.com/fecshop/yii2_fecshop/releases
@LOVE520 #4楼 将fecshop的1.1.3.5改成 1.1.4.3,然后保存退出,在根目录执行composer update
如果不熟悉,最笨的办法就是全部重装:http://www.fecshop.com/doc/fecshop-guide/develop/cn-1.0/guide-fecshop-about-hand-install.html
composer global require "fxp/composer-asset-plugin:^1.3.1" composer create-project fancyecommerce/fecshop-app-advanced fecshop 1.0.4.1 cd fecshop composer update ./init
这个简单,谢谢啊
我试试结果如何