我不能定义路由器,例如" something / somethingelse"在Magento模块定义?

时间:2012-09-28 05:22:20

标签: php zend-framework magento magento-1.6

我正在尝试在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>则不会运行。

是否可以在路由器定义中使用“/”字符?

3 个答案:

答案 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>

有关详细信息,请参阅this wiki或更多信息,请参阅this blog

答案 2 :(得分:-1)

您必须将模块从Nacho_GatewayIphone重命名为Nacho_Gateway_Iphone

对文件夹结构和类名进行必要的调整。