Fehler erhalten "Die Klasse kann nicht __TwigTemplate neu gestalten".Php

PHP-Programmierer chatten hier
Anonymous
 Fehler erhalten "Die Klasse kann nicht __TwigTemplate neu gestalten".

Post by Anonymous »

Ich versuche, Zweigloader zu schreiben, der Vorlagen abhängig von der Stadt und dem Partner, der mich in der App angekündigt hat, lädt. Und ich erhalte Fehler, wenn ich meine PHP -App ausführe. Сlass wird das erste Mal korrekt in den Cache geladen, aber aus irgendeinem Grund versuche ich, eine andere Klasse < /p>
zu erstellen

Code: Select all

Compile Error: Cannot redeclare class __TwigTemplate_91fb729aa360daba88c8f80ea708ed40 (previously declared in /var/www/var/cache/dev/twig/f1/f1f0c5a29775ffb735cb305c2a82df1f.php:16)

Hier ist mein Code:

Code: Select all

readonly class PartnerTemplateLoader implements LoaderInterface
{
const string DEFAULT_TEMPLATES_PATH = "Default";

const string VIEWS_DIR = 'Resources/views';

public function __construct(
private KernelInterface $kernel,
private Partner $partner,
private City $city,
private string $defaultTemplatesPath = self::DEFAULT_TEMPLATES_PATH
) {}

public function getSourceContext($name): Source
{
$template = $this->loadTemplate($name);
return new Source(
file_get_contents(
$this->kernel->locateResource($template->absoluteName)
),
$template->name,
$template->absoluteName
);
}

public function getCacheKey($name): string
{
$template = $this->loadTemplate($name);
return $template->name;
}

public function isFresh($name, $time): bool
{
$template = $this->loadTemplate($name);

return filemtime($this->kernel->locateResource($template->absoluteName)) findTemplate($name);
}

private function loadTemplate(string $name): Template
{
$name = str_replace(
":/",
":",
preg_replace("#/{2,}#", "/", strtr($name, "\\", "/"))
);

if (str_contains($name, "..")) {
throw new \RuntimeException(
sprintf('Template name "%s" contains invalid characters.', $name)
);
}

preg_match('/^([^:]*)\/([^:]*)\/(.+)\.([^\.]+)\.([^\.]+)$/', $name, $matches);

try {
if (count($matches) === 0) {
return new Template($name);
}
} catch (\Throwable $e) {}

try {
$absoluteName = $this->prepareAbsolutePartnerName($matches, $this->city->getSlug());
$name = $this->preparePartnerName($matches, $this->city->getSlug());
if ($this->kernel->locateResource($absoluteName)) {
return new Template($name, $absoluteName);
}
} catch (\Throwable $e) {}

try {
$absoluteName = $this->prepareAbsolutePartnerName($matches, $this->defaultTemplatesPath);
$name = $this->preparePartnerName($matches, $this->defaultTemplatesPath);
if ($this->kernel->locateResource($absoluteName)) {
return new Template($name, $absoluteName);
}
} catch (\Throwable $exception) {}

$absoluteName = $this->prepareAbsoluteDefaultName($matches);
$name = $this->prepareDefaultName($matches);
if ($this->kernel->locateResource($this->prepareAbsoluteDefaultName($matches))) {
return new Template($name, $absoluteName);
}

throw new \RuntimeException('Cannot load template!');
}

private function findTemplate(string $name): bool
{
$found = false;
$name = str_replace(
":/",
":",
preg_replace("#/{2,}#", "/", strtr($name, "\\", "/"))
);

if (str_contains($name, "..")) {
throw new \RuntimeException(
sprintf('Template name "%s" contains invalid characters.', $name)
);
}

preg_match('/^([^:]*)\/([^:]*)\/(.+)\.([^\.]+)\.([^\.]+)$/', $name, $matches);

try {
if (count($matches) === 0 &&  $this->kernel->locateResource($name)) {
$found = true;
}
} catch (\Throwable $e) {}

try {
if ($this->kernel->locateResource($this->prepareAbsolutePartnerName($matches, $this->city->getSlug()))) {
$found = true;
}
} catch (\Throwable $e) {}

try {
if ($this->kernel->locateResource($this->prepareAbsolutePartnerName($matches, $this->defaultTemplatesPath))) {
$found = true;
}
} catch (\Throwable $e) {}

try {
if ($this->kernel->locateResource($this->prepareAbsoluteDefaultName($matches))) {
$found = true;
}
} catch (\Throwable $e) {}

return $found;
}

private function prepareDefaultName(array $matches): string
{
return "{$matches[1]}/{$this->defaultTemplatesPath}/{$matches[2]}/{$matches[3]}.{$matches[4]}.{$matches[5]}";
}

private function preparePartnerName(array $matches, string $city): string
{
return "{$matches[1]}/{$this->partner->getTemplatesPath()}/{$city}/{$matches[2]}/{$matches[3]}.{$matches[4]}.{$matches[5]}";
}

private function prepareAbsoluteDefaultName(array $matches): string
{
$absoluteBundlePath =  $matches[1] . "/" . self::VIEWS_DIR;
return "{$absoluteBundlePath}/{$this->defaultTemplatesPath}/{$matches[2]}/{$matches[3]}.{$matches[4]}.{$matches[5]}";
}

private function prepareAbsolutePartnerName(array $matches, string $city): string
{
$absoluteBundlePath =  $matches[1] . "/" . self::VIEWS_DIR;
return "{$absoluteBundlePath}/{$this->partner->getTemplatesPath()}/{$city}/{$matches[2]}/{$matches[3]}.{$matches[4]}.{$matches[5]}";
}
}
Ich habe versucht, meinen Cache zu löschen und aufzuwärmen und Vorlagennamen zu ändern

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post