0

我有一个聪明的模板,一段时间以来一直很好用,但由于我不太了解我“分配”给模板的变量之一是 $activity_date 以及当我发送带有日期信息的时间信息时它有一些令人惊讶的效果(也就是说,它在“2012-12-27”被传入时有效,但在“2012-12-27 00:00:00”被传入时以一种奇怪的方式倒下。

如果问题实际上与与此变量的某种模板交互有关,但似乎并非如此,这可能会更有意义。相反,最终效果是条件语句,如:

class="ajax-selector {if ($span)}span{$span}{/if} left" 

产生以下错误:

PHP Notice:  Undefined index: span in /[PATH]/templates/compiled/96681eebf17717b8605c8deffb547d7e89c1ace6.file.select2-ajax.tmpl.php on line 35

对我来说,这很矛盾。代码说“测试 $span 的存在”,然后只有在它确实存在时才采取行动。错误消息抱怨未定义的索引,这是条件测试的意图。

正如我之前所说,所有这些类型的条件语句过去都可以完全按照您的预期工作,但是它们都开始失败,唯一的区别似乎是“activity_date”是否以时间级精度返回或只是日期级别的精度。

如果有帮助,这里是设置模板的代码:

public function handler ( $request ) {
    $response = new stdClass();
    $response->action = $request['action'];
    $response->post_type = LG_TAX_Action()->post_type($response->action); 
    $response->meta = LG_TAX_Action()->meta ( $response->action );

    $template = FE_Template::init();
    $meta = new LG_Meta();
    $template->assign ( 'form' , $response );
    if ( isset ($request['activity_date']) ) {
        $template->assign ( 'activity_date' , $request['activity_date'] );
    }
    $named_days = new stdClass();
    $named_days->today = new DateTime('today');
    $named_days->today = $named_days->today->format('Y-m-d');
    $named_days->yesterday = new DateTime('yesterday');
    $named_days->yesterday = $named_days->yesterday->format('Y-m-d');
    $template->assign ( 'named_days' , $named_days ); 
    $template->assign ( 'meta' , $meta ); // provides the "template_exists()" method

    $response->template = $template->fetch( 'activity_forms/master.tmpl' );

    return $response;
}
4

1 回答 1

0

这是我认为可能导致问题的原因。

从您上面发布的代码来看, $span 似乎没有在任何地方初始化/设置。这显然会导致未定义的索引错误。但也许 smarty 对象还没有设置为忽略那些未定义的错误报告。您可以通过在实例化或 setOption 方法期间将值为“YES”的数组键“error_reporting”传递给 smarty 的构造函数来轻松做到这一点。

此外,如果您使用 smarty 的日期格式方法来生成 $span,那么根据smarty 文档,该值应该是

unix 时间戳、mysql 时间戳或由月日年组成的任何字符串,可由 php 的 strtotime() 解析

希望能帮助到你!

于 2012-12-28T02:06:53.130 回答