2012-02-02 1 views
3

"파일"확장명이 포함 된 깨끗한 URL이있는 CFWheels 페이지를 만드는 방법을 알아낼 수 없습니다.URL에 파일 유형이있는 CFWheels에서 xml, json, csv 등과 같은 "파일"확장자가있는 페이지를 어떻게 렌더링합니까?

나는 다음을 수행 할 수 있도록하고 싶습니다 :

나는 docs을 읽었지만 실제 구현에 대해서는 아직 명확하지 않습니다.

<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)가 말할 수 있습니다? views/products/index.xml.cfm이어야합니까?

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

routes.cfm을 어떻게 구현합니까?

web.config도 사용하고 은 config/setting.cfm에 있습니다.

답변

4

경로에 대한 가정이 정확합니다. 그러나 재 작성이 제대로 작동하는지, 부분적으로 말하지 않는지 확인해야합니다. /controller/action과 같은 URL에 액세스 할 수 있습니까? 아니 /rewrite.cfm/controller/action.

그래서 경로의 정의는 다음과 같을 수 있습니다

<cfset addRoute(name="indexProducts", pattern="products.[format]", controller="product", action="index") /> 

당신이 params.format 실제 값으로 채워있을거야 index 방법, 당신은 (ListFind 작동합니다) 유효성을 검사 할 느릅 나무.

이 페이지에 대한보기 템플릿의 작업 이름은 /views/product/index.cfm이어야합니다. 조건부로보기를로드하지 않으려면 여기에 특별한 기능이 필요하지 않습니다. 예를 들어 각 형식에 대한 개별보기가 있습니다. 이 경우 renderPage 기능을 확인하고 싶습니다. 기본보기를 재정의하는 데 사용할 수 있습니다.

UPDATE

OK,이 솔루션을 테스트 한과 실 거예요 작동합니다. 경로는 구분 기호로 슬래시를 제외하고는 아무 것도 지원하지 않습니다. 그래서 경로의이 종류는이 방법을 사용할 수 있습니다 : 우리는 (더 풀 요청 어떤 방법이없는 나쁜 생각입니다) CFWheels 코드를 수정하지 않으려는 생각

<cfset addRoute(name="indexProducts", pattern="products/[format]", controller="product", action="index") /> 

를, 그래서 웹 서버를 사용하는 것이 좋습니다 재 작성.당신은 IIS를 사용하는

RewriteRule ^products\.(xml|json|html)$ product/index?format=$1 [NS,L] 

를, 그래서 (시험하지 않음)이 유사하게 나타납니다 : 예를 들어, 아파치에서이 같이 보일 수 있습니다

<rule name="Products listing" enabled="true"> 
    <match url="^products\.(xml|json|html)$" ignoreCase="true" /> 
    <action type="Rewrite" url="product/index?format={R:1}" /> 
</rule> 

작성하는 것보다 더 나은 방법 일까 ProductsXml, ProductsJson 등의 컨트롤러 이름

+0

다시 쓰기가 올바르게 작동하지만 ".xml"과 같은 파일 확장명을 추가하는 것이 작동하지 않습니다. 어쩌면 나는 새로운 청결한 CFWheels 위치에 그것을 시도해야한다. – Micah

+0

@Micah 알다시피, 당신 말이 맞아. 업데이트를 참조하십시오. – Sergii

+0

감사! 나는 월요일에 그것을 시도 할 것이다. – Micah