【发布时间】:2014-02-06 07:37:01
【问题描述】:
我在我的网站上配置了 redmine 来处理异常。现在,当网站在生产环境中时,我遇到了奇怪的异常。
堆栈跟踪:
An exception has been thrown during the rendering of a template ("DateTime::__construct(): Failed to parse time string (date) at position 0 (d): The timezone could not be found in the database") in "ToFrontendBundle:Page:cruise-periodic.html.twig" at line 8.
#95: To\FrontendBundle\Controller\PageController->cruisePreviewAction(8, way, date)
#106: Symfony\Bundle\FrameworkBundle\Controller\Controller->render("ToFrontendBundle:Page:cruise-periodic.html.twig", array)
#112: Symfony\Bundle\TwigBundle\TwigEngine->renderResponse("ToFrontendBundle:Page:cruise-periodic.html.twig", array, NULL)
#83: Symfony\Bundle\TwigBundle\TwigEngine->render("ToFrontendBundle:Page:cruise-periodic.html.twig", array)
#53: Symfony\Bridge\Twig\TwigEngine->render("ToFrontendBundle:Page:cruise-periodic.html.twig", array)
#4423: Twig_Template->render(array)
#4416: Twig_Template->display(array)
#4446: Twig_Template->displayWithErrorHandling(array, array)
但是,我处理异常如下:
try {
$date = new \DateTime($date);
$date = $date->format('j-n-Y');
} catch (\Exception $e) {
$date = new \DateTime("now");
$date = $date->format('j-n-Y');
$first = false;
}
我的 Cruise-periodic.html.twig:
<span class="padding-left-10 light-green text-14 selected-date" data-date="{{ date | date('j/n/Y') }}">{{ date | toDateFormat }}</span>
我做错了什么?
编辑 有人导致异常,但我不知道如何。我无法手动测试这种情况。字符串变量“日期”和“方式”在 js 中被替换。可能有人正在寻找 dom href 并盲目地调用它。会是机器人还是机器人?如何阻止他们访问此操作?
【问题讨论】:
-
当它需要一个可解析的日期时,您将字符串“日期”传递给 DateTime,因此“无法解析时间字符串(日期)”和 CruisePreviewAction(8,方式,日期)。找出原因。
-
尝试使用
$date的'Y-m-d'格式解析,行吗? -
@Gordon 我使用 var Cruise = new Cruise($('#vessal-{{ Cruise.id }}'), "{{ path('to_frontend_cruise_preview', {'id': Cruise. id, '方式': '方式', '日期': '日期' }) }}");在 JS 中,但我总是用表单字段替换日期和方式。无论如何,我处理异常,所以我不能有这个问题,但我有。
-
@Victor 我不能使用这种格式。客户想要 j-n-Y 格式。
-
@psalkowski 我的意思是尝试用它来测试它是否有效,用于定义问题
标签: php symfony exception datetime