public function macroLabel(Latte\MacroNode $node, Latte\PhpWriter $writer) { while ($node->parentNode) { if ($node->parentNode->name == 'gpspicker') { $cmd = 'if ($_label = $_gpspicker->getPartialLabel(%node.word)) echo $_label->addAttributes(%node.array)'; if ($node->isEmpty = substr($node->args, -1) === '/') { $node->setArgs(substr($node->args, 0, -1)); return $writer->write($cmd); } else { return $writer->write($cmd . '->startTag()'); } } $node = $node->parentNode; } throw new CompileException('{gpspicker:label} can be used only within {gpspicker} macro.'); }
/** * @param \Nette\Latte\MacroNode $node * @param \Nette\Latte\PhpWriter $writer * @return string */ public function macroFormBegin(MacroNode $node, PhpWriter $writer) { if ($node->isEmpty = substr($node->args, -1) === '/') { $node->setArgs(substr($node->args, 0, -1)); return $writer->write('$form = $__form = $_form = (is_object(%node.word) ? %node.word : $_control->getComponent(%node.word)); $__form->render(NULL, %node.array);'); } elseif (($token = $this->findCurrentToken()) && $token->empty) { // $node->isEmpty = TRUE; return $writer->write('$form = $__form = $_form = (is_object(%node.word) ? %node.word : $_control->getComponent(%node.word)); $__form->render(NULL, %node.array);'); } $word = $node->tokenizer->fetchWord(); $node->isEmpty = in_array($word, array('errors', 'body', 'controls', 'buttons')); $node->tokenizer->reset(); return $writer->write('$form = $__form = $_form = ' . get_called_class() . '::renderFormPart(%node.word, %node.array, get_defined_vars())'); }