$sType, 'params' => $oParams], $lineno, $tag); } public function compile(Compiler $compiler) { $sBlockVar = UIBlockHelper::GetBlockVarName('oDataTable'); $oParams = $this->getAttribute('params'); $sType = $this->getAttribute('type'); $compiler ->addDebugInfo($this) ->write("\$aParams = ") ->subcompile($oParams) ->raw(";\n"); switch ($sType) { case 'ForResult': $compiler ->write("\$sListId = \$aParams['list_id'] ?? '';\n") ->write("\$oSet = \$aParams['object_set'] ?? null;\n") ->write("\${$sBlockVar} = Combodo\\iTop\\Application\\UI\\Base\\Component\\DataTable\\DataTableFactory::Make{$sType}(\$context['UIBlockParent'][0], \$sListId, \$oSet);\n") ->write(UIBlockHelper::AddToParentBlock($sBlockVar)); break; // TODO 3.0 add other Factory methods default: throw new SyntaxError(sprintf('%s: Bad type "%s" for %s at line %d', $this->getTemplateName(), $sType, $this->tag, $this->lineno), $this->lineno, $this->getSourceContext()); } } }