我正在尝试在Magento中创建我的第一个模块。
我不能做的事情我以我想要的方式定义模块的路线。
我想创建一个路由“gateways / iphone”,它不起作用。是否可以在路径定义中使用“/”?
这是我的模块定义:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Nacho_GatewayIphone>
<version>0.1.0</version>
</Nacho_GatewayIphone>
</modules>
<frontend>
<routers>
<nacho_gatewayiphone>
<use>standard</use>
<args>
<module>Nacho_GatewayIphone</module>
<frontName>gateway_iphone</frontName>
</args>
</nacho_gatewayiphone>
</routers>
</frontend>
</config>
它在/ gateway_iphone中工作正常,但如果我尝试点击/ gateways / iphone时将<frontName>
值更改为<frontName>gateways/iphone</frontName>
则不会运行。
是否可以在路由器定义中使用“/”字符?
答案 0 :(得分:2)
由于Magento解析了获取router/controller/action
的网址,因此您无法使用 / 指定路由器,因为它会违反上述结构。
答案很简单,为什么不指定网关作为路由器, iphone 作为控制器?您仍然需要一个模块控制器,因此您可以创建IndexController
IphoneController
作为路由器,而不是创建gateways
,并在网址中获取所需的gateways/iphone
。
答案 1 :(得分:1)
如果您需要更复杂的URL,那么有一种基于正则表达式的重写方法。例如,您可以将以下内容添加到config.xml中:
<global>
<rewrite>
<nacho_gatewayiphone_example>
<from><![CDATA[#^/such/a/long/example/for/an/url/path/#]]></from>
<!-- Assuming that "gateways" is now the frontName -->
<to>/gateways/example_controller_name/</to>
</nacho_gatewayiphone_example>
<!-- Other rewrites for nacho here -->
</rewrite>
</global>
答案 2 :(得分:-1)
您必须将模块从Nacho_GatewayIphone
重命名为Nacho_Gateway_Iphone
。
对文件夹结构和类名进行必要的调整。