【问题标题】:How do I access status code and body inside my default template?如何访问默认模板中的状态代码和正文?
【发布时间】:2016-03-25 20:56:30
【问题描述】:

如何在控制器的操作模板中显示 HTTPResponse 状态代码和正文?当我试图设置

$this->response->setStatusCode(400);
$this->response->setBody('invalid 2');

并返回 $this 仅显示我的操作模板上的内容?如何访问默认模板中的状态代码和正文?

【问题讨论】:

  • 你不想回$this->response吗?
  • 我想在我的模板中访问状态代码和响应正文

标签: php content-management-system silverstripe


【解决方案1】:

你可以这样做:

在您的Controller 中添加一个方法以获取SS_HTTPResponse 数据:

public function Response()
{
  $response = new ArrayData(array(
    "StatusCode" => $this->getResponse()->getStatusCode(),
    "Body" => $this->getResponse()->getBody()
  ));

  return $response;
}

然后在你的模板中你可以使用:

$Response.StatusCode$Response.Body

【讨论】:

    【解决方案2】:

    模板用于形成响应正文。在您的情况下,您将响应正文设置为字符串。

    没有足够的信息来说明您要达到的目标。

    如果你想为特定代码创建漂亮的错误页面,那么你应该使用ErrorPage类型来创建一个特殊页面,并在你的控制器中使用$this->httpError(400);ErrorPage 包含一个字段ErrorCode,用于按代码查找现有错误页面,可以在模板中使用,但通常您将错误代码和消息直接放入Content

    【讨论】:

    • 我想做的是像在 Laravel 中一样访问我的操作模板中的 HttpResponse 属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-26
    • 2017-12-25
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多