[英]How to determine Magento custom extension url
在為擴展程序創建的頁面之一中找到正確的網址時,我遇到任何問題。 我剛收到404。
這是我所擁有的基本知識。 我正在嘗試extension/share/
但得到了404。
controllers / EventController.php
<?php
class My_Extension_EventController extends Mage_Core_Controller_Front_Action
{
/************** Some Code *****************/
}
塊/ Share.php
<?php
class My_Extension_Block_share extends Mage_Core_Block_Template
{
/************** Some Code *****************/
}
extensionlayout.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<default>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</default>
<my_extension_event_share>
<reference name="content">
<block name="extension.share" type="my_extension/share" template="extension/share.phtml"/>
</reference>
</my_extension_event_share>
</layout>
好的,我知道了。 我的布局沒有正確格式化。
<my_extension_share_index>
<reference name="content">
<block name="extension.share" type="my_extension/share" template="extension/share.phtml"/>
</reference>
</my_extension_share_index>
上面的代碼將告訴Magento URL應為擴展名/共享/
希望能對某人有所幫助。 :)
$Magento = "Trial and Error with huge headache!"
Magento中的URL具有3個組成部分:
這些在URL中用/分隔:domain.com/modulename/controllername/actionname
模塊名稱在擴展配置文件/etc/config.xml中定義。 在以下示例中, myext是模塊名稱:
<config>
.
.
.
<frontend>
<routers>
<myext>
<use>standard</use>
<args>
<module>My_Extension</module>
<frontName>myext</frontName>
</args>
</emgs>
.
.
.
控制器名稱和操作名稱是可選的,如果不包含,則默認為索引。 因此,以下URL是相同的:
控制器名稱是包含控制器代碼的PHP文件的文件路徑和文件名。 例如, car_pedal是此文件的控制器名稱:
../My/Extension/controllers/Car/PedalController.php
因此,現在的網址是domain.com/myext/car_pedal/
最后,動作名稱是控制器內定義的功能。 例如,在以下示例中, 剎車是動作名稱:
<?php
class My_Extension_Car_PedalController extends Mage_Core_Controller_Front_Action
{
public function brakeAction()
{
.
.
.
}
}
現在已形成完整的URL: domain.com/myext/car_pedal/brake 。 當Magento收到URL時,它將把控件傳遞給函數brakeAction。 這是MVC中的C,模型-視圖-控制器。
根據我們要在制動動作中執行的操作,響應可以是純文本,例如,對AJAX的響應:
public function brakeAction()
{
return $this->getResponse()->setBody('Not Implemented Yet');
}
或者,我們可以基於Magento塊構建完整的HTML頁面。 這是MVC中的V。 Magento中的視圖可以在3個地方定義:
您所做的全部利用了以上三個方面。 您的問題確實是如何在控制器動作的布局中構造句柄,因此您可以簡單地執行以下操作:
public function brakeAction()
{
$this->loadLayout();
$this->renderLayout();
}
瞧,一個帶有標題,頁腳,正文等的完整HTML頁面會自動生成並返回到瀏覽器。
在我的示例中,句柄是:
<layout version="0.1.0">
<myext_index_index>
<!-- for indexAction in My_Extension_IndexController -->
</myext_index_index>
<myext_car_pedal_index>
<!-- for indexAction in My_Extension_Car_PedalController -->
</myext_car_pedal_index>
<myext_car_pedal_brake>
<!-- for brakeAction in My_Extension_Car_PedalController -->
</myext_car_pedal_brake>
</layout>
希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.