/** * Test DOM node relocation including static content and transformation. */ public function testComplexUseCse() { $tag = new TemplateTag(); $tag->setContent('<core:appendnode includestatic="true" namespace="' . __NAMESPACE__ . '\\templates" template="include_complex" />'); $tag->onParseTime(); $tag->onAfterAppend(); $expected = 'static text'; // fill template with place holder /* @var $template TemplateTag */ $template = $tag->getChildNode('name', 'test', Template::class); $template->setPlaceHolder('test', $expected); $template->transformOnPlace(); $tag->setPlaceHolder('test', $expected); $actual = $tag->transformTemplate(); // 6 = 4 static + 1 template place holder + 1 place holder $this->assertTrue(substr_count($actual, $expected) === 6); }
/** * Complex use case within a template. Checks whether place holder in place holder works. */ public function testLanguageLabel4() { $node = new TemplateTag(); $node->setContent('<h2><html:getstring id="foo" ' . 'namespace="' . self::TEST_VENDOR . '" ' . 'config="' . self::CONFIG_FILE_NAME . '"' . ' entry="complex" /></h2>'); $node->onParseTime(); $node->onAfterAppend(); $node->getChildNode('id', 'foo', LanguageLabelTag::class)->setPlaceHolder('place-holder', 'test'); $this->assertEquals('<h2>This is a test!</h2>', $node->transformTemplate()); }
public function testTagClosingSignInAttribute() { $doc = new TemplateTag(); $doc->setData('model', [new TestDataModel(), new TestDataModel()]); $expressionOne = 'model[0]->getFoo()'; $expressionTwo = 'model[1]->getBar()'; $expressionThree = 'model[0]->getBaz()->getBar()'; $expressionFour = 'model[1]->getBaz()->getBaz()->getFoo()'; $doc->setContent('<core:addtaglib class="APF\\core\\expression\\taglib\\ExpressionEvaluationTag" prefix="dyn" name="expr" /> <dyn:expr name="one" expression="' . $expressionOne . '" /> <dyn:expr name="two" expression="' . $expressionTwo . '"> Bar Baz </dyn:expr> <dyn:expr name="three" expression="' . $expressionThree . '"/> <dyn:expr name="four" expression="' . $expressionFour . '"/>'); $doc->onParseTime(); $expressionNodeOne = $doc->getChildNode('name', 'one', ExpressionEvaluationTag::class); $expressionNodeTwo = $doc->getChildNode('name', 'two', ExpressionEvaluationTag::class); $expressionNodeThree = $doc->getChildNode('name', 'three', ExpressionEvaluationTag::class); $expressionNodeFour = $doc->getChildNode('name', 'four', ExpressionEvaluationTag::class); $this->assertEquals($expressionOne, $expressionNodeOne->getAttribute('expression')); $this->assertEquals($expressionTwo, $expressionNodeTwo->getAttribute('expression')); $this->assertEquals($expressionThree, $expressionNodeThree->getAttribute('expression')); $this->assertEquals($expressionFour, $expressionNodeFour->getAttribute('expression')); $this->assertEquals('foo', $expressionNodeOne->transform()); $this->assertEquals('bar', $expressionNodeTwo->transform()); $this->assertEquals('bar', $expressionNodeThree->transform()); $this->assertEquals('foo', $expressionNodeFour->transform()); }
/** * Checks, if a place holder exists within the given template. * * @param TemplateTag $template The instance of the template to check. * @param string $name The name of the place holder. * * @return bool True if yes, false otherwise. * * @author Christian Schäfer * @version * Version 0.1, 11.03.2007<br /> * Version 0.2, 23.04.2009 (Corrected PHP4 style object access)<br /> * Version 0.3, 02.07.2011 (Renaming to fit the APF naming convention)<br /> * Version 0.4, 13.08.2014 (ID#231: Allow custom form tag while still using this method to obtain an instance)<br /> */ protected function templatePlaceHolderExists(TemplateTag &$template, $name) { try { $template->getChildNode('name', $name, PlaceHolder::class); return true; } catch (InvalidArgumentException $e) { return false; } }