- 浏览: 13612574 次
- 性别:
- 来自: 洛杉矶
文章分类
- 全部博客 (1994)
- Php / Pear / Mysql / Node.js (378)
- Javascript /Jquery / Bootstrap / Web (435)
- Phone / IOS / Objective-C / Swift (137)
- Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux (335)
- Perl / Koha / Ruby / Markdown (8)
- Java / Jsp (12)
- Python 2 / Wxpython (25)
- Codeigniter / CakePHP (32)
- Div / Css / XML / HTML5 (179)
- WP / Joomla! / Magento / Shopify / Drupal / Moodle / Zimbra (275)
- Apache / VPN / Software (31)
- AS3.0/2.0 / Flex / Flash (45)
- Smarty (6)
- SEO (24)
- Google / Facebook / Pinterest / SNS (80)
- Tools (22)
最新评论
-
1455975567:
xuezhongyu01 写道wocan23 写道我想问下那个 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
xuezhongyu01:
wocan23 写道我想问下那个111.1是怎么得来的我也看不 ...
Mysql: LBS实现查找附近的人 (两经纬度之间的距离) -
18335864773:
试试 pageoffice 在线打开 PDF 文件吧. pag ...
jquery在线预览PDF文件,打开PDF文件 -
青春依旧:
opacity: 0.5; 个人喜欢这种方式!关于其他css特 ...
css透明度的设置 (兼容所有浏览器) -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
搞定网页打印自动分页问题
Magento getModel getSingleton等常用函数说明
Mage::getModel 函数详解:
在通常的PHP初始化类对象的时候,使用以下方式进行生成。
$modelSales = new ModelSales();
但是在magento
中初始化模型对象时候,使用以下的方式进行生成模型对象。
$product = Mage::getModel
(’catalog/product’);
我们阅读magneto系统核心代码,发现在执行Mage::getModel(‘catalog/product’)函数时候完成了以下几个步骤:
- 在系统配置中寻找节点。
- 在节点中间寻找节点。
- 在节点中寻找节点。
在class节点所包含的内容(假设定义为Mage_Catalog_Model)和data拼接成最终的类名称,经过magento
类规范变成Mage_Catalog_Model_Product。
然后在Mage/Catalog/Model/Product.php文件中读取类定义并生成对象。
每一次执行的时候,都会重新生成一个模型对象。
最终返回一个Mage_Core_Model_Abstract子类对象。
/** * Retrieve model object * * @link Mage_Core_Model_Config::getModelInstance * @param string $modelClass * @param array $arguments * @return Mage_Core_Model_Abstract */ public static function getModel($modelClass = '', $arguments = array()) { return self::getConfig()->getModelInstance($modelClass, $arguments); }
Mage::getSingleton 函数详解:
getSingleton
最
终也是返回一个Mage_Core_Model_Abstract子类对象,但是其和getModel函数最大的区别是
永远只生成一个对象,并将生成的对象通过Mage::registry函数注册到magento系统当中,再次执行getSingleton时获取到上一
次生成的对象。
我们通过以下的系统源代码可以清楚的看到其和getModel函数的区别。
/** * Retrieve model object singleton * * @param string $modelClass * @param array $arguments * @return Mage_Core_Model_Abstract */ public static function getSingleton($modelClass='', array $arguments=array()) { $registryKey = '_singleton/'.$modelClass; if (!self::registry($registryKey)) { self::register($registryKey, self::getModel($modelClass, $arguments)); } return self::registry($registryKey); }
Mage::helper函数详解:
在通常的PHP初始化类对象的时候,使用以下方式进行生成。
$helper_sales = new HelperSales();
但是在magento中初始化类对象时候,使用以下的方式进行生成对象。
$helper_sales = Mage::helper(‘sales/data’);
我们阅读magneto系统核心代码,发现在执行Mage::helper(‘sales/data’)函数时候完成了以下几个步骤:
- 在系统配置中寻找节点。
- 在节点中间寻找节点。
- 在节点中寻找节点。
在class节点所包含的内容(假设定义为Mage_Sales_Helper)和data拼接成最终的类名称,经过magento类规范变成Mage_Sales_Helper_Data。
然后在Mage/Sales/Helper/Data.php文件中读取类定义并生成对象。
/** * Deprecated, use self::helper() * * @param string $type * @return object */ public static function helper($name) { if (strpos($name, '/') === false) { $name .= '/data'; } $registryKey = '_helper/' . $name; if (!self::registry($registryKey)) { $helperClass = self::getConfig()->getHelperClassName($name); self::register($registryKey, new $helperClass); } return self::registry($registryKey); }
Mage::register 函数详解:
在Mage类中使用$_registry存储生成的对象,这样生成的对象在全局都可以访问。Mage::register 函数有两种格式:
- public static function register($key, $value, $graceful = false) 注册一个新的变量
- public static function registry($key) 通过$key获取已有变量
- public static function unregister($key) 注销一个变量
Magento源文件:
public static function register($key, $value, $graceful = false) { if (isset(self::$_registry[$key])) { if ($graceful) { return; } self::throwException('Mage registry key "'.$key.'" already exists'); } self::$_registry[$key] = $value; } /** * Retrieve a value from registry by a key * * @param string $key * @return mixed */ public static function registry($key) { if (isset(self::$_registry[$key])) { return self::$_registry[$key]; } return null; }
Mage::getBaseUrl以及其他路径获取函数详解:
获取当前店铺的路径。默认参数是Mage_Core_Model_Store::URL_TYPE_LINK,返回http://example.com/index.php/。
还可以使用以下几个参数:
Mage_Core_Model_Store::URL_TYPE_LINK link http://example.com/index.php/ Mage_Core_Model_Store::URL_TYPE_DIRECT_LINK direct_link http://example.com/index.php/ Mage_Core_Model_Store::URL_TYPE_WEB web http://example.com/ Mage_Core_Model_Store::URL_TYPE_SKIN skin http://example.com/skin/ Mage_Core_Model_Store::URL_TYPE_JS js http://example.com/js/ Mage_Core_Model_Store::URL_TYPE_MEDIA media http://example.com/media/
当然,也可以使用简短的代码来获取js。Mage::getBaseUrl(‘js’);
/** * Get base URL path by type * * @param string $type * @return string */ public static function getBaseUrl($type = Mage_Core_Model_Store::URL_TYPE_LINK, $secure = null) { return self::app()->getStore()->getBaseUrl($type, $secure); }
Mage_Core_Helper_Url类调用路径
函数位于app/code/core/Mage/Core/Model/Url.php当中。
1.获取当前路径Mage::help(‘core/url’)->getCurrentUrl();
/** * Retrieve current url * * @return string */ public function getCurrentUrl() { return $this->_getUrl('*/*/*', array('_current' => true, '_use_rewrite' => true));
2.获取主页路径 Mage::help(‘core/url’)->getHomeUrl();
/** * Retrieve homepage url * * @return string */ public function getHomeUrl() { return Mage::getBaseUrl(); }
在Block和Phtml文件中,可以使用getUrl函数直接调用路径,一般使用在Block文件中。该函数定义在app/code/core/Mage/Core/Block/Abstract.php文件中。
如$this->getUrl(‘customer/account/login’);表示用户登录页面。
/** * Generate url by route and parameters * * @param string $route * @param array $params * @return string */ public function getUrl($route='', $params=array()) { return $this->_getUrlModel()->getUrl($route, $params);//该函数调用Mage::help('core/url')->getUrl($route, $params);来进行处理,效果一样。 }
如果调用skin中某个文件,可以直接使用getSkinUrl函数,一般用在Phtml文件中。如$this->getSkinUrl(‘images/calendar.gif’);表示获取指定模板中的images/calendar.gif文件。
/** * Retrieve url of skins file * * @param string $file path to file in skin * @param array $params * @return string */ public function getSkinUrl($file=null, array $params=array()) { return Mage::getDesign()->getSkinUrl($file, $params); }
getData
函数:
可以直接获取对象中的某个值,如获取产品的sku值,可以使用$product->getData
(‘sku’);,也可以使用$product->getSku();
在没有参数的情况下,getData
函数会返回一个数组,你可以print_r($Product->getData()); 讲所有数据打印出来。也可以使用$arrProduct = $Product->getData(); echo $arrProduct->sku;
来源:http://www.ahuasheng.com/magento-getmodel-getsingleton-function.html
发表评论
-
Magento: 后台显示图片不能找到 Image file was not found on product tab
2016-08-30 02:22 2874I was uploading some images f ... -
理解WordPress的PingBack和TrackBack
2016-08-26 02:21 5657pingback和trackback的功 ... -
零基础 Amazon Web Services (AWS) 入门教程图文版(四)
2016-06-07 11:40 976自上一篇之后,5天过去了,这篇文章总算是挤出来了... 其实 ... -
零基础 Amazon Web Services (AWS) 入门教程图文版(三)
2016-06-07 11:41 1992原则上WDCP安装好了,就可以直接使用了,FTP、MySQL ... -
零基础 Amazon Web Services (AWS) 入门教程图文版(二)
2016-06-07 01:33 943上一篇讲到,主机正常运转了。但是此时如果直接访问公网IP是 ... -
零基础 Amazon Web Services (AWS) 入门教程图文版(一)
2016-06-07 01:31 21536现在小站唯一的流量都靠AWS这个关键词了,刚好要用AWS重新 ... -
零基础 Amazon Web Services (AWS) 入门教程 (列表)
2016-06-07 01:32 2026在 Amazon Web Services 上托 ... -
Magento 1.9:新订单通知 Admin Order Notifier
2016-06-02 02:48 792Here is a little Mag ... -
Magento 1.9.X 系列教程
2016-05-14 02:44 2238Magento安装下载教学: Magento教程 1 ... -
Magento: 产品页面下jquery change函数失效 Call javascript function onchange product option
2016-05-05 06:39 1682明显的原因是change函数跟magento默认的oncha ... -
Magento: 判断是否为手机浏览 Optimise Web's Mobile Detect Class for Magento
2016-04-29 07:01 1116项目地址:Optimise Web's Mobile Det ... -
Magento: Gird 和 form 区域 Module Development Series – Magento Admin Module
2016-04-28 02:39 628In this tutorial, we are goi ... -
Magento: addAttributeToFilter 和 addFieldToFilter 的区别 Difference between addAttri
2016-04-28 02:34 976addAttributeToFilter is use ... -
Magento: 后台获取menu链接 Getting the admin panel urls
2016-04-28 02:34 728The url for customer page in t ... -
Magento : 调用文件上传 upload file frontend
2016-04-27 01:25 1310bool mkdir ( string $pathname ... -
Magento: 自定义用户登录导向页面 Redirect Customer to Previous Page After Login
2016-04-26 02:45 1811Configuration Settings – L ... -
Magento: 代替flash上传 How to disable Flash uploader in Magento (product images and
2016-04-06 05:04 10791. 替换产品页flash上传按钮 - 使用 Du ... -
Magento: 在客户账户中添加自定义链接 My Account Add Link
2016-04-05 14:05 1188This extension add new link an ... -
Magento: 根据产品属性加载产品信息 Load A Category or Product by an Attribute
2016-03-26 01:35 887Load a Product by ID <?ph ... -
Magento模块开发之数据库SQL操作方法说明
2016-03-26 01:31 1280今天主要来看Magento中的Mysql4/Resource ...
相关推荐
Magento的sales模块算是模块里面关联度比较大的,checkout模块的下订单流程也写得让人一头雾水,附件里主要是用客户对象和产品sku+数量的数组生成订单的函数,内容不多,但是可是找了不少时间,希望能帮到正在攻克...
magento SQL常用命令,数据库操作
适合于magento1.6.0以上版本的网站,先安装测试数据,再安装网站,内有使用说明
magento 常用的方法 与 总结, 对于起步学习magento 的非常有帮助
Magento Magento商城 Magento目录结构
主要包括的内容有:magento的常用设置、Magento模板制作教程、Magento商城_目录结构说明、Magento中文教程实用文档、常用的xml的文件的作用以及自定义模块的应用
magento常用插件,安装magento必备哦!
magento模版设置LOGO图片设置,magento基本资料设置,magento如何创建属性与属性集,magento基础知识,magento上传产品
magento 商城目录结构说明 magento 商城目录结构说明
NULL 博文链接:https://hudeyong926.iteye.com/blog/1416591
magento数据结构分析 magento数据字典
演示地址:http://olegnax.com/product/athlete-responsive-magento-theme/livepreview/ Athlete Magento主题,兼容...黑白2个版本,AJAX加入购物车,快速查看,高级幻灯片,博客,提供快速安装包演示数据和说明文档。
magento的SMTP插件magento的SMTP插件magento的SMTP插件
magik shoes magento 模板, magento 1.7 模板
☆ 资源说明:☆ [Packt Publishing] Magento 扩展开发入门教程 (英文版) [Packt Publishing] Getting Started with Magento Extension Development (E-Book) ☆ 图书概要:☆ Understand Magento extensions, ...
magento的常用设置实用.pdf
如何给产品描述里的关键字、字词批量添加链接?我想大家一直在的这样的插件。...说明请查看:http://www.hicoogle.com/magento-gei-chan-pin-miao-shu-guan-jian-zi-pi-liang-lian-jie-cha-jian.html
深入理解Magento 由精东博客下载下来制作成pdf
Magento插件开发手册 Magento Extension Developers Guide