我有一个聪明的模板,对我来说已经有一段时间了,但是由于我不太了解我所指定的变量之一"模板是$ 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;
}
答案 0 :(得分:0)
以下是我认为可能导致问题的原因。
根据您在上面发布的代码,$ span似乎不是在任何地方初始化/设置的。这显然会导致未定义的索引错误。但是,智能对象可能尚未设置为忽略那些未定义的错误报告。您可以通过在实例化或setOption方法期间将值为“YES”的数组键“error_reporting”传递给smarty的构造函数来轻松完成此操作。
此外,如果您使用smarty的日期格式方法生成$ span,那么根据smarty documentation,值应为
unix时间戳,mysql时间戳或由月份日组成的任何字符串,可由php的strtotime解析()
希望它有所帮助!