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是有效的。另外,你的重写建议应该很有效。再次感谢!