2009-11-15 44 views
0

最近我一直在嘗試Rails,並且我開始喜歡respond_to。在PHP的Rails「respond_to」

是否有可能在PHP中做這樣的事情?迴應不同類型的請求。所以即使javascript被禁用也很容易實現替代方法。

+0

有沒有一個特定的PHP框架,你在想什麼?或者你在滾動你自己? – 2009-11-15 14:54:06

+0

是的!我正在創建一個學習框架。 – saint 2009-11-15 15:13:24

回答

3

您可以根據Krule的建議調度文件名後綴,但我相信Rails通過檢查HTTP Accept標頭的值(請參閱Wikipedia上的Content negotiation)來確定選擇哪種內容類型。在僞碼

$data = fetch_some_data(); 
switch (get_preferred_response_type($_SERVER['HTTP_ACCEPT'])) { 
    case 'text/html': 
     render_html($data); break; 
    case 'application/xml': 
     render_xml($data); 
    case 'application/json': 
     render_json($data); 
    // etc... 
} 

get_preferred_response_type()函數將具有解析Accept頭和返回客戶端的優選的MIME類型。 Here就是這樣一個函數的例子,它可以幫助你開始;否則有一個content negotiation library爲PHP做你所有的骯髒的工作。

希望這會有所幫助!

+0

+1我認爲這將是一個更好的方法。 – Krule 2009-11-15 17:19:56

+0

這很有幫助,謝謝 – saint 2009-11-15 17:52:30

2

上次我在Rails中做了類似於respond_to的一些操作我使用Apache .htaccess RewriteRule爲了將GET變量處理爲php。就像這樣:

RewriteEngine on 
RewriteRule (\d*\.?\d*?).(html|json|xml|txt) /file.php?format=$1 

我希望它至少有一點幫助。 祝你好運。

+0

不錯,至少我現在有東西。謝謝! – saint 2009-11-15 15:52:14