我有如下链接:
index.php/catalog/product/offer/id/1/cid/100/
id
param表示产品ID
cid
param表示客户的ID
现在,如果我想更改此链接,请如何与路由器匹配:
index.php/offer/id/1/cid/100/
我该怎么做?
答案 0 :(得分:6)
如果您有一组有限的ID值,则可以创建相同数量的rewrite rules like this。我们的想法是将每个可能的URL映射(即一对一)到缩短的形式。
但是,由于客户数量无法控制,因此如in the Magento Wiki所述使用旧版XML重写可能更好。
<config>
...
<global>
<rewrite>
<vietean_catalog_product_offer>
<from><![CDATA[#^offer/#]]></from>
<to>catalog/product/offer/</to>
</vietean_catalog_product_offer>
</rewrite>
</global>
</config>
如果这不起作用,第三个选项是形成index.php/offer?id=1&cid=100
之类的网址,这个网址并不漂亮。然后,该网址将转换为offer/index/index
。为现有路由器指定前缀名offer
,为控制器IndexController
命名,并为操作indexAction
命名。
<config>
...
<frontend>
<routers>
<vietean_example> <!-- This tag can be any unique value -->
<use>standard</use> <!-- standard because it's the frontend -->
<args>
<module>Vietean_Example</module>
<frontName>offer</frontName> <!-- First part of URLs -->
</args>
</vietean_example>
</routers>
</frontend>
</config>
控制器可以以与以前完全相同的方式访问URL参数;
$id = $this->getRequest()->get('id');
$cid = $this->getRequest()->get('cid');