【转】1.4 Magento2语法讲解
M2不是一个标准的MVC架构。
这是m2的app/code/Magento/Catalog插件代码。
可以看到,它有Controller,也有Model,也有view.
奇怪的是,在Controller找不到调用模版的代码。
这是因为我们之前讲过,m2的页面都是用xml写的,xml里是由若干个block组成的。block里调用的template就是view下面的template。
所以,这个Controller加载的是该页面的xml文件。xml再解析输出成html。
细心的你会发现,这个插件里也有一个Block目录,没错,就是它。
xml里的就是这个block,这个block里才是真正的逻辑功能代码。
到处都是block。
M2有自己的语法,封装了很多类。
增删改查
一个标准的php类如下:
<?php
namespace Zou\Test\Block;
class Demo extends \Magento\Framework\View\Element\Template{protected $_storeManager;protected $_scopeConfig;protected $_productFactory;protected $_productCollectionFactory;protected $_categoryFactory;protected $_categoryCollectionFactory;protected $_customerFactory;protected $_customerCollectionFactory;protected $_orderFactory;protected $_orderCollectionFactory;public function __construct(\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,\Magento\Store\Model\StoreManagerInterface $storeManager,\Magento\Catalog\Model\ProductFactory $productFactory,\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory,\Magento\Catalog\Model\CategoryFactory $categoryFactory,\Magento\Catalog\Model\ResourceModel\Category\CollectionFactory $categoryCollectionFactory,\Magento\Customer\Model\CustomerFactory $customerFactory,\Magento\Customer\Model\ResourceModel\Customer\CollectionFactory $customerCollectionFactory,\Magento\Sales\Model\OrderFactory $orderFactory,\Magento\Sales\Model\ResourceModel\Order\CollectionFactory $orderCollectionFactory) {$this->_scopeConfig = $scopeConfig;$this->_storeManager = $storeManager;$this->_productFactory = $productFactory;$this->_productCollectionFactory = $productCollectionFactory;$this->_categoryFactory = $categoryFactory;$this->_categoryCollectionFactory = $categoryCollectionFactory;$this->_customerFactory = $customerFactory;$this->_customerCollectionFactory = $customerCollectionFactory;}//通过产品id,获取产品的name(属性)public function getProductName($pid=1){$product = $this->_productFactory->create()->load($pid);return $product->getName();}//获取价格大于100的产品public function getProductsByPrice($price=100){$productCollection = $this->_productCollectionFactory->create();$productCollection->addAttributeToSelect('price');$productCollection->addAttributeToFilter('price', array('gt'=>$price));foreach ($productCollection as $product) {echo $product->getPrice();}return $productCollection;}//把id为10的产品价格修改为50public function setProduct(){$price = 50;$pid = 10;$product = $this->_productFactory->create()->load($pid);$product->setPrice(50);$product->save();}//删掉id为1的产品public function deleteProduct($pid=1){$product = $this->_productFactory->create()->load($pid);$product->delete();}}
?>
namespace对phper应该不陌生了,现在php7新框架基本上都是用的命名空间。
在__construct里的声明的需要的类。
比如
\Magento\Catalog\Model\ProductFactory
是产品模型类,通过这个类你可以得到单个产品的任何信息(比如属性)。\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
是产品数据集,通过这个类,你可以任意按条件(比如属性)搜索过滤产品\Magento\Catalog\Model\CategoryFactory
是分类模型类,通过这个类你可以得到单个分类的任何信息(比如属性)。\Magento\Catalog\Model\ResourceModel\Category\CollectionFactory
是分类数据集,通过这个类,你可以任意按条件(比如属性)搜索过滤分类\Magento\Customer\Model\CustomerFactory $customerFactory
是客户联系人模型类,通过这个类你可以得到单个Customer的任何信息(比如属性)。\Magento\Customer\Model\ResourceModel\Customer\CollectionFactory
是联系人数据集,通过这个类,你可以任意按条件(比如属性)搜索过滤联系人\Magento\Sales\Model\OrderFactory
是订单模型类,通过这个类你可以得到单个订单的任何信息(比如属性)。\Magento\Sales\Model\ResourceModel\Order\CollectionFactory
是订单数据集,通过这个类,你可以任意按条件(比如属性)搜索过滤订单
通过上面这个简易的php代码,你就学会了增删改查,是不是非常简单粗暴?
通过M2提供的模型数据资源类,就可以从容优雅的进行增删改查。
先卖个关子,具体的我们在第四章做插件的时候 会细讲。
【转】1.4 Magento2语法讲解相关推荐
- Mysql数据库存储过程基本语法讲解
Mysql数据库存储过程基本语法讲解 一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行.存储过程如同一门程序设计语言, ...
- python语法讲解小白入门第一篇
今天为大家分享下自己学习python3总结的语法笔记,专为python小白量身打造,如果你喜欢可以点个关注哦,男同胞关注了就是好哥们儿,哈哈,兄弟,有啥问题找我探讨,保你解决,考试不挂科的那都是,女同 ...
- Android 代码混淆语法讲解及常用模板(转)
转载请注明原博客地址 Android 代码混淆语法讲解及常用模板 前言 混淆对于每一个开发者来说都不陌生,对于大多数 APP 而言,在上线之前,通常会进行代码混淆,加固,防止自己的 APP 被别人轻 ...
- Go语言基础语法讲解与学习
Go语言基础语法讲解与学习 1 Go语言基础知识介绍 介绍Go语言之前,我们先了解一下有哪些开源项目是Go语言开发的,其中就包括 Docker.Go-Ethereum.Thrraform 和 Ku ...
- 书写博客: Markdown 语法讲解
Typora软件 学习 Markdown 语法讲解 一级目录 二级目录 三级目录 三级目录 字体 引用 分割线 图片 超链接 列表 表格 代码 Markdown 语法讲解 一级标题一个#符号加空格回车 ...
- 学习工具使用 Markdown语法讲解
Markdown语法讲解 文件类型后缀名为 .md 文本内容可变为源代码模式 推荐使用编辑器 Typora 基本使用类型 标题 使用#号加上空格和标题内容,标题层级由#号数量决定逐级递增,例如一级标题 ...
- python语法讲解小白入门第二篇
今天继续为大家分享下自己学习python3总结的语法笔记,专为python小白量身打造,如果你喜欢可以点个关注哦!如果你是刚入门的python小白的话,建议你从第一篇开始学起,这样才能效果更好一些,点 ...
- 【C语言入门】SDUT《程序设计基础I 》实验1-顺序结构程序设计题解 c语言入门语法讲解
SDUT<程序设计基础I >实验1-顺序结构程序设计题解 && c语言语法讲解 链接 前言: 为方便更多同学入门C语言, 特在此编写SDUT OJ c语言入门150题题解即 ...
- Java基础代码语法讲解上
因为最近有多余的时间,可以码字,Java基础虽然真的很基础,但是我学起来又慢又吃力,我想不能忘记自己学语言学不会的样子. 这篇文章我决定写的很零碎,而且想尽量写的很通俗易懂,来锻炼自己说人话的能力. ...
最新文章
- 数据结构(队列实现篇)
- html 鼠标focus 背景,强大的CSS:focus-visible伪类真的太6了!
- 二叉树的建立和遍历的各种问题
- 最新临床肿瘤学文献精选(2021.12.5-2021.12.11)
- Shell编程 之 for 循环
- 【CodeForces - 227B 】Effective Approach (STL,思维)
- pythonindexerror_Python index错误值不在list…on.index(value)
- 福利网站!程序员面试——算法工程师面试大全第一部分
- 少有人挖但仍可获得奖金的10类Web 漏洞(下)
- 标准BST二叉搜索树写法
- VirtualBox是什么
- 用CSS编写登陆页面(含源代码)
- MAC - 必备软件安装与使用
- 利用saopanel系统的UDP转发模式破解校园网
- 微信小程序实现文件上传
- 获取U盘 VID,PID
- arm9开发板学习笔记之程序烧录
- python公众号接口_用Python实现微信公众号API素材库图文消息抓取
- 论文导读:TOWARDS END-TO-END SPOKEN LANGUAGE UNDERSTANDING
- 搜索效果和搜索动画效果
热门文章
- 题解 P5301 【[GXOI/GZOI2019]宝牌一大堆】
- sql server 自定义函数
- [原创]mybatis中整合ehcache缓存框架的使用
- 思想已经高过行动好多了
- 华为云服务器安装win10系统,云服务器可以安装win10吗
- github基本使用教程
- 如何实现listbox选项,然后双击鼠标实现选项的删除
- 火星云分发全网视频_好用的短视频一键分发软件,让工作效率提高10倍
- 405 not allowed什么意思_二驴质问散打:为什么不救天道!面临一个亿赔款?次惑小仙女宣布与可乐分手!...
- java 页面输出一个页面_java学习之:一个完整页面输出信息的过程(以输出Doctor表中信息为例)...