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里的声明的需要的类。

比如

  1. \Magento\Catalog\Model\ProductFactory是产品模型类,通过这个类你可以得到单个产品的任何信息(比如属性)。
  2. \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory是产品数据集,通过这个类,你可以任意按条件(比如属性)搜索过滤产品
  3. \Magento\Catalog\Model\CategoryFactory是分类模型类,通过这个类你可以得到单个分类的任何信息(比如属性)。
  4. \Magento\Catalog\Model\ResourceModel\Category\CollectionFactory是分类数据集,通过这个类,你可以任意按条件(比如属性)搜索过滤分类
  5. \Magento\Customer\Model\CustomerFactory $customerFactory是客户联系人模型类,通过这个类你可以得到单个Customer的任何信息(比如属性)。
  6. \Magento\Customer\Model\ResourceModel\Customer\CollectionFactory是联系人数据集,通过这个类,你可以任意按条件(比如属性)搜索过滤联系人
  7. \Magento\Sales\Model\OrderFactory是订单模型类,通过这个类你可以得到单个订单的任何信息(比如属性)。
  8. \Magento\Sales\Model\ResourceModel\Order\CollectionFactory是订单数据集,通过这个类,你可以任意按条件(比如属性)搜索过滤订单

通过上面这个简易的php代码,你就学会了增删改查,是不是非常简单粗暴?

通过M2提供的模型数据资源类,就可以从容优雅的进行增删改查。

先卖个关子,具体的我们在第四章做插件的时候 会细讲。

【转】1.4 Magento2语法讲解相关推荐

  1. Mysql数据库存储过程基本语法讲解

    Mysql数据库存储过程基本语法讲解 一般情况下MYSQL以:结尾表示确认输入并执行语句,但在存储过程中:不是表示结束,因此可以用该命令将:号改为//表示确认输入并执行.存储过程如同一门程序设计语言, ...

  2. python语法讲解小白入门第一篇

    今天为大家分享下自己学习python3总结的语法笔记,专为python小白量身打造,如果你喜欢可以点个关注哦,男同胞关注了就是好哥们儿,哈哈,兄弟,有啥问题找我探讨,保你解决,考试不挂科的那都是,女同 ...

  3. Android 代码混淆语法讲解及常用模板(转)

    转载请注明原博客地址  Android 代码混淆语法讲解及常用模板 前言 混淆对于每一个开发者来说都不陌生,对于大多数 APP 而言,在上线之前,通常会进行代码混淆,加固,防止自己的 APP 被别人轻 ...

  4. Go语言基础语法讲解与学习

    Go语言基础语法讲解与学习 1 Go语言基础知识介绍 ​ 介绍Go语言之前,我们先了解一下有哪些开源项目是Go语言开发的,其中就包括 Docker.Go-Ethereum.Thrraform 和 Ku ...

  5. 书写博客: Markdown 语法讲解

    Typora软件 学习 Markdown 语法讲解 一级目录 二级目录 三级目录 三级目录 字体 引用 分割线 图片 超链接 列表 表格 代码 Markdown 语法讲解 一级标题一个#符号加空格回车 ...

  6. 学习工具使用 Markdown语法讲解

    Markdown语法讲解 文件类型后缀名为 .md 文本内容可变为源代码模式 推荐使用编辑器 Typora 基本使用类型 标题 使用#号加上空格和标题内容,标题层级由#号数量决定逐级递增,例如一级标题 ...

  7. python语法讲解小白入门第二篇

    今天继续为大家分享下自己学习python3总结的语法笔记,专为python小白量身打造,如果你喜欢可以点个关注哦!如果你是刚入门的python小白的话,建议你从第一篇开始学起,这样才能效果更好一些,点 ...

  8. 【C语言入门】SDUT《程序设计基础I 》实验1-顺序结构程序设计题解 c语言入门语法讲解

    SDUT<程序设计基础I >实验1-顺序结构程序设计题解 && c语言语法讲解 链接 前言: 为方便更多同学入门C语言, 特在此编写SDUT OJ c语言入门150题题解即 ...

  9. Java基础代码语法讲解上

    因为最近有多余的时间,可以码字,Java基础虽然真的很基础,但是我学起来又慢又吃力,我想不能忘记自己学语言学不会的样子. 这篇文章我决定写的很零碎,而且想尽量写的很通俗易懂,来锻炼自己说人话的能力. ...

最新文章

  1. 数据结构(队列实现篇)
  2. html 鼠标focus 背景,强大的CSS:focus-visible伪类真的太6了!
  3. 二叉树的建立和遍历的各种问题
  4. 最新临床肿瘤学文献精选(2021.12.5-2021.12.11)
  5. Shell编程 之 for 循环
  6. 【CodeForces - 227B 】Effective Approach (STL,思维)
  7. pythonindexerror_Python index错误值不在list…on.index(value)
  8. 福利网站!程序员面试——算法工程师面试大全第一部分
  9. 少有人挖但仍可获得奖金的10类Web 漏洞(下)
  10. 标准BST二叉搜索树写法
  11. VirtualBox是什么
  12. 用CSS编写登陆页面(含源代码)
  13. MAC - 必备软件安装与使用
  14. 利用saopanel系统的UDP转发模式破解校园网
  15. 微信小程序实现文件上传
  16. 获取U盘 VID,PID
  17. arm9开发板学习笔记之程序烧录
  18. python公众号接口_用Python实现微信公众号API素材库图文消息抓取
  19. 论文导读:TOWARDS END-TO-END SPOKEN LANGUAGE UNDERSTANDING
  20. 搜索效果和搜索动画效果

热门文章

  1. 题解 P5301 【[GXOI/GZOI2019]宝牌一大堆】
  2. sql server 自定义函数
  3. [原创]mybatis中整合ehcache缓存框架的使用
  4. 思想已经高过行动好多了
  5. 华为云服务器安装win10系统,云服务器可以安装win10吗
  6. github基本使用教程
  7. 如何实现listbox选项,然后双击鼠标实现选项的删除
  8. 火星云分发全网视频_好用的短视频一键分发软件,让工作效率提高10倍
  9. 405 not allowed什么意思_二驴质问散打:为什么不救天道!面临一个亿赔款?次惑小仙女宣布与可乐分手!...
  10. java 页面输出一个页面_java学习之:一个完整页面输出信息的过程(以输出Doctor表中信息为例)...