CakePHP RequestHandler:setContent/renderAs/respondAs ..什么?

nic*_*ckf 1 content-type cakephp

有人可以解释这些功能:

 RequestHandlerComponent::renderAs()
 RequestHandlerComponent::respondAs()
 RequestHandlerComponent::setContent()
Run Code Online (Sandbox Code Playgroud)

拥有所有这三个(无论如何都是公共方法)感觉有点多余.如果我想用PDF文件回复请求,这是否意味着我必须调用所有三个函数?我该怎么在控制器中使用它们?

dec*_*eze 8

他们都是不同的.来自API文档:

renderAs
设置$ type定义的内容类型的布局和模板路径.

即或多或少的快捷方式$this->layout = '...'$this->render(...).

respondAs
根据类型映射索引名称设置响应头.如果DEBUG大于2,则不设置标头.

输出header(...).

setContent
添加/设置给定名称的Content-type(s).此方法允许将内容类型映射到友好别名(或扩展),这允许RequestHandler在启动方法中自动响应该类型的请求.

实际上对输出没有任何作用,只允许您添加默认情况下未定义的新类型.

对于输出PDF(假设您已将其作为文件),您应该实际使用媒体视图.