成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[譯]Magento2 高級(jí)路由

PumpkinDylan / 1653人閱讀

摘要:以上是的的目錄路由器配置??紤]重寫(xiě)模塊以上文件文件使用的操作字符串。例如,如果你想回到第一個(gè)模塊在這個(gè)系列和添加前端端點(diǎn),所有你需要做的就是添加以下配置和以下控制器文件。默認(rèn)操作字符串段我們從先進(jìn)的路由移動(dòng)之前,有一些最后要提。

今天,我們要介紹的幾個(gè)Magento的路由系統(tǒng)的高級(jí)功能,并討論一些看似急性銳邊的歷史。雖然所有在這篇文章中提供的技術(shù)可能不是最好的方式來(lái)實(shí)現(xiàn)自己的目標(biāo),作為工作的Magento開(kāi)發(fā)者你需要知道他們是可能的,而其他開(kāi)發(fā)者(包括Magento的核心工程團(tuán)隊(duì))可能已經(jīng)使用他們。

本文假定您有較好的Magento 2模塊經(jīng)驗(yàn),這可能不適合初學(xué)者。如果這是你,用評(píng)論來(lái)問(wèn)你的問(wèn)題或指向你的堆疊交換的問(wèn)題。

Magento的URL在Action中

作為一個(gè)PHP程序員,當(dāng)你需要?jiǎng)?chuàng)建在Magento的URL,可以使用getUrl塊或URL模型對(duì)象的方法。

Mage::getUrl("foo/baz/bar");
$urlModel->getUrl("foo/baz/bar");
$this->getUrl("foo/baz/bar");

這是Magento的1和2的Magento真正在Magento 2你沒(méi)有進(jìn)入全球Mage::getUrl的方法,所以你需要注入要通過(guò)特定的URL模式自動(dòng)構(gòu)造函數(shù)依賴注入。網(wǎng)址模型允許PHP程序員治療的URL作為一個(gè)簡(jiǎn)單的操作字符串,然后讓核心系統(tǒng)構(gòu)建代碼的最終呈現(xiàn)的網(wǎng)址。如果你只做過(guò)前端的工作,這似乎有點(diǎn)小題大做,但如果URL結(jié)構(gòu)需要在將來(lái)改變或適應(yīng)多種環(huán)境是有利的。大多數(shù)Web編程框架認(rèn)為這是一個(gè)必要的功能。

我們不會(huì)太深入探究網(wǎng)址模型今天-我們都感興趣的是操作字符串,這些URL方法接受。乍一看,你可能會(huì)覺(jué)得foo/baz/baz結(jié)構(gòu)直接映射到frontName/controllerName/actionName一個(gè)URL的Magento的結(jié)構(gòu)。你幾乎是正確的。實(shí)際的結(jié)構(gòu)。routeId/controllerName/actionName

當(dāng)你設(shè)置一個(gè)routes.xml為你的模塊文件,可以使用XML結(jié)構(gòu)看起來(lái)像這樣



    

也就是說(shuō),你設(shè)置一個(gè)節(jié)點(diǎn)與id和frontName屬性。該id標(biāo)識(shí)唯一路由節(jié)點(diǎn)在Magento的系統(tǒng),并frontName定義了你的URL的第一部分。

當(dāng)Magento的產(chǎn)生從操作字符串的URL一樣foo/baz/bar,它采用了第一段查找一個(gè)在合并后的XML樹(shù)節(jié)點(diǎn),然后使用該路由節(jié)點(diǎn)的frontName作為第一個(gè)URL段。

這不是明顯的事情,你可以在Magento的多年而不自知地發(fā)展。這是因?yàn)榇蠖鄶?shù)模塊使用的路線ID和相同的名字前面。

例如,您可以在中看到這個(gè)catalog模塊



    

無(wú)論是id和frontName屬性catalog。該公約還存在在Magento 1。



    
        
            standard
            
                Mage_Catalog
                catalog
            
        
    
    

以上是Magento的1的目錄路由器配置。單個(gè)節(jié)點(diǎn)下配置了一個(gè)frontName名為catalog。在Magento 2,該節(jié)點(diǎn)下已打開(kāi)的,與id替換Magento的1個(gè)節(jié)點(diǎn)name屬性。(即。

這種約定可以很容易地看一個(gè)URL操作字符串,并獲得最終的URL將是什么樣子一個(gè)粗略的想法。然而,有一個(gè)巨大的例外:Magento的管理網(wǎng)址。

Magento管理網(wǎng)址

在Magento 1,主要管理路徑是與以下配置(在Magento的核心)



    
        
            admin
            
                Mage_Adminhtml
                admin
            
        
    

也就是說(shuō),在單個(gè)節(jié)點(diǎn)命名建立一個(gè)frontName命名admin。這延續(xù)到Magento的2。

File: vendor/magento/module-backend/etc/adminhtml/routes.xml


    

這意味著,在Magento 1,操作字符串一樣adminhtml/foo/bar會(huì)翻譯成看起來(lái)像一個(gè)完整的URL http://example.magento.com/ad...。也就是說(shuō),第一網(wǎng)址段,和前面的名稱,將admin代替adminhtml。

這是一個(gè)奇怪的例外,Magento的匹配前面的名字和路由器ID的一般慣例,并有可能少了刻意的設(shè)計(jì)決定比它的Magento 1發(fā)射一個(gè)半完成的概念區(qū)(adminhtml,frontend)實(shí)現(xiàn)的。

無(wú)論如何,你仍然可以找到在Magento 2的代碼庫(kù)這種非決定的證據(jù)。

Magento的管理員入口網(wǎng)址

在Magento 1,adminhtml路由器ID是什么保證了管理的URL開(kāi)始以字符串的一部分/admin,而Magento的區(qū)域被設(shè)置為adminhtml。

然而,在Magento 2,每一個(gè)在路線設(shè)置etc/adminhtml/routes.xml文件將自動(dòng)與該字符串前綴admin。這就是讓我們用我們自己的frontName這些adminhtml/routes.xml文件。

這最終有上仍然使用舊的管理網(wǎng)址,一個(gè)奇怪的副作用adminhtml路由器ID。考慮URL重寫(xiě)模塊



以上menu.xml文件文件使用的操作字符串a(chǎn)dminhtml/url_rewrite/index。Magento的結(jié)束產(chǎn)生這樣的網(wǎng)址

http://magento.example.com/ad...
這是與開(kāi)頭的URL /admin/admin。這是2管理員字符串。第一個(gè)來(lái)自/admin該Magento的預(yù)先考慮到URL段每一個(gè)管理URL。第二個(gè)使用來(lái)自Magento的adminhtml路線ID查找一個(gè)frontName屬性。

這似乎是傳統(tǒng)的URL自動(dòng)轉(zhuǎn)換成菜單項(xiàng),雖然當(dāng)我問(wèn)起這個(gè)在一月份Magento的建筑師,他們最初對(duì)這個(gè)問(wèn)題感到困惑,然后說(shuō)這兩種管理URL格式(adminhtml路徑ID /前名稱和自定義路徑ID /前名)是有效的,但自定義路由標(biāo)識(shí)和前面的名字被優(yōu)先考慮。

由于缺乏明確的初始規(guī)則,缺乏核心團(tuán)隊(duì)的堅(jiān)持這些后來(lái)下旨規(guī)則,工作Magento的開(kāi)發(fā)商將要熟悉這兩個(gè)URL格式,并準(zhǔn)備根據(jù)需要調(diào)試。

URL路由共享

如果你還沒(méi)有挖出過(guò)深入Magento的核心代碼,你可能想知道

等等-我以為每個(gè)Magento的模塊聲稱特定的前名字-如何可以在多個(gè)模塊,聲稱admin通過(guò)前面的名字adminhtml路由器?

這給我們帶來(lái)了從1 Magento的另一個(gè)特點(diǎn),使得該跳轉(zhuǎn)到Magento的2:路由共享。

Magento的“1個(gè)模塊,1名前”的政策可以追溯到到Zend Framework的早期路由/ MVC體系。Magento的1,而框架中的所有自己的,基于大量的核心Zend框架類(lèi)的工作,而這個(gè)“1模塊,1名前”功能湊湊熱鬧來(lái)了。模塊開(kāi)發(fā)者很快發(fā)現(xiàn)了如何限制,這是和Magento的推出了多個(gè)模塊聲稱一個(gè)特定的前名的能力。

如果這沒(méi)有意義

當(dāng)Magento的1被創(chuàng)造了,你只能創(chuàng)建控制器文件開(kāi)頭的URL /foo/...在單一模塊中
Magento的推出了多個(gè)模塊具有啟動(dòng)使用URL控制文件的能力/foo/在Magento 1.3
的能力,堅(jiān)持在Magento 2,和語(yǔ)法已大大簡(jiǎn)化。例如,如果你想回到第一個(gè)模塊在這個(gè)系列(Pulsestorm_HelloWorldMVVM)和添加前端URL端點(diǎn)catalog/foo/bar,所有你需要做的就是添加以下配置




    
        
            
        

                
        
            
        
                        
    

和以下控制器文件。

File: app/code/Pulsestorm/HelloWorldMVVM/Controller/Foo/Bar.php


與上面的地方,你現(xiàn)在就有了控制器文件的第二個(gè)模塊catalog前面的名稱,Magento的將使用您的控制器時(shí),您加載catalog/foo/barURI。

不像Magento的1,對(duì)于這種配置是幾乎相同的設(shè)置路由為單個(gè)模塊



    

兩個(gè)主要的區(qū)別是

您不要配置frontName的屬性標(biāo)簽
你需要(或者強(qiáng)烈建議)用before或after標(biāo)記控制命令的Magento將檢查比賽

當(dāng)你使用上面的配置,你告訴Magento的

嘿,你知道,有一個(gè)標(biāo)簽id的catalog?我要你在合并額外的 節(jié)點(diǎn)。

當(dāng)遇到Magento的多個(gè)在其全球配置中的節(jié)點(diǎn),它會(huì)檢查每個(gè)模塊的控制器匹配,直到找到一個(gè)。使用after標(biāo)簽上方保證Magento的檢查我們的模塊后的Magento_Catalog模塊。不這樣做,有可能為我們意外地創(chuàng)建替換芯控制器在控制器文件vendor/magento/module-catalog/Controller。

需要注意的是,你要尋找的是很重要的 id屬性,而不是frontName在這里屬性。例如,當(dāng)一個(gè)模塊要添加到admin前面的名字,一個(gè)Magento的芯顯影劑將

標(biāo)識(shí)首次添加模塊 frontName="admin"
標(biāo)識(shí)ID
使用該ID在自己的模塊
確保正確before或after標(biāo)簽就位
所以,第一步-最初添加的模塊的admin前面名稱是Magento_Backend

#File: vendor/magento/module-backend/etc/adminhtml/routes.xml 

    

這個(gè)節(jié)點(diǎn)id是adminhtml。因此,使用的其他Magento的模塊admin前面的名字配置自己與id="adminhtml"。



    




    
 
默認(rèn)操作字符串段

我們從先進(jìn)的路由移動(dòng)之前,有一些最后要提。偶爾你會(huì)看到這是一個(gè)操作字符串缺少了第二或第三段。



當(dāng)Magento的遇到一個(gè)動(dòng)作字符串以丟失的數(shù)據(jù)段,它將替代字符串的索引。換言之,作用串tax/rule上面使用是功能等效的作用串tax/rule/index。

此外,在PHP代碼,您偶爾可能會(huì)看到*一個(gè)URL操作字符串的字符。

$this->getUrl("*/*/*")

這些星號(hào)將被轉(zhuǎn)換為當(dāng)前的前名,控制器名稱或動(dòng)作名稱。換言之,他們創(chuàng)建上下文相關(guān)的URL,并且在意味著在多個(gè)模塊中使用堿UI類(lèi)是有用的。

原文:http://alanstorm.com/magento_...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22227.html

相關(guān)文章

  • []Magento2中使用Web Api

    摘要:今天我開(kāi)發(fā)一個(gè)的來(lái)分享一下新建一個(gè)模塊假設(shè)我們已經(jīng)學(xué)習(xí)過(guò)建設(shè)模塊的前提第一部建設(shè)設(shè)定模塊模塊配置然后新建注冊(cè)模塊的備置這里需要建立兩個(gè)文件和其中用于依賴注入,而用于設(shè)定路由和指定方法名稱,同時(shí)設(shè)定訪問(wèn)權(quán)限備置我們使用設(shè)置,讓其可以直接訪 今天我開(kāi)發(fā)一個(gè)Magento2的Webapi來(lái)分享一下 新建一個(gè)模塊 假設(shè)我們已經(jīng)學(xué)習(xí)過(guò)建設(shè)模塊的前提第一部建設(shè)module.xml設(shè)定模塊 模塊配置...

    qieangel2013 評(píng)論0 收藏0
  • Magento2.x 如何創(chuàng)建一個(gè)Module?

    摘要:今天記錄下如何創(chuàng)建一個(gè),直接進(jìn)入正題。創(chuàng)建好我們的和之后,接下來(lái)就需要?jiǎng)?chuàng)建一系列的文件,我們依次來(lái)說(shuō)每個(gè)文件如何創(chuàng)建。 Magento2.x版本已經(jīng)發(fā)布一段時(shí)間了,到現(xiàn)在為止已經(jīng)到2.2了,最新版本可以關(guān)注Magento在github上的更新。今天記錄下Magento2.1如何創(chuàng)建一個(gè)module,直接進(jìn)入正題。 安裝Magento2后,進(jìn)入項(xiàng)目的根目錄后,進(jìn)入/app目錄,只有app...

    bbbbbb 評(píng)論0 收藏0
  • Magento2.0安裝詳細(xì)教程

    摘要:點(diǎn)擊開(kāi)始檢查你的本地計(jì)算機(jī)環(huán)境是否符合安裝的要求。解決剛才遇到的問(wèn)題后,重新檢查環(huán)節(jié),,即可看到環(huán)境符合安裝的要求,將會(huì)看到如下圖所示。接著點(diǎn)擊下一步,沒(méi)有太多要說(shuō)的,接著下一步下一步傻瓜式點(diǎn)擊下一步到此,安裝結(jié)束。 1.環(huán)境要求:Apache: 2.2 or 2.4PHP: >=5.4.11 or 5.5xMySQL: 5.6x1.首先安裝好XAMPP集成開(kāi)發(fā)環(huán)境包(其他集成開(kāi)發(fā)環(huán)境...

    sewerganger 評(píng)論0 收藏0
  • XAMPP配置虛擬主機(jī)具體步驟

    摘要:安裝安裝包到盤(pán),安裝完成后,退出集成環(huán)境,進(jìn)入下一步,配置虛擬主機(jī)首先在目錄下新建目錄和文件夾此文件夾為你的項(xiàng)目全部?jī)?nèi)容。 1.安裝XAMPP安裝包到D盤(pán),安裝完成后,退出XAMPP集成環(huán)境,進(jìn)入下一步,配置虛擬主機(jī);首先在XAMPP/htdocs目錄下新建目錄magento2和test文件夾(此文件夾為你的項(xiàng)目全部?jī)?nèi)容)。 PS.在創(chuàng)建多個(gè)虛擬主機(jī)時(shí),也需要新建一個(gè)文件夾包含你的項(xiàng)目...

    ssshooter 評(píng)論0 收藏0
  • Magento2.0 怎么設(shè)置前臺(tái)頁(yè)面的路徑提示信息?

    摘要:有關(guān)路徑提示信息,在開(kāi)發(fā)中,時(shí)不時(shí)的會(huì)用到,可以快速方便的找到相應(yīng)模塊所在的文件文章,在中,如何開(kāi)啟開(kāi)發(fā)者模式,快速找到路徑解決方案后臺(tái)修改為,后刷新前臺(tái)頁(yè)面,即可看到路徑提示信息。圖示如下打開(kāi)之后刷新頁(yè)面即可看到前臺(tái)頁(yè)面如下圖所示 有關(guān)Magento路徑提示信息,在開(kāi)發(fā)中,時(shí)不時(shí)的會(huì)用到,可以快速方便的找到相應(yīng)模塊所在的文件文章,在magento2.0中,如何開(kāi)啟開(kāi)發(fā)者模式,快速找到...

    starsfun 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<