Coldfusion 如何使用“渲染”呈现页面;文件";CFWheels中的xml、json、csv等扩展名,文件类型在URL中?

Coldfusion 如何使用“渲染”呈现页面;文件";CFWheels中的xml、json、csv等扩展名,文件类型在URL中?,coldfusion,coldfusion-9,cfwheels,Coldfusion,Coldfusion 9,Cfwheels,我似乎不知道如何在CFWheels中创建包含“文件”扩展名的干净URL页面 我希望能够做到以下几点: <cfcomponent extends="Controller"> <cffunction name="init"> <cfset provides("html,json,xml")> </cffunction> <cffunction name="index"> <c

我似乎不知道如何在
CFWheels
中创建包含“文件”扩展名的干净URL页面

我希望能够做到以下几点:

<cfcomponent extends="Controller">

    <cffunction name="init">
        <cfset provides("html,json,xml")>
    </cffunction>

    <cffunction name="index">
        <cfset products = model("product").findAll(order="title")>
        <cfset renderWith(products)>
    </cffunction>

</cfcomponent>
为此:

我已经通读了这些,但仍然不清楚实际的实现

假设我有一个控制器(
/controllers/Product.cfc
),看起来如下所示:

<cfcomponent extends="Controller">

    <cffunction name="init">
        <cfset provides("html,json,xml")>
    </cffunction>

    <cffunction name="index">
        <cfset products = model("product").findAll(order="title")>
        <cfset renderWith(products)>
    </cffunction>

</cfcomponent>
如何实现
路由.cfm

<?xml version="1.0" encoding="UTF-8"?>
<products>
    <product><!-- product data goes here --></product>
</products>

我应该注意到,我也在使用默认值,并且在
config/setting.cfm

中有
关于路由的假设是正确的。但你必须确保重写工作正常,比如说不能部分重写。您可以访问像
/controller/action
这样的URL,对吗?不
/rewrite.cfm/controller/action

因此,路由定义可以如下所示:

<cfset addRoute(name="indexProducts", pattern="products.[format]", controller="product", action="index") />
RewriteRule ^products\.(xml|json|html)$ product/index?format=$1 [NS,L]
我想我们不想修改CFWheels代码(这是一个坏主意,没有进一步的请求),所以我建议使用web服务器重写。例如,在Apache中,它可能如下所示:

<cfset addRoute(name="indexProducts", pattern="products.[format]", controller="product", action="index") />
RewriteRule ^products\.(xml|json|html)$ product/index?format=$1 [NS,L]
您正在使用IIS,因此它看起来应该与此类似(未测试):



认为这比尝试创建名为
ProductsXml
ProductsJson
等控制器更好。

重写工作正常,但添加文件扩展名“.xml”不起作用。也许我应该在一个新的干净的CFWheels网站上试试。谢谢!星期一我要试一试。结果是我的轮子坏了!所以我相信你最初的答案对某些版本的CFWheels是有效的。另外,你的重写建议应该很有效。再次感谢!