%PDF- %PDF-
Direktori : /www/varak.net/losik.varak.net/vendor/nette/forms/src/Bridges/FormsLatte/Nodes/ |
Current File : /www/varak.net/losik.varak.net/vendor/nette/forms/src/Bridges/FormsLatte/Nodes/FormNNameNode.php |
<?php /** * This file is part of the Latte (https://latte.nette.org) * Copyright (c) 2008 David Grudl (https://davidgrudl.com) */ declare(strict_types=1); namespace Nette\Bridges\FormsLatte\Nodes; use Latte; use Latte\Compiler\Nodes\AreaNode; use Latte\Compiler\Nodes\AuxiliaryNode; use Latte\Compiler\Nodes\Php\ExpressionNode; use Latte\Compiler\Nodes\Php\Scalar\StringNode; use Latte\Compiler\Nodes\StatementNode; use Latte\Compiler\PrintContext; use Latte\Compiler\Tag; /** * <form n:name> */ final class FormNNameNode extends StatementNode { public ExpressionNode $name; public AreaNode $content; public static function create(Tag $tag): \Generator { $tag->expectArguments(); $node = new static; $node->name = $tag->parser->parseUnquotedStringOrExpression(colon: false); [$node->content] = yield; $node->init($tag); return $node; } public function print(PrintContext $context): string { return $context->format( '$form = $this->global->formsStack[] = ' . ($this->name instanceof StringNode ? '$this->global->uiControl[%node]' : 'is_object($ʟ_tmp = %node) ? $ʟ_tmp : $this->global->uiControl[$ʟ_tmp]') . ' %line;' . '%node ' . 'array_pop($this->global->formsStack);', $this->name, $this->position, $this->content, ); } private function init(Tag $tag) { $el = $tag->htmlElement; $tag->replaceNAttribute(new AuxiliaryNode(fn(PrintContext $context) => $context->format( 'echo Nette\Bridges\FormsLatte\Runtime::renderFormBegin(end($this->global->formsStack), %dump, false) %line;', array_fill_keys(FieldNNameNode::findUsedAttributes($el), null), $this->position, ))); $el->content = new Latte\Compiler\Nodes\FragmentNode([ $el->content, new AuxiliaryNode(fn(PrintContext $context) => $context->format( 'echo Nette\Bridges\FormsLatte\Runtime::renderFormEnd(end($this->global->formsStack), false) %line;', $this->position, )), ]); } public function &getIterator(): \Generator { yield $this->name; yield $this->content; } }