Lately I have been trying out Rails, and I came to love the respond_to.
Is it possible to do something like this in PHP?, responding to different types of requests. So it is easy to implement an alternate way even if javascript is disabled.
Lately I have been trying out Rails, and I came to love the respond_to.
Is it possible to do something like this in PHP?, responding to different types of requests. So it is easy to implement an alternate way even if javascript is disabled.
Last time I did something similar to respond_to
in Rails I used Apache .htaccess RewriteRule in order to process GET variables to php. Something like this:
RewriteEngine on
RewriteRule (\d*\.?\d*?).(html|json|xml|txt) /file.php?format=$1
I hope it helps at least a bit. Good luck.
You can dispatch on the filename suffix as Krule suggests, but I believe Rails determines which content type to choose by examining the value of the HTTP Accept
header (see Content negotiation on Wikipedia). In pseudo-code
$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...
}
The get_preferred_response_type()
function will have to parse the Accept
header and return the client's preferred MIME type. Here is an example of such a function which should help you get started; otherwise there is a content negotiation library for PHP which does all the dirty work for you.
Hope this helps!