博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
magento-----(一)前后台url的区别分析----(二)模块的执行过程分析
阅读量:4199 次
发布时间:2019-05-26

本文共 3617 字,大约阅读时间需要 12 分钟。

本来想写成2篇,可是csdn对新号有限制,一天最多五篇,所以就把两篇写一块了!

magento-----(一)前后台url的区别分析:

前序:

在写模块的书写过程,一下子蹦出来一个问题,前台和后台是通过什么方式辨别url为前台和

后台的url??

刚发现的:关于magento前后台的URL,也就是为什么这个url访问后台,不访问前台的问题:
观察后台的url:

5fb5f19df4d5446637ffa4f/

前台的url:

可以得出:后台的url带有个key值,而且每个都带,我现在还找不出来它的根源,也就是它怎

么判断的,我只能猜了,我猜的是:在后台定义一个连接的时候(如:cms-page,一般在

system.xml 文件中注册),magento就把这个连接,生成一个对应的key,然后表明这个是后

台的,design对应的是adminhtml下的,而不是frontend,故只要在adminhtml中定义了,如:

 <adminhtml>

  <menu>
   <cms>
    <children>
     <news module="profile">
      <title>News</title>
      <sort_order>60</sort_order>

      <action>profile/adminhtml_profile/news</action>

     </news>
    </children>
   </cms>
  </menu>
  </adminhtml>

在菜单cms下面会生成一个news的菜单子项,

href="index.php/profile/adminhtml_profile/news/key/f349r4rifei",key值,我认为是在后台列表中的编号识别!

标注这个链接为后台链接,使用的后台界面要使用

app/design/adminhtml/default/default/layout,加载里面的xml文件,

后台的配置:<menu>等(从标签<adminhtml>中找)

(后台的一些东西的添加,不必和前台一样重写,可以通过配置方法添加,就像menu从一个数

组里面读取值差不多,然后显示出来)

也就是点击他的时候,会去找controler文件profile/adminhtml/profile.php 执行

newsAction方法,

例如:

<adminhtml>
 <layout>
            <updates>
                <profile>
                    <file>profile.xml</file>
                </profile>
            </updates>
        </layout>
</adminhtml>
就是加载app/design/adminhtml/default/default/layout/profile.xml文件。

说明的是:在菜单栏加一个子菜单,子菜单对用的url就会生成对用的key值,点击后访问的layout为adminhtml下面的layout

剩下的配置,前后台没大有什么区别了!!

 

----(二)模块的执行过程分析

 

 

1

在app/etc/modules/RichardMason_Profile.xml里面定义
<?xml version="1.0"?>
<config>
 <modules>
  <RichardMason_Profile>
   <active>true</active>
   <codePool>community</codePool>
  </RichardMason_Profile>
 </modules>
</config>
1.1,模块定义:
模块名:RichardMason_profile,
active:状态是否为激活状态。

codePool模块代码放的位置。本位置为community。
2
到community里面定义模块
在community下面建立RichardMason/profile/
然后再profile下面建立一些列的子文件夹。
Block ,controllers ,etc,Helper,Model,sql
3
在etc下面建立config.xml文件,改文件为配置文件,下面解析一下这个文件:
<config></config>:
里面定义
3.1
<modules></modules>
里面的模块名和文件路径对应,具体为什么要对应我也说不上来。譬如:

<RichardMason_Profile>

3.2
<frontend></frontend>
就是design那一块的定义
3.2.1<routers>
定义<frontname>

3.2.2<layout>加载layout.xml文件

3.3<admin>
<routers>
3.4
<adminhtml>
配置后台节点,该块一旦配置,,
譬如<action>
<adminhtml>
<menu>
<cms>
<children>
<news module="profile">
<action>profile/adminhtml_profile/news</action>
</news>
3.4.1
3.4.1.1
改块就会在cms下面生成菜单,而且生成的带有key的链接,用来表示该链接为后台链接。
3.4.1.2
访问的layout为adminhtml下面的,在layout的handle:<profile_adminhtml_profile_news>
3.4.2
<adminhtml>
  <layout>
            <updates>
                <profile>
                    <file>profile.xml</file>
                </profile>
            </updates>
        </layout>
指定
资源定义:
<adminhtml>
   <acl>
       <resources>
    <all>
  <title>Allow Everything</title>
    </all>
    <admin>
       <children>
  <RichardMason_Profile>
     <title>Profile Module</title>
     <sort_order>10</sort_order>
  </RichardMason_Profile>
       </children>
    </admin>
 </resources>
    </acl>

 

 

资源的定义方法
1>也就是说在adminhtml中药定义显示部分(菜单部分),用于产生后台链接,指定action。

进而用于后台显示的layouthandle。

2>update用于显示的layout中的xml文件。
3>资源权限定义。
3.4
<global>
为什么叫global呢?因为前台界面和后台界面都可以使用这里德资源,一般model,helper,

resources,block都在这里定义。

3----小结:这里定义module,frontend,admin,adminhtml,global等

module定义模块名称
frontend定义frontname,layout
admin定义frontname,对这块的认识我还是有点模糊,先这样吧。
<adminhtml>,定义后台显示部分,如<menu>,layout,<acl>权限等
global定义helpers,helpers,blocks等。
关于<models>,<helpers>,<blocks>等在以后介绍,先往下走。

4

现在到后台,应该可以看到cms下面的news显示出来了,但是点进去是什么也没有的
因为现在还没有写controler类

在前面:

<cms>
 <children>
  <news module="profile">
   <title>News</title>
   <sort_order>60</sort_order>
   <action>profile/adminhtml_profile/news</action>
  </news>
 </children>
所以路径为:RichardMason_Profile_Adminhtml_ProfileController
RichardMason_Profile_Adminhtml_ProfileController extends

Mage_Adminhtml_Controller_action

编写newsaction方法。

public function newsAction(){

  $this->loadLayout()->renderLayout();
 }
读取layout里面的<default> </default>以及<profile_adminhtml_profile_news>这个handle

里面的block。

template里面的文件读取type中的信息,生成页面
生成页面。。。。。

 

转载地址:http://jrdli.baihongyu.com/

你可能感兴趣的文章
论文浅尝 | 面向时序知识图谱推理的循环事件网络
查看>>
论文浅尝 | 多标签分类中的元学习
查看>>
开放开源 | DeepKE:基于深度学习的开源中文关系抽取工具
查看>>
论文浅尝 | Meta Relational Learning: 基于元关系学习的少样本知识图谱推理
查看>>
论文浅尝 | 基于属性embeddings的跨图谱实体对齐
查看>>
论文浅尝 | Doc2EDAG:一种针对中文金融事件抽取的端到端文档级框架
查看>>
技术动态 | 数据库研究者视角下的知识图谱研究
查看>>
论文浅尝 | 基于用户反馈的交互式自然语言回答系统提升机制
查看>>
研讨会 | 知识图谱引领认知智能+
查看>>
新书速递 | 《知识图谱:方法、实践与应用》
查看>>
论文浅尝 | 使用预训练深度模型和迁移学习方法的端到端模糊实体匹配
查看>>
技术动态 | 跨句多元关系抽取
查看>>
论文浅尝 | 利用知识-意识阅读器改进的不完整知识图谱问答方法
查看>>
论文浅尝 | 如何利用外部知识提高预训练模型在阅读理解任务中的性能
查看>>
论文浅尝 | 使用孪生BERT网络生成句子的嵌入表示
查看>>
论文浅尝 | 利用问题生成提升知识图谱问答
查看>>
公开课 | 知识图谱构建与应用概述
查看>>
论文浅尝 | 探索将预训练语言模型用于事件抽取和事件生成
查看>>
论文浅尝 | BERT:Pre-training of Deep Bidirectional Transformers
查看>>
论文浅尝 | SPARQL 语言的 ASK 查询表达性研究进展
查看>>