摘要:以上是的的目錄路由器配置。考慮重寫模塊以上文件文件使用的操作字符串。例如,如果你想回到第一個模塊在這個系列和添加前端端點,所有你需要做的就是添加以下配置和以下控制器文件。默認操作字符串段我們從先進的路由移動之前,有一些最后要提。
今天,我們要介紹的幾個Magento的路由系統的高級功能,并討論一些看似急性銳邊的歷史。雖然所有在這篇文章中提供的技術可能不是最好的方式來實現自己的目標,作為工作的Magento開發者你需要知道他們是可能的,而其他開發者(包括Magento的核心工程團隊)可能已經使用他們。
本文假定您有較好的Magento 2模塊經驗,這可能不適合初學者。如果這是你,用評論來問你的問題或指向你的堆疊交換的問題。
Magento的URL在Action中作為一個PHP程序員,當你需要創建在Magento的URL,可以使用getUrl塊或URL模型對象的方法。
Mage::getUrl("foo/baz/bar"); $urlModel->getUrl("foo/baz/bar"); $this->getUrl("foo/baz/bar");
這是Magento的1和2的Magento真正在Magento 2你沒有進入全球Mage::getUrl的方法,所以你需要注入要通過特定的URL模式自動構造函數依賴注入。網址模型允許PHP程序員治療的URL作為一個簡單的操作字符串,然后讓核心系統構建代碼的最終呈現的網址。如果你只做過前端的工作,這似乎有點小題大做,但如果URL結構需要在將來改變或適應多種環境是有利的。大多數Web編程框架認為這是一個必要的功能。
我們不會太深入探究網址模型今天-我們都感興趣的是操作字符串,這些URL方法接受。乍一看,你可能會覺得foo/baz/baz結構直接映射到frontName/controllerName/actionName一個URL的Magento的結構。你幾乎是正確的。實際的結構。routeId/controllerName/actionName
當你設置一個routes.xml為你的模塊文件,可以使用XML結構看起來像這樣
也就是說,你設置一個
當Magento的產生從操作字符串的URL一樣foo/baz/bar,它采用了第一段查找一個
這不是明顯的事情,你可以在Magento的多年而不自知地發展。這是因為大多數模塊使用的路線ID和相同的名字前面。
例如,您可以在中看到這個catalog模塊
無論是id和frontName屬性catalog。該公約還存在在Magento 1。
Mage_Catalog catalog
以上是Magento的1的目錄路由器配置。單個
這種約定可以很容易地看一個URL操作字符串,并獲得最終的URL將是什么樣子一個粗略的想法。然而,有一個巨大的例外:Magento的管理網址。
Magento管理網址在Magento 1,主要管理路徑是與以下配置(在Magento的核心)
Mage_Adminhtml admin
也就是說,在單個節點
File: vendor/magento/module-backend/etc/adminhtml/routes.xml
這意味著,在Magento 1,操作字符串一樣adminhtml/foo/bar會翻譯成看起來像一個完整的URL http://example.magento.com/ad...。也就是說,第一網址段,和前面的名稱,將admin代替adminhtml。
這是一個奇怪的例外,Magento的匹配前面的名字和路由器ID的一般慣例,并有可能少了刻意的設計決定比它的Magento 1發射一個半完成的概念區(adminhtml,frontend)實現的。
無論如何,你仍然可以找到在Magento 2的代碼庫這種非決定的證據。
Magento的管理員入口網址在Magento 1,adminhtml路由器ID是什么保證了管理的URL開始以字符串的一部分/admin,而Magento的區域被設置為adminhtml。
然而,在Magento 2,每一個在路線設置etc/adminhtml/routes.xml文件將自動與該字符串前綴admin。這就是讓我們用我們自己的frontName這些adminhtml/routes.xml文件。
這最終有上仍然使用舊的管理網址,一個奇怪的副作用adminhtml路由器ID。考慮URL重寫模塊
以上menu.xml文件文件使用的操作字符串adminhtml/url_rewrite/index。Magento的結束產生這樣的網址
http://magento.example.com/ad...
這是與開頭的URL /admin/admin。這是2管理員字符串。第一個來自/admin該Magento的預先考慮到URL段每一個管理URL。第二個使用來自Magento的adminhtml路線ID查找一個frontName屬性。
這似乎是傳統的URL自動轉換成菜單項,雖然當我問起這個在一月份Magento的建筑師,他們最初對這個問題感到困惑,然后說這兩種管理URL格式(adminhtml路徑ID /前名稱和自定義路徑ID /前名)是有效的,但自定義路由標識和前面的名字被優先考慮。
由于缺乏明確的初始規則,缺乏核心團隊的堅持這些后來下旨規則,工作Magento的開發商將要熟悉這兩個URL格式,并準備根據需要調試。
URL路由共享如果你還沒有挖出過深入Magento的核心代碼,你可能想知道
等等-我以為每個Magento的模塊聲稱特定的前名字-如何可以在多個模塊,聲稱admin通過前面的名字adminhtml路由器?
這給我們帶來了從1 Magento的另一個特點,使得該跳轉到Magento的2:路由共享。
Magento的“1個模塊,1名前”的政策可以追溯到到Zend Framework的早期路由/ MVC體系。Magento的1,而框架中的所有自己的,基于大量的核心Zend框架類的工作,而這個“1模塊,1名前”功能湊湊熱鬧來了。模塊開發者很快發現了如何限制,這是和Magento的推出了多個模塊聲稱一個特定的前名的能力。
如果這沒有意義
當Magento的1被創造了,你只能創建控制器文件開頭的URL /foo/...在單一模塊中
Magento的推出了多個模塊具有啟動使用URL控制文件的能力/foo/在Magento 1.3
的能力,堅持在Magento 2,和語法已大大簡化。例如,如果你想回到第一個模塊在這個系列(Pulsestorm_HelloWorldMVVM)和添加前端URL端點catalog/foo/bar,所有你需要做的就是添加以下配置
和以下控制器文件。
File: app/code/Pulsestorm/HelloWorldMVVM/Controller/Foo/Bar.php與上面的地方,你現在就有了控制器文件的第二個模塊catalog前面的名稱,Magento的將使用您的控制器時,您加載catalog/foo/barURI。
不像Magento的1,對于這種配置是幾乎相同的設置路由為單個模塊
兩個主要的區別是您不要配置frontName的屬性
標簽
你需要(或者強烈建議)用before或after標記控制命令的Magento將檢查比賽當你使用上面的配置,你告訴Magento的
嘿,你知道,
有一個標簽id的catalog?我要你在合并額外的 節點。 當遇到Magento的多個
在其全球配置中的節點,它會檢查每個模塊的控制器匹配,直到找到一個。使用after標簽上方保證Magento的檢查我們的模塊后的Magento_Catalog模塊。不這樣做,有可能為我們意外地創建替換芯控制器在控制器文件vendor/magento/module-catalog/Controller。 需要注意的是,你要尋找的是很重要的
id屬性,而不是frontName在這里屬性。例如,當一個模塊要添加到admin前面的名字,一個Magento的芯顯影劑將 標識首次添加模塊 frontName="admin"
標識的 ID
使用該ID在自己的模塊
確保正確before或after標簽就位
所以,第一步-最初添加的模塊的admin前面名稱是Magento_Backend#File: vendor/magento/module-backend/etc/adminhtml/routes.xml這個
節點id是adminhtml。因此,使用的其他Magento的模塊admin前面的名字配置自己與id="adminhtml"。 默認操作字符串段我們從先進的路由移動之前,有一些最后要提。偶爾你會看到這是一個操作字符串缺少了第二或第三段。
當Magento的遇到一個動作字符串以丟失的數據段,它將替代字符串的索引。換言之,作用串tax/rule上面使用是功能等效的作用串tax/rule/index。
此外,在PHP代碼,您偶爾可能會看到*一個URL操作字符串的字符。
$this->getUrl("*/*/*")這些星號將被轉換為當前的前名,控制器名稱或動作名稱。換言之,他們創建上下文相關的URL,并且在意味著在多個模塊中使用堿UI類是有用的。
原文:http://alanstorm.com/magento_...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22227.html
摘要:今天我開發一個的來分享一下新建一個模塊假設我們已經學習過建設模塊的前提第一部建設設定模塊模塊配置然后新建注冊模塊的備置這里需要建立兩個文件和其中用于依賴注入,而用于設定路由和指定方法名稱,同時設定訪問權限備置我們使用設置,讓其可以直接訪 今天我開發一個Magento2的Webapi來分享一下 新建一個模塊 假設我們已經學習過建設模塊的前提第一部建設module.xml設定模塊 模塊配置...
摘要:今天記錄下如何創建一個,直接進入正題。創建好我們的和之后,接下來就需要創建一系列的文件,我們依次來說每個文件如何創建。 Magento2.x版本已經發布一段時間了,到現在為止已經到2.2了,最新版本可以關注Magento在github上的更新。今天記錄下Magento2.1如何創建一個module,直接進入正題。 安裝Magento2后,進入項目的根目錄后,進入/app目錄,只有app...
摘要:點擊開始檢查你的本地計算機環境是否符合安裝的要求。解決剛才遇到的問題后,重新檢查環節,,即可看到環境符合安裝的要求,將會看到如下圖所示。接著點擊下一步,沒有太多要說的,接著下一步下一步傻瓜式點擊下一步到此,安裝結束。 1.環境要求:Apache: 2.2 or 2.4PHP: >=5.4.11 or 5.5xMySQL: 5.6x1.首先安裝好XAMPP集成開發環境包(其他集成開發環境...
摘要:安裝安裝包到盤,安裝完成后,退出集成環境,進入下一步,配置虛擬主機首先在目錄下新建目錄和文件夾此文件夾為你的項目全部內容。 1.安裝XAMPP安裝包到D盤,安裝完成后,退出XAMPP集成環境,進入下一步,配置虛擬主機;首先在XAMPP/htdocs目錄下新建目錄magento2和test文件夾(此文件夾為你的項目全部內容)。 PS.在創建多個虛擬主機時,也需要新建一個文件夾包含你的項目...
摘要:有關路徑提示信息,在開發中,時不時的會用到,可以快速方便的找到相應模塊所在的文件文章,在中,如何開啟開發者模式,快速找到路徑解決方案后臺修改為,后刷新前臺頁面,即可看到路徑提示信息。圖示如下打開之后刷新頁面即可看到前臺頁面如下圖所示 有關Magento路徑提示信息,在開發中,時不時的會用到,可以快速方便的找到相應模塊所在的文件文章,在magento2.0中,如何開啟開發者模式,快速找到...
閱讀 2415·2021-11-11 11:01
閱讀 3287·2021-10-11 10:57
閱讀 2645·2021-09-30 09:46
閱讀 3492·2021-07-26 23:38
閱讀 1564·2019-08-29 12:22
閱讀 650·2019-08-29 11:28
閱讀 2352·2019-08-26 14:04
閱讀 3050·2019-08-23 18:34