2012-01-13 1 views
0

현재 Smarty 템플릿 엔진과 함께 PHP Recess 프레임 워크를 사용하고 있습니다. 내 컨트롤러에서 나는 유사한 코드를 가지고 : 해당 스마티보기,지정 방법 Smarty로 Recess 프레임 워크를 사용할 때 Content-type을 지정하십시오.

/** 
* !View Smarty 
* !RespondsWith Smarty 
* !Prefix Views: templates/, Routes:/
*/ 

class XHomeController extends Controller { 

    /** !Route GET */ 
    function index() 
    { 
      $this->title = "Some title..."; 
    } 

} 

와, 나는 평소와 같이 {$title}를 참조하십시오.

Android 브라우저를 제외한 모든 브라우저에서 (내 2.3 Nexus One, 3.2에 태블릿뿐 아니라 Android 에뮬레이터에서도)보기가 올바르게 렌더링됩니다. Smarty보기가 렌더링되어 Content-type이없는 브라우저로 전송된다는 사실에이 문제를 추적했다고 생각합니다.

http://web-sniffer.net/을 사용하면 응답의 Content-type이 비어 있음을 알 수 있습니다.

Smarty를 사용할 때 Recess에서 Content-type을 어떻게 지정합니까? 나는 헤더 ('Content-type : text/html')를 컨트롤러의 메서드에 추가하려고 시도했지만이 방법은 작동하지 않습니다.

내가 잘못하고있는 것에 대한 아이디어가 있습니까?

답변

0

recessy/framework/views에서 SmartyView 코드를보고 싶습니다. 이 클래스에는 뷰가 특정 MIMEType으로 응답 할 수 있는지 확인하는 canRespondWith() 메소드가 있어야합니다. 예를 들면 다음과 같습니다.

class XmlView extends AbstractView { 

    public function canRespondWith(Response $response) { 
      return 'xml' === $response->request->accepts->format(); 
    } 
} 

true를 반환하면 XmlView가 사용됩니다. 추상보기 클래스에서 sendHeaders() 메소드는 Content-Type을 설정합니다 : 홈에서

protected function sendHeadersFor(Response $response) { 
    header('HTTP/1.1 ' . ResponseCodes::getMessageForCode($response->code)); 

    $format = $response->request->accepts->format(); 
    header('Content-Type: ' . MimeTypes::preferredMimeTypeFor($format)); 
    /* ... */ 
} 

봐/HTTP/MimeTypes.class.php 올바른 헤더를 응답하는 방법을 'XML'볼 수 있습니다. SmartyView를보고 어떤 MIME 형식이 반환되는지 확인해야 어떤 헤더가 설정되는지 확인할 수 있습니다.