0

私はしばらくの間うまく機能しているスマートなテンプレートを持っていますが、理由のために、テンプレートに「割り当てる」変数の1つが$ activity_dateであり、日付情報とともに時間情報を送信するときはよくわかりません。いくつかの驚くべき効果があります(別名、「2012-12-27」が渡されると機能しますが、「2012-12-2700: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 に答える