Php 如何在与Smarty一起使用框架时指定内容类型
我目前正在使用带有Smarty模板引擎的PHP框架。在我的控制器中,我的代码类似于:Php 如何在与Smarty一起使用框架时指定内容类型,php,http,http-headers,smarty,recess,Php,Http,Http Headers,Smarty,Recess,我目前正在使用带有Smarty模板引擎的PHP框架。在我的控制器中,我的代码类似于: /** * !View Smarty * !RespondsWith Smarty * !Prefix Views: templates/, Routes: / */ class XHomeController extends Controller { /** !Route GET */ function index() { $this->title =
/**
* !View Smarty
* !RespondsWith Smarty
* !Prefix Views: templates/, Routes: /
*/
class XHomeController extends Controller {
/** !Route GET */
function index()
{
$this->title = "Some title...";
}
}
在相应的Smarty视图中,我像往常一样引用{$title}
除了Android浏览器(在我的2.3 Nexus One、3.2平板电脑以及Android emulator上),该视图在所有浏览器中都能正确呈现。我认为我已经将问题追溯到了这样一个事实,即Smarty视图被呈现并发送到没有内容类型的浏览器
使用,我注意到响应中的内容类型为空
在使用Smarty时,如何指定凹槽中的内容类型?我已尝试将标题('Content-type:text/html')添加到控制器中的方法,但这不起作用
知道我做错了什么吗?我想看看休会/框架/视图中的SmartyView代码。该类应该有一个canRespondWith()方法,该方法将验证视图是否可以使用某个MIMEType进行响应。例如:
class XmlView extends AbstractView {
public function canRespondWith(Response $response) {
return 'xml' === $response->request->accepts->format();
}
}
如果返回true,则将使用XmlView。在AbstractView类中,sendHeaders()方法将设置内容类型:
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中查看返回的mimetype,以查看将设置的标头