站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
PrestaShop ObjectModel讲解
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
'''ObjectModel''' 是[[PrestaShop]]系统中的一个非常重要的抽象类(相信了解[[JAVA]],[[C++]]等高级语言的朋友,对抽象类不陌生),准确的说它是一个包含了数据表CURD基本操作的工具类。 我愿意称这个类是一个比较别扭的base model,它包含了数据表的描述基本描述、CURD操作、常规的数据验证服务等。 相信有些朋友跟我一样,已经对Presta学习有些日子了,大家都会发现只要界面表单中的元素的名称与表中的字段名称一致,系统就会自动识别出入库数据。其实并不是这样的。这主要是依赖两个重要的方法来完成的,'''getFields'''、'''copyFromPost'''. '''getFields''' 是 ObjectModel 并无实现的方法体,继承ObjectModel的对象类必须针对其自身的需求,建立字段数组,以便系统使用,同时需要对字段数组中的字段作显式声明。 <pre> class Category extends ObjectModel { public $id_parent = 0; public $name; public $level_depth = 0; public $position; public $active; public $date_add; public $date_upd; .......................... public function getFields() { parent::validateFields (); if (isset ( $this->id )) $fields ['id_category'] = intval ( $this->id ); $fields ['id_parent'] = intval ( $this->id_parent ); $fields ['name'] = pSQL ( $this->name ); $fields ['level_depth'] = intval ( $this->level_depth ); $fields ['date_add'] = pSQL ( $this->date_add ); $fields ['date_upd'] = pSQL ( $this->date_upd ); return $fields; } } </pre> 另一个重要的函数处于classes/Tools.class.php中,'''copyFromPost'''。 '''copyFromPost'''负责把提交过来的[[表单]]数据,填充至ObjectModel的子类。它的工作原理是非常简单,遍历[[POST]]中的变量,并判断 ObjectModel子类中是否存在该变量,存在则赋值。这样就完成了对象的数据填充,系统再通过getFields方法是提取需要操作的数据。 <pre> static function copyFromPost(&$object) { /* Classical fields */ foreach ( $_POST as $key => $value ) if (key_exists ( $key, $object )) { /* Do not take care of password field if empty */ if ($key == 'passwd' and Tools::getValue ( $this->identifier ) and empty ( $value )) continue; /* Automatically encrypt password in MD5 */ if ($key == 'passwd' and ! empty ( $value )) $value = Tools::encrypt ( $value ); $object->{$key} = $value; } } </pre> 注:# key_exists([[PHP]]内置函数),用于是判断对象是否存在是目前属性。 ==相关条目== *[[ECShop]] *[[ZenCart]] *[[OpenCart]] *[[PrestaShop]] ==参考来源== *[http://www.mypresta.com/posts/list/25.page 参考来源] [[category:PrestaShop|O]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)