【问题标题】:Rails "respond_to" in PHPPHP中的Rails“respond_to”
【发布时间】:2009-11-15 14:49:05
【问题描述】:

最近我一直在尝试 Rails,并且开始喜欢上 respond_to。

是否有可能在 PHP 中做这样的事情?响应不同类型的请求。因此,即使禁用了 javascript,也很容易实现替代方式。

【问题讨论】:

  • 您是否正在考虑一个特定的 php 框架?还是你自己动手?
  • 是的!我正在创建一个学习框架。

标签: php javascript ruby-on-rails ajax


【解决方案1】:

您可以按照 Krule 的建议发送文件名后缀,但我相信 Rails 通过检查 HTTP Accept 标头的值来确定要选择的内容类型(参见维基百科上的 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 是一个可以帮助您入门的功能示例;否则,有一个用于 PHP 的 content negotiation library 会为您完成所有繁琐的工作。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    上次我在 Rails 中做了类似于respond_to 的操作,我使用 Apache .htaccess RewriteRule 来将 GET 变量处理到 php。像这样的:

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

    我希望它至少会有所帮助。 祝你好运。

    【讨论】:

    • 很好,至少我现在有了一些东西。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    相关资源
    最近更新 更多