通信::
各个模块的通信,是通过 通信API模块实现。 XApi
命名:
Session 名字的设置规则 模块名_用途名,譬如:用户购物车的个数。
文件结构:
Common Config main-local.php params-local.php Myapp /frontend /Common /blocks #底层blocks /CBlockbase.php /controller # 底层controller /CController.php /config # 底层config /bootstrap.php /main.php /params.php /models /helper /所有的模型初始定义 /XTM #所有的常用类方法,譬如URL SESSION COOKIE IMAGE CONFIG EXCEL 等 /lib #加载的第三方类。 /Backend /console Frontend详细 /myapp/Frontend/ /code /模块包名 /模块名1 /Module.php #模块的入口文件 /controllers #模块的controller文件 路径 /block #模块的块文件 路径 /etc #模块的配置文件 路径 /models #模块的models路径 /helper # 非数据库操作类存在路径 /event # 模块内部的事件 路径 /模块名2 /模块名3 /通信模块 /views /default(模板名) /模块名 /controller名称.php /action名称.php # 譬如:customer/account/login 对应的是 views/default/customer/account/login.php /dmobile(模板名) /lib /etc /modules Erp_Customer.php Erp_Product.php /mongo /Mongo1.php /Mongo2.php /Mongo3.php /local.php /language /de_DE /companie.php /en_US /es_ES /fr_FR /it_IT /nl_NL /mail /de /accout /forgot.php /register.php /contacts /index.php /order /create_guest_success.php /create_success.php /es /fr /en /it /nl frontend/web /index.php #进行各种初始化,要把模板给对应好。 /skin /defaut /css /styles.css /styles2.css /fonts /icomoon.svg /icomoon.eot /icomoon.ttf /icomoon.woff /image /home /xxx.jpg /product /xxx.jpg /xxx.jpg /xxx.jpg /yyy.jpg /js /custom.js /mobile /js /jquery.js /myapp/Backend # 后台,这里不做叙述 /myapp/Console # 控制台,
1.需求调研
3.模块部署(对应的人员只书写底层方法内的代码的填充。或者一部分前台的代码。)
a) 需要模块划分
b) 模块功能点详细划分,以及使用的其他模块的方法,通过通信api模块调取
c) 功能点详细描述,各个功能点的执行,带来的结果的代码级别的描述。
d) 功能点的实现,在其同名的文件夹中书写详细,譬如
Cart.php #实现的是模块内公开方法
Cart/items.php # 实现的是中间层的实现代码
Cart/total.php # 实现的是中间层的实现代码
e) 设计各个模块对应的数据库
f) 安排具体的人,去实现函数里面的功能点
g) 完成后,找到实现功能的人,细致核对功能点的实现情况。并查看里面的代码,进行合理的部署和修改。
4.数据库的设计。
5.设计一个基础的前端框架,供大家使用
Herd , Herder , Left , Right , Content , Footer几块
Head:网站的Head 一般都是一样,用一个文件书写。
Herder:网站的Header一般都是一样的
Footer:网站的Footer一般是一样的
BreadCrumbs:一般由各个页面传入数组[‘label’ => ‘url’,‘label’ => ‘url’,‘label’ => ‘url’],然后生成
Left, Content,Right 这个是网站的结构,一般是有当前页面的编辑人员来书写
除了Left Content Right,上面的弄完就完成了一个基础的前端框架。
注:上面的模块,需要的数据,都是从 通信模块 的方法中获取,这个方法的数据是有对应模块来实现,也就是说通信模块相当于api,如果对应模块还没有实现这个方法,可以在通信模块返回一个常量或者一段html,不耽误前端的数据显示,当对应模块实现了逻辑,把结果放到通信模块的对应方法中,做返回就可以了。
6.开发人员工作:部署到这里,可以让程序员先去开始做对应的模块,通过一个简单的controller去测试自己写的功能
7.
4.前端设计
前端设计出来初始版本,供大家套用,可以用之前的模板先用着,以后再做改变
前期的开发,先不过多的依赖前端设计的进程,先用一个大致的模板套用
5.前端架构
B2C模块:
1.用户模块
用户的注册
安全属性:用户email password password_repeat captcha
同意条款 仅仅是一个验证,无字段
提交成功后,密码加密存放数据库,
用户登录
用户的登录
安全属性:email,密码 ,是否cookie登录
验证成功后,用户为登录状态
session中 保存用户的id,
更新购物车信息:将未登录的购物车中的产品数据,和客户账户原来有的购物车数据合并,合并到客户账号对应的条目,然后,当前的session对应购物车id做指向到账号对应的id 重置session 中的购物车信息。
XApi\Cart::updateCartInfoAfterLogin($customer_id);
XApi\Cart::getCartInfoByCustomer($customer_id);获取购物车中产品个数,总金额
登录成功后,跳转到账号中心
提供方法:XApi\User::isGuest();
$session::get();
用户的google账号登录 fb账号登录
点击按钮后,跳转到第三方验证,验证成功后,返回网站,获取到他的google或fb邮箱,查看用户表中有无此邮箱,如果有,用户更改成登录状态,如果没有,用这个邮箱注册一个账户,密码随机生成六位,发送到客户邮箱,此账号变成登录状态
完成后 XApi\Cart::updateCartInfoAfterLogin($customer_id);
用户中心控制面板
用户中心查看欢迎语,账号信息 ,默认货运地址,最近订单等
货运地址是从货运地址表中查找,通过customer_id 和 is_default两个字段
最近订单 通过方法:Order::getRecentOrderByCustomerId($customer_id)返回最近的五个订单.
用户信息修改
用户可以修改自己的first name last name 密码等
用户的收货地址信息修改
查看收货地址列表,增加收货地址,修改收货地址。收货地址删除,设置默认
用户订单
查看用户订单列表,
查看总个数:Order::getCustomerOrderCount($customer_id),
查看列表Order::getCustomerOrderList($customer_id,$pageNum,$numPerPage,$sort);
查看详细 Order::getCustomerOrderInfo($customer_id,$order_id);
Reorder:将order的信息,累加到购物车模块中
Order::reorderAddToCart($customer_id,$order_id);
需要使用到XApi\Cart::addToCart([‘sku’,’$items’,’custom_option’]);
用户rewrite
XApi\Productreview::getCustomerProductReviewList();
用户收藏
左侧菜单
用户退出
清除用户session:
清除购物车信息:XApi\Cart::destoryCartInfoAfterLogout($customer_id);
2.分类模块 菜单 面包屑
3.产品模块
4.Cms page 模块 cms static block模块
5.Url rewrite模块
6.购物车模块
7.支付模块
8.产品评论模块
9.翻译模块
10.邮件模块
11.前端
12.后台配置模块
13.内存管理模块
14.脚本处理
15.Restful接口
16模块间通信API
17.公共模块方法
Session
Session::get($key) #获取session
Session::set($key,$value) #设置session
Session::remove($key) # 清除session
Url
Url::getCurrentUrl(); # 得到当前的完整url
Url::getCurrentUrlKey(); # 得到当前的url key 也就是 xx/xx/xx
Url::getCurrentUrlNoParam(); # 得到当前的无参数url
Url::getUrl(‘xx/xx/xx’,[‘filter’=>’color’]); # 通过url path 和参数
Url::getBaseUrl(); # 得到网站的base url
Url::getSkinUrl(); # 得到skin的基层url,譬如 http://www.xx.com/skin/default
Url::getJsUrl(); # 得到js的基层url
Url::getBaseDir(); #依次上面的,得到的是目录地址
Url::getSkinDir();
Url::getJsDir();
Url::getSitemapDir(); # 得到sitemap的dir
Url::getSitemapUrl(); # 得到sitemap的url
Url::getMediaBaseDir(); # 得到media的base dir
Url::getMediaBaseUrl(); # 得到media的base url
Url::getMediaProductUrlByImagePath(); # 通过product image path得到图片的url
Url::getMediaCategoryUrlByImagePath(); # 通过category image path得到图片的url
Url::getDomain(); # 得到当前的domain
Url::redirect(); # 跳转到其他的页面
Excel # excel的导入导入
File
Translate Translate::__($text,$arr = array()) preg_replace('/%s/',$arr);
Request
Request::get()
Request::post()
Request::param() # get 数据优先查找,然后查找post
Request::getCsrfName()
Request::getCsrfValue()
Request::getCsrfInputHtml()
Cookie
Image
Config
Config::param(); # 获取配置项
Config::isMobileTheme();
Country # 国家的一些操作
Currency # 货币的转换操作
Date # 常用的时间操作
Toolbar # 分页Toolbar
Message # 消息提示