Example #1
0
 public static function _getHtml(&$layer)
 {
     //Вызывается как для основных так и для подслойв tpls frame. Расширяется в tpltpl.prop.js
     if (@$layer['data'] || @$layer['json'] || @$layer['tpls'] || @$layer['tplroot']) {
         $tpls = Template::make($layer['tpl']);
         //С кэшем перепарсивания
         Template::includes($tpls);
         $repls = array();
         //- подшаблоны для замены, Важно, что оригинальный распаршеный шаблон не изменяется
         Each::fora($layer['tplsm'], function &($tm) use(&$repls) {
             //mix tpl
             $t = Template::make($tm);
             //С кэшем перепарсивания
             array_push($repls, $t);
             //for(var i in t)repls[i]=t[i];//Нельзя подменять в оригинальном шаблоне, который в других местах может использоваться без подмен
             //^ из-за этого обработчики указанные в tplsm срабатывают постоянно, так как нельзя поставить отметку о том что обработчик сохранён
             $r = null;
             return $r;
         });
         $layer['data'] =& self::getData($layer);
         //подменили строку data на объект data
         $alltpls = array(&$repls, &$tpls);
         $html = Template::exec($alltpls, $layer, @$layer['tplroot'], @$layer['dataroot']);
     } else {
         $tpl = self::getTpl($layer);
         $html = $tpl;
     }
     if (!$html) {
         $html = '';
     }
     return $html;
 }
<?php

namespace infrajs\controller;

use infrajs\controller\Controller;
use infrajs\controller\Run;
use infrajs\view\View;
use infrajs\ans\Ans;
use infrajs\template\Template;
use infrajs\path\Path;
if (!is_file('vendor/autoload.php')) {
    chdir('../../../../');
    require_once 'vendor/autoload.php';
}
$ans = array();
$obj = array();
$obj['tpl'] = array('1{:add}');
$obj['tplsm'] = array('{add:}2');
$obj['data'] = array('asdf' => 1);
$tpls = Template::make($obj['tpl']);
//С кэшем перепарсивания
$repls = array();
$t = Template::make($obj['tplsm']);
$repls[] = $t;
$alltpls = array(&$repls, &$tpls);
$html = Template::exec($alltpls, $obj['data']);
if ($html != '12') {
    return Ans::err($ans, 'err');
}
return Ans::ret($ans, 'ret');