2010-02-16 50 views
2
txt: text/plain 
    js: [application/javascript, application/x-javascript, text/javascript] 
    css: text/css 
    json: [application/json, application/x-json] 
    xml: [text/xml, application/xml, application/x-xml] 
    rdf: application/rdf+xml 
    atom: application/atom+xml 

它用於由框架到 自動管理的響應的內容類型 ,基於請求 URI擴展。symfony如何選擇內容類型?

如上所述,.js擴展有3種不同的內容類型,symfony如何選擇最終的內容類型?

回答

0

我想你可能是在此之後(本例使用樣式表,但原理是一樣的):

// In the view.yml 
indexSuccess: 
    stylesheets: [main, paper: { media: print }] 

// In the Action 
$this->getResponse()->addStylesheet('paper', '', array('media' => 'print')); 

// In the template 
<?php use_stylesheet('paper', '', array('media' => 'print')) ?> 

// Resulting View 
<link rel="stylesheet" type="text/css" media="print" href="/css/paper.css" /> 

來源:http://www.symfony-project.org/book/1_2/07-Inside-the-View-Layer

+0

你爲什麼不以'js'爲例? – user198729

+0

由於css只有一種內容類型,它不能解釋任何東西 – user198729

+0

原理是一樣的,請檢查這個例子:http://forum.symfony-project.org/index.php/m/90678/。否則我必須正確理解你的問題。 – Tom

1

的響應將在列表中,如果沒有內容返回的第一個項目類型是專門設置的。

sfWebRequest

public function getMimeType($format) 
{ 
    return isset($this->formats[$format]) ? $this->formats[$format][0] : null; 
} 

$this->formats包含擴展的列表,MIME類型,因爲它們的請求對象指定你在你的問題中指定的映射。

+0

如果你是對的,'js'會將'application/javascript'作爲MIME返回,但情況並非如此 – user198729

+0

@ user198729你看到了什麼內容類型?另外,這個JS文件是通過Symfony服務的嗎?如果它是一個存在於你的文件系統上的JS文件,那麼你的web服務器就是負責提供內容類型的服務器,如果你在一臺裝有Apache的Linux機器上,它很可能會從/etc/mime.types中出來。 – nortron

+0

當我們運行'use_javascript()'時,內容類型顯然是'text/javascript' – user198729