/** * @dataProvider getParseInvalidTests * @expectedException \InvalidArgumentException */ public function testParseInvalid($name) { $kernel = new Kernel(); $kernel->boot(); $converter = new TemplateNameParser($kernel); $converter->parse($name); }
/** * {@inheritdoc} */ public function parse($name) { if (preg_match('/^@/', $name)) { return new TemplateReference($name, 'twig'); } return parent::parse($name); }
public function parse($name) { try { return parent::parse($name); } catch (\InvalidArgumentException $e) { return $this->parseMagentoName($name); } throw new \InvalidArgumentException("Unable to parse magento template " . $name); }
/** * {@inheritdoc} */ public function parse($name) { if ($name instanceof TemplateReferenceInterface) { return $name; } if (isset($this->cache[$name])) { return $this->cache[$name]; } $parsed = parent::parse($name); // if application bundle - use custom structure reference if ('App' === $parsed->get('bundle')) { return $this->cache[$name] = new TemplateReference($parsed->get('bundle'), $parsed->get('controller'), $parsed->get('name'), $parsed->get('format'), $parsed->get('engine')); } return $parsed; }
/** * {@inheritdoc} * * @throws \InvalidArgumentException * @throws \RuntimeException */ public function parse($name) { if ($name instanceof TemplateReferenceInterface) { return $name; } elseif (isset($this->cache[$name])) { return $this->cache[$name]; } // normalize name $name = str_replace(':/', ':', preg_replace('#/{2,}#', '/', strtr($name, '\\', '/'))); if (false !== strpos($name, '..')) { throw new \RuntimeException(sprintf('Template name "%s" contains invalid characters.', $name)); } if (!preg_match('/^([^:]*):([^:]*):(.+)\\.([^\\.]+)\\.([^\\.]+)$/', $name, $matches)) { $templateReference = parent::parse($name); if ($templateReference->get('engine')) { return $templateReference; } throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid (format is "bundle:section:template.format.engine").', $name)); } //check for template specific theme override $bundle = $matches[1]; preg_match('/^(.*?)\\|(.*?)$/', $matches[1], $templateOverride); if (!empty($templateOverride[1])) { $themeOverride = $templateOverride[1]; $bundle = $templateOverride[2]; } $template = new TemplateReference($bundle, $matches[2], $matches[3], $matches[4], $matches[5]); if (!empty($themeOverride)) { $template->setThemeOverride($themeOverride); } $template->setThemeHelper($this->container->get('mautic.helper.theme')); $template->setPathsHelper($this->container->get('mautic.helper.paths')); if ($template->get('bundle')) { try { $this->kernel->getBundle($template->get('bundle')); } catch (\Exception $e) { throw new \InvalidArgumentException(sprintf('Template name "%s" is not valid.', $name), 0, $e); } } return $this->cache[$name] = $template; }