twigVariableExtractor = $twigVariableExtractor; $this->variableRepository = $variableRepository; } /** * @param Twig $twig * * @return bool */ public function create(Twig $twig): bool { $content = $twig->getContent(); if (false !== strpos($content, '') || '{' === $content[0]) { $simple = $this->twigVariableExtractor->extractSimpleVariables($content); $simpleBool = $this->createSimpleEntity($twig, $simple); $nested = $this->twigVariableExtractor->extractNestedVariables($content); // Example : {% for fieldset_row in product.my_fieldset_example %} => {{ fieldset_row.var_example }} $nestedBool = $this->createNestedEntity($twig, $nested); if (!$simpleBool && !$nestedBool) { $result = false; } else { $result = true; } } else { $result = false; } return $result; } /** * @param Twig $twig [description] * @param array $data [description] * * @return bool [description] */ private function createSimpleEntity(Twig $twig, array $data): bool { if (!empty($data)) { $variables = []; for ($i = 0; $i < count($data['name']); ++$i) { $variable = new Variable(); $variable->setName($data['name'][$i]); $variable->setTwigVar($data['twigVar'][$i]); $variable->setTwig($twig); $variable->setForElement($data['forElement'][$i]); $variables[] = $variable; } $this->variableRepository->saveMultiple($variables); $result = true; } else { $result = false; } return $result; } /** * @param Twig $twig [description] * @param array $nestedData [description] * * @return bool [description] */ private function createNestedEntity(Twig $twig, array $nestedData): bool { if (!empty($nestedData)) { $variables = []; foreach ($nestedData as $data) { $variable = new Variable(); $variable->setName($data['name']); $variable->setTwigVar($data['twigVar']); $variable->setTwig($twig); $variable->setForElement($data['forElement']); foreach ($data['inputs'] as $subData) { $input = new Input(); $input->setName($subData['name']); $input->setVariableName($subData['variableName']); $variable->addInput($input); } $variables[] = $variable; } $this->variableRepository->saveMultiple($variables); $result = true; } else { $result = false; } return $result; } }