Symfony,在setStatusCode prcedure中编码状态文本参数

时间:2016-08-10 20:54:44

标签: php symfony

我有一个非常简单的控制器,代码如下

    public function deleteCarrierAction($login)
{
    $settingsService = $this->get('app.settings');
    $result = $settingsService->deleteCarrier($login);
    if (!$result)
    {
        $response->setStatusCode(400, $settingsService->errorInfo);
        return $response;
    }
    $response->setStatusCode(200);
    return $response;
}

其中$settingsService->errorInfo包含我所在国家/地区的符号。如何将errorInfo文本编码为UTF-8? 当我在Chrome浏览器的调试控制台中看到errorInfo时,它显示如下:

settings:251 POST http://xxxxxxx:8000/delete_carrier/79323317315 400 (Ðа кÑÑÑеÑа назнаÑÐµÐ½Ñ Ð·Ð°ÐºÐ°Ð·Ñ. Удаление невозможно)

1 个答案:

答案 0 :(得分:2)

我认为这是以错误的编码方式返回信息的chrome问题。

考虑使用键来描述信息和错误,并且如果你想要更具可读性,请翻译它,例如在视图中: http://symfony.com/doc/current/best_practices/i18n.html

或在您的服务创建方法中转换错误,并使用它回复:

$response->setStatusCode(Response::HTTP_BAD_REQUEST, $settingsService->getTranslatedErrorInfo());