关于人员配置问题ACL的问题。。

Magento拥有十分强大的后台管理系统莋为一名开发人员,这套后台管理系统可以让你的用户简单直接的人员配置问题Magento系统或者你创建的模块和Magento的其他功能一样,你第一次使鼡这套管理系统的时候可能觉得麻烦但是一旦你上手了,你会发现它强大的功能是那么吸引人那么让我们开始吧。我们这一章的例子依然是基于Helloworld模块



7.1 添加系统人员配置问题文件

首先我们要为模块添加一个系统人员配置问题文件。这个文件和“config.xml”是不搭界的:

和全局人員配置问题(global config)相似系统人员配置问题也是单独存储的。我们可以通过下面这段代码来获取系统人员配置问题文件:


7.2 添加一个标签页

我們首先在后台系统管理页面添加一个标签页(Tab)标签页就是后台“System->Configuration”页面左侧的导航栏。默认的标签页有GeneralCatalog,CustomersSales,Services等等我们来创建一個新的标签页叫做“Hello Config”。创建如下文件:

我们来解释一下各个节点(Tag)的意思“< tabs>”就是我们要添加的标签页的定义节点,“helloconfig”是节点的ID你可以任意命名这个ID,但是必须全局唯一也就是不能和别人用同样的ID。这个ID是用来唯一标示你的标签页的“module=helloworld”,意思是这个标签页屬于哪个模块“< label>”节点的内容是标签的名字,也就是要显示在界面上的名字“< sort_order>”指明了这个标签页显示的位置。


正如许多其他的PHP MVC系统┅样Magento也有帮助类(Helper Classes)。这些类用来提供一些不适合放在模型视图或者控制器中的功能。Magento的帮助类也是采用分组类名的机制也就是说峩们可以覆盖默认的帮助类,同时我们需要在config.xml中指定帮助类的基类名

Magento系统默认模块有一个默认的帮助类。正如我们上面的异常显示我們的Helloworld模块并没有指定一个默认的帮助类。下面让我们来添加一个修改config.xml

你现在应该对这类人员配置问题相当熟悉了。“< helloworld>”节点就是模块的洺字“< class>”就是帮助类的基类名,命名方式如下:

帮助类是通过全局对象Mage的静态方法“helper”来装载的

根据我们的人员配置问题,上面这行玳码将会装载以下类:

我们上面说过Magento默认每个模块有一个帮助类“data”:

上面这两行代码是等价的都会装载以下类:

下面我们来创建我们嘚帮助类:

清空Magento缓存,重新装载页面你会发现错误不见了,但是我们的标签页还是没有出来如果你好奇帮助类究竟能干什么,建议你詓看看“Mage_Core_Helper_Abstract”类


好了,帮助类的介绍到此结束下面我们来看看为什么我们的标签页不显示出来。在Magento中每一个标签页都包含很多段(section)。举个例子“Advanced”标签页默认包含“Admin, System, Advanced, Developer”四个段。如果一个标签页不包含任何段那么这个标签页不会被显示出来。下面我们在system.xml中添加“<

这裏有些节点你应该很熟悉就不多解释了,来讲讲以前没见过的

和前面的相似,这个节点是用来唯一标示你的段“helloworld_options”就是段的ID,可以隨意取名只要不重复就好。
这个节点有点怪“< frontend_type>”在人员配置问题文件的其他部分有用(稍后会讲),放在这里其实没什么作用但是核心模块在此处的人员配置问题文件都包含这个节点,所以我们也把它添加进去

好了,我们已经人员配置问题好段了清空缓存,再一佽刷新页面你应该看到“HELLO CONFIG”标签页显示出来了。


7.5 访问控制(ACL权限人员配置问题)

如果你刚才点了我们创建的标签页下面的“Hello World Config Options”你大概會很失望。什么都没有显示出来连左边的导航栏都没有了。这是因为“Adminhtml”在权限控制列表(Access Control List, ACL)中找不到我们创建的段的权限信息【注:Adminhtml就是Magento的后台管理系统,属于Magento的一个核心模块】

ACL是一个很复杂的话题但是我会介绍一些最基本的概念,以便于理解Magento的权限控制这部分內容和上下文关系不大,如果你不感兴趣可以直接跳到本节结尾,复制一段XML到你的config.xml就行了

在Magento中,对于有些资源的访问时有限制的用戶必须先经过认证才能访问相关资源。在这里资源(Resource)是一个广义的概念,它可能是指一个页面也可能是一个功能。Magento的系统人员配置問题功能(System Config)就是需要认证才能访问的资源

任何一个资源都是通过一个URI来标识。比如说“web”人员配置问题段(属于后台管理General标签页)的URI昰:

当一个用户访问一个受保护的资源的时候后台管理系统(Adminhtml)的执行控制器会执行以下步骤:

1)为用户正在访问的资源生成一个URI。
2)根据ACL系统检查该用户是否有权限访问指定的资源
3)如果用户拥有访问权限,那么进行用户指定的操作否则,跳转到相应的错误页面(吔可能是停止操作或者显示空白页面)

刚才说ACL中没有我们人员配置问题段的信息,那么我们来创建一个请注意,如果你是创建一个新嘚段那么你需要创建一个新的权限,如果你在已有的段上添加内容你不需要创建权限。

让我们来分析一下这段代码所有的资源定义嘟包含在如下代码中:

在节点下面,每一个子节点都是URI的一部分比如:

清空Magento缓存,刷新页面你应该能看到我们创建的人员配置问题段叻,标准的后台管理页面但是主体内容是空的,只有一个“Save Config”按钮你可能需要重新登录后台管理才能看到正确的页面。那是因为后台管理有一些额外的缓存【注:我们添加了权限以后,管理员是默认拥有该权限的所以我们用管理员登录后台管理系统就能访问我们创建的段】


按照逻辑,这里应该讲的内容是添加选项Mageto中,选项是按照组(Group)来划分的所以我们在添加选项之前得先添加组。修改system.xml:

这里吔没什么好解释的刷新一下页面看看你就什么都明白了。

最后我们要添加每一个单独的人员配置问题选项。人员配置问题选项是以节點的形式添加到节点下面的

这里有一个节点需要说明,“< frontend_type>”刚才说这个节点没什么用但是这里有用了,这个节点说明了这个选项的数據类型你可以把它换成别的类型,比如“time”这里支持大部分默认的Varien定义的数据类型(lib/Varien/Data/Form/Element)。这个有点像是工厂(Factory)设计模式让我们把類型改成“select”。你会看到一个下拉框但是没有选项。我们来添加选项首先我们要添加一个源模型(Source

“< source_model>”定义了源模型的URI。和我们以前創建的模型一样源模型也是一个模型,为“select”提供了默认的数据我想我不说你也明白,根据这里的URI定义我们要创建以下文件:

源模型提供了一个方法“toOptionsArray”,返回的数据时用来填充我们之前定义的人员配置问题选项的这个方法在运行时会被“initFields”调用。“initFields”在以下类中萣义:


我们这里调用了帮助类的翻译函数(__)来获取数据虽然不是必要的,但调用翻译函数总是一个好习惯说不定哪天你要将模块翻譯成日文呢。【注:值得注意的是我们这里创建的模型不需要继承任何父类只需要拥有“toOptionArray”方法就可以了。我觉得这个很不科学起码偠继承一个接口吧】


7.8 在已有的人员配置问题段或者组中添加数据

除了新建一个标签页,或者人员配置问题段你也可以利用已有的标签页囷人员配置问题段,向里面添加内容比如我们添加以下代码到system.xml:


7.9 如何获得人员配置问题数据

到目前为止,我们只是讲了如何设置Magento可以讓用户可以人员配置问题我们的模块。现在让我们来看看如何获取用户的人员配置问题数据

上面这行代码就可以获取我们上面人员配置問题的那个“select”选项的数据。这个函数的参数是我们要获取的数据的URI格式如下:

你也可以通过以下代码来获取一个组或者段的所有值:

朂后,如果你想获取针对某个特定店面(store)的数据你可以传入store ID:


这一章我们讲了如何在Magento的后台管理中添加个性化的人员配置问题。我们吔顺便介绍了帮助类的使用和ACL基础这里最重要的内容是后台人员配置问题的层级结构,标签页包含了人员配置问题段人员配置问题段包含了组,组包含了人员配置问题选项我们将在以后的章节中介绍系统人员配置问题的高级内容,包括自定义格式数据验证等等。

关于ACCESS数据库的输入掩码设置问题請教-急在线等 [问题点数:0分]

在ACCESS数据表中设置电话号码的输入掩码属性,格式为(3-4位区号)7-8位电话号码,应该如何正确设置? 我设置为"("0009")"为什么显示不对?

為什么不直接输入11位对取出来的电话号码分析呢!

数据校验最好通过程序来完成,不要将错误带到数据库里面并且用数据库来提示!!

不好意思,我是新手不太理解二位的意思.

我觉得按那样输应该是正确的啊.但实际输入的结果是,如果在()内只输入三位而后面输入8位,系统会自动向前补充一位,即()内为4位而后面变成七位,这是为什么?

究竟该怎样设置掩码? 还是在VB的控件中再进行设置?

但我想至少在ACCESS也应该能够进行设置的啊.

匿名用戶不能发表回复!

我要回帖

更多关于 人员配置问题 的文章

 

随机推荐