筹备


1. 扩展:

 fec  fecadmin

2. 组件:

 url,menu,category,product,cart,order,account,productReview,productSearch,cms,coupon,customerAddress,payment,shipping, email,

3.模块:

Core, Cms, Catalog(category,product), ProductSearch, ProductReview, Checkout, Payment, Account, Coupon, Currency, Cron, ImportExport, Newsletter, Sitemap, Wishlist, contacts, Report,

4.Layout


layout_1column.php

layout_2columns_left.php

layout_2columns_right.php

layout_3columns.php


Layout的content是由controller返回的数组数值,以及对应的views文件生成的html返回。

left 是由   模块里面的配置   通过UrlKey对应的Params配置,譬如modules params配置如下:

params =>[
  'catalog/product/index' =>[
     'left' => [
         ['程序体1'=>'view1'],
          ['程序体2'=>'view2'],
       ],
<pre name="code" class="html">    
'right'=>[ // xxxx.... ],]
 

根据这个配置,也就是在catalog/product/index的时候left由上面的各个块来完成

5. 块:

 ['程序体1'=>'view1']

程序体 和 view 共同组成一个整体,来生成一块有

php ob 递归嵌套:

public function dd($i){  
        $i--;  
        if($i > 0){  
            ob_start();  
            echo "test".$i;  
            $str = ob_get_clean();  
            return $str.$this->dd($i);  
        }else{  
            return 22;  
        }  
    }  
     
    public function actionIndex(){  
          
         ob_start();  
   
        echo "Hellon/"; //输出   
  
  
        echo $this->dd(6);  
                  
          
        ob_end_flush();//输出全部内容到浏览器   
        exit;  
} 

php  文件和view文件合并的方法:

    public function renderPhpFile($_file_, $_params_ = [])  
      {  
          ob_start();  
          ob_implicit_flush(false);  
          extract($_params_, EXTR_OVERWRITE);  
          require($_file_);  
          return ob_get_clean();  
      }  
通过上面的两个方式来生成tab块。

htmltab分为程序代码部分和html显示部分,程序代码部分通过getLastData()返回数组param,然后html部分用变量来生成动态数据,以及和自身的html,生成最终的tab html,然后被加载

总之,代码块可以看成一个独立的tab。


6 总之, 从主动权上面来看,layout 是主动权的顶级,各个不同的controller 填充conteng部分,通过urlkey对应的left right 填充对应的区域,

然后就是公用部分,譬如页面的头部和尾部。当然,各个不同的layout 可以有模块配置,让其选择不同的layout。


主动权是从前端部分Layout和配置部分config开始,也就是说,Layout 和 Config 来做主动控制,来选择对应的模块,虽然动作由模块的controller发起,但是config 可以换掉controller,action ,或者通过配置改动当前controller的行为,虽然动作由模块执行处理数据,但是政策还是由config控制,由Layout获取进而生成数据,从这里看config相当于法律法规,layout相当于统一管理的执行者,生成最终界面。


到这里可以看出来,模块,插件,组件,都是通过config文件进行控制,最终由layout调用。生成最终界面,这才是正确的系统架构思想,由于layout和config掌握在前端手里,因此,系统的升级不会带来太多的麻烦。


总之,一个好的系统,解决  系统的  二次开发 和  产品升级的矛盾(通过配置,更改文件路径), 产品自身升级的代码的问题以及数据库升级的问题(通过composer和yii2的migration解决)。让前端控制做主导,让控制反转,让使用者成为主权的统治者。



二:详细:

1. 通用,可以被其他的系统使用的部分做成扩展

1.1. fecadmin 扩展的完善,加入gii,使用文档等

1.2. fec 扩展的完善。

      一些功能做成系统组件:URLRewrite,也就是说,需要配置的功能,做成组件的城市,方面以后的调用。

     通过一个php后端类和一个前端view文件,生成一个tab块的功能。


2.  数据库使用migrate 各个组件,各个模块,各个扩展的migration 通过脚本进行整合到一起。

通过一个shell脚本依次执行各个migrate,完成数据的安装以及日后的升级,当然,这里包括mysql和mongodb,


3.通过fecadmin建立好后台,然后建表,做数据的维护,包括:产品,分类,用户中心,评论 ,cms page,staticblock  order, cart等。这个通过appadmin加载,各个功能

做成模块的形式

然后做前端功能,从config 获取当前的 theme 和layout.php进而获取当前的layout

content由当前controller生成

left right由各个tab生成。各个tab在各个页面可以公用


做好可以二次开发更改系统的controller文件等的设定。

客户的二次开发文件路径,


统一写到app/code/local中,按照文件路径对系统的文件进行重新设定。


theme统一放到app/theme/xxxx/下面








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值