Programming Language PHP
Namespace Oro\Component\Layout\Loader\Generator
Class VisitContext
Method/Function appendToUpdateMethodBody
Total Examples 4
4 code examples of PHP Oro\Component\Layout\Loader\Generator\VisitContext::appendToUpdateMethodBody extracted from open source projects
public function endVisit(VisitContext $visitContext): void
{
$visitContext->appendToUpdateMethodBody('}');
}
public function startVisit(VisitContext $visitContext): void
{
$visitContext->appendToUpdateMethodBody('if (true) {');
}
public function startVisit(VisitContext $visitContext): void
{
$class = $visitContext->getClass();
$class->addImplement(LayoutUpdateImportInterface::class);
if (!\in_array(IsApplicableLayoutUpdateInterface::class, $class->getImplements())) {
$class->addImplement(IsApplicableLayoutUpdateInterface::class);
}
$class->addMethod('isApplicable')
->addBody('return true;')
->addParameter('context')->setType(ContextInterface::class);
$class->addMethod('getImport')
->addBody('return $this->import;');
$class->addMethod('setImport')
->addBody('$this->import = $import;')
->addParameter('import')->setType(LayoutUpdateImport::class);
$class->addProperty('import')->setPrivate();
$class->addMethod('setParentUpdate')
->addBody('$this->parentLayoutUpdate = $parentLayoutUpdate;')
->addParameter('parentLayoutUpdate')->setType(ImportsAwareLayoutUpdateInterface::class);
$class->addProperty('parentLayoutUpdate')->setPrivate();
$visitContext->appendToUpdateMethodBody(
<<<'CODE'
if (null === $this->import) {
throw new \RuntimeException('Missing import configuration for layout update');
}
if ($this->parentLayoutUpdate instanceof \Oro\Component\Layout\IsApplicableLayoutUpdateInterface
&& !$this->parentLayoutUpdate->isApplicable($item->getContext())) {
return;
}
$layoutManipulator = new \Oro\Component\Layout\ImportLayoutManipulator($layoutManipulator, $this->import);
CODE
);
}
public function startVisit(VisitContext $visitContext): void
{
$class = $visitContext->getClass();
if (!\in_array(IsApplicableLayoutUpdateInterface::class, $class->getImplements())) {
$class->addImplement(IsApplicableLayoutUpdateInterface::class);
}
$class->addMethod('isApplicable')
->addBody(\sprintf('return %s;', $this->expressionLanguage->compile($this->expression)))
->addParameter('context')->setType(ContextInterface::class);
$oldUpdateMethodBody = $visitContext->getUpdateMethodBody();
$visitContext->setUpdateMethodBody(
<<<'CODE'
if (!$this->isApplicable($item->getContext())) {
return;
}
CODE
);
$visitContext->appendToUpdateMethodBody($oldUpdateMethodBody);
}