Orchard 之:Widget,兼看 Layer 在权限控制中的作用

简介: 一:Widget 可以理解为控件,可以直接被页面所引用。行为类似与分部页面,比如,我们可以创建一个 商品列表 Widget,然后这个 Widget 就可以被很多页面所引用。 理解 Widget 这个概念,我们不得不理解另外两个概念: 1:Layer Orchard 默认有这么几个层,Default、Authenticated、Anonymous、Disabled、TheHomepage。

一:Widget

可以理解为控件,可以直接被页面所引用。行为类似与分部页面,比如,我们可以创建一个 商品列表 Widget,然后这个 Widget 就可以被很多页面所引用。

理解 Widget 这个概念,我们不得不理解另外两个概念:

1:Layer

Orchard 默认有这么几个层,Default、Authenticated、Anonymous、Disabled、TheHomepage。Layer 用于承载什么时候 Widget 将会被展现,这么讲大家一定觉得很抽象,其实 Layer 存在的意义完全在于其Rule。我们新建或者修改 Layer 的时候,就会出现 Rule,那么,Layer Rule 到底是什么,

它是一个布尔表达式,当这个表达式的值为 true 的时候,层中的 Widget 就显式,否则不显式。

举例来说:如果我们新建一个层,其 Rule 如果,

填写为:(not authenticated and url("~/about")) or authenticated

则表明:(未登录用户 且 URL 中 有 about)的可显式,或者 登录用户 可显式

注意,authenticated 作为 orchard 这里的关键字,被程序判断为 登录用户 的意思。如果有兴趣,可寻求代码验证。全部的被 Layer rule 表达式支持的关键字如下:

url("<url path>"):url匹配,如: url("~/home*")

authenticated:True 如果用户登录的话.

ContentType("<Type>"):True 如果 content type 匹配的话,如:ContentType("Page")

not:逻辑 NOT.

and:逻辑 AND.

or:逻辑:OR.

1.1 Layer 权限控制

鉴于 Layer 的这个特性,它的一个重要的作用可被用于权限控制。如 Authenticated 这个层,其 Rule 直接为 authenticated,这样的话,就意味着,这个层里的所有东西,只有登录用户才可见的。

 

2:Zone

理解为页面上的 占位(或者叫占位符),在页面展现的时候,它被用来展现 Widget。

image

我们要清楚:站点Theme实际上是定义 Layer,而 Layer 则是定义哪个 Zone 可用。我们在上图中看到的这些 Zone 就是当前 Theme 的所有的 Zone。

我们随便编辑一个 Widget,就能大致看清楚它们之间的关系了,如下:

image

Creative Commons License本文基于 Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 http://www.cnblogs.com/luminji(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
目录
相关文章
|
编译器 API iOS开发
block与copy关系的恩怨情仇,你就不想知道吗?
一、哪些情况block自动copy到堆上? 二、堆栈上的block对auto变量的引用是什么关系? 2.1、block是在栈上 2.2、block被拷贝到堆上 2.3、block从堆中删除
208 1
block与copy关系的恩怨情仇,你就不想知道吗?
|
存储 监控 区块链
什么是Matic马蹄链polygon/MetaForce/Forsage/魔豹联盟/佛萨奇2.0系统开发(开发源码)丨详细规则
 去中心化存储技术的结构为去中心化节点网络,它采用分布式存储方式来存储数据并保护这些数据。分布式存储方式使用多个结点以多层结构来管理数据,使得每个结点都有能力参与到存储系统的监控、管理和数据同步行为中,从而改变传统的数据备份结构,使其能够保护用户的数据不被任何人或机构访问。
|
存储 SQL 缓存
深入分析币安链/波场链/马蹄链Meta force佛萨奇2.0智能合约dapp系统开发运营版丨币安链/波场链/马蹄链Meta force佛萨奇2.0源码案例开发
存储模块中的Block DB、State DB、History DB等都是封装后的DB对象,其具体实现要基于特定的数据库引擎,比如LevelDB、BadgerDB、TikvDB、MySQL等数据库引擎。为了实现可插拔的数据库引擎,长安链在数据库引擎之上封装了一层接口,并将LevelDB、BadgerDB、TikvDB、MySQL等数据库封装成DB provider。用户可以根据业务需求选择合适的数据库引擎作为长安链的底层存储组件。
|
容器
「站在上帝的角度」谈谈Element组件结构-Input
「站在上帝的角度」谈谈Element组件结构-Input
|
前端开发 iOS开发 存储
【我们都爱Paul Hegarty】斯坦福IOS8公开课个人笔记21 深入多MVC模式、Segue过渡
上一话中我们介绍了多MVC模式并且以导航控制器为例讲解了这三个控制器管理多个MVC的工作原理。
1002 0
|
前端开发 iOS开发 容器
「站在上帝的角度」谈谈Element组件结构-Switch
「站在上帝的角度」谈谈Element组件结构-Switch

热门文章

最新文章