Exceptions
Exception
Twig\Error\ SyntaxError
Show exception properties
Twig\Error\SyntaxError {#1455 -lineno: 272 -rawMessage: "The block 'body' has already been defined line 228." -source: Twig\Source {#980 -code: """ <!DOCTYPE html>\n <html>\n <head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <title>{% block title %}Welcome!{% endblock %}</title>\n <link rel="icon" href="{% block app_icon %}data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text></svg>{% endblock %}">\n \n {% block fonts_import %}{% endblock %}\n \n <style>\n /* Default Layout Variables */\n {% block theme_vars %}\n :root {\n --color-primary: #333;\n --color-primary-hover: #555;\n --color-secondary: #6c757d;\n --color-secondary-hover: #5a6268;\n --color-info: #17a2b8;\n --color-info-hover: #138496;\n --color-warning: #ffc107;\n --color-warning-hover: #d39e00;\n --color-danger: #dc3545;\n --color-danger-hover: #c82333;\n \n --color-accent: #ccc;\n --color-bg-page: #fff;\n --color-bg-card: #fff;\n --color-text: #333;\n --font-heading: sans-serif;\n --font-body: sans-serif;\n --border-radius: 25px;\n --container-width: 900px;\n --box-shadow: none;\n --header-align: center;\n --header-display: block;\n }\n {% endblock %}\n \n /* --- SHARED CSS FRAMEWORK --- */\n body {\n font-family: var(--font-body);\n background-color: var(--color-bg-page);\n color: var(--color-text);\n margin: 0;\n padding: 0;\n line-height: 1.6;\n }\n \n .app-container {\n max-width: var(--container-width);\n margin: 0 auto;--container-width);\n padding: 40px 20px;\n min-height: 100vh;;\n display: flex;0vh;\n flex-direction: column;\n } flex-direction: column;\n box-sizing: border-box;\n .app-header {\n text-align: var(--header-align);\n margin-bottom: 40px;\n padding-bottom: 20px;der-align);\n border-bottom: 2px solid var(--color-accent);\n display: var(--header-display);\n align-items: center;olid var(--color-accent);\n gap: 15px;ar(--header-display);\n } align-items: center;\n gap: 15px;\n h1, h2, h3, h4, h5, h6 {\n font-family: var(--font-heading);\n color: var(--color-primary);\n margin-top: 0;ar(--font-heading);\n margin-bottom: 1rem;rimary);\n } margin-top: 0;\n margin-bottom: 1rem;\n .app-content {\n flex: 1;\n background: var(--color-bg-card);\n padding: 40px;\n border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n } border-radius: var(--border-radius);\n box-shadow: var(--box-shadow);\n /* Buttons */\n .btn {\n display: inline-block;\n padding: 0.5rem 1rem;\n border-radius: var(--border-radius);\n text-decoration: none;\n font-weight: 600;r(--border-radius);\n transition: all 0.3s ease;\n border: 1px solid transparent; /* Ensure border box model consistency */\n cursor: pointer;0.3s ease;\n font-size: 1rem;d transparent; /* Ensure border box model consistency */\n background-color: var(--color-primary);\n color: white;em;\n background-color: var(--color-primary);\n /* Normalization for <button> vs <a> */\n line-height: 1.5;\n font-family: inherit;<button> vs <a> */\n vertical-align: middle;\n user-select: none;it;\n -webkit-appearance: none;\n appearance: none;;\n } -webkit-appearance: none;\n appearance: none;\n .btn-sm {\n padding: 0.3rem 0.8rem; /* Slightly larger padding for better pill shape */\n font-size: 0.875rem;\n line-height: 1.5;.8rem; /* Slightly larger padding for better pill shape */\n border-radius: var(--border-radius);\n } line-height: 1.5;\n border-radius: var(--border-radius);\n .btn-primary {\n background-color: var(--color-primary);\n color: white;\n } background-color: var(--color-primary);\n .btn-primary:hover {\n background-color: var(--color-primary-hover);\n }btn-primary:hover {\n background-color: var(--color-primary-hover);\n .btn-secondary {\n background-color: var(--color-secondary);\n color: white;\n } background-color: var(--color-secondary);\n .btn-secondary:hover {\n background-color: var(--color-secondary-hover);\n }btn-secondary:hover {\n background-color: var(--color-secondary-hover);\n .btn-info {\n background-color: var(--color-info);\n color: white;\n } background-color: var(--color-info);\n .btn-info:hover {\n background-color: var(--color-info-hover);\n }btn-info:hover {\n background-color: var(--color-info-hover);\n .btn-warning {\n background-color: var(--color-warning);\n color: #212529; /* Text dark for visibility on yellow */\n } background-color: var(--color-warning);\n .btn-warning:hover {/* Text dark for visibility on yellow */\n background-color: var(--color-warning-hover);\n }btn-warning:hover {\n background-color: var(--color-warning-hover);\n .btn-success {\n background-color: #28a745; /* Default Green for add buttons */\n color: white;\n } background-color: #28a745; /* Default Green for add buttons */\n .btn-success:hover {\n background-color: #218838;\n }btn-success:hover {\n background-color: #218838;\n .btn-danger {\n background-color: var(--color-danger);\n color: white;\n } background-color: var(--color-danger);\n .btn-danger:hover {\n background-color: var(--color-danger-hover);\n }btn-danger:hover {\n background-color: var(--color-danger-hover);\n /* Forms */\n .form-control {\n display: block;\n width: 100%;\n padding: 12px;;\n margin-bottom: 20px;\n border: 1px solid #ced4da;\n border-radius: var(--border-radius);\n font-family: var(--font-body);\n font-size: 1rem;ar(--border-radius);\n box-sizing: border-box;-body);\n background-color: #fff;\n } box-sizing: border-box;\n background-color: #fff;\n .form-control:focus {\n outline: none;\n border-color: var(--color-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary), transparent 80%);\n } border-color: var(--color-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-primary), transparent 80%);\n label {\n display: block;\n margin-bottom: 8px;\n font-weight: bold;\n color: var(--color-text);\n } font-weight: bold;\n color: var(--color-text);\n /* Alerts */\n .alert {\n padding: 15px;\n border-radius: var(--border-radius);\n margin-bottom: 20px;\n background-color: #eee;rder-radius);\n } margin-bottom: 20px;\n background-color: #eee;\n .alert-danger {\n background-color: #f8d7da;\n color: #721c24;\n border: 1px solid #f5c6cb;\n } color: #721c24;\n border: 1px solid #f5c6cb;\n a {\n color: var(--color-primary);\n text-decoration: none;\n } color: var(--color-primary);\n a:hover {decoration: none;\n text-decoration: underline;\n }:hover {\n text-decoration: underline;\n /* Responsive Utilities */ }\n @media (max-width: 768px) {\n :root {\n --container-width: 100%; {% block stylesheets %}\n }\n \n .app-container {cripts %}\n padding: 20px 15px; {% block importmap %}{{ importmap('app') }}{% endblock %}\n } endblock %}\n \n .app-content {\n padding: 20px;\n }lass="app-header">\n <h1>{% block app_title %}Applications{% endblock %}</h1>\n .btn {\n width: 100%;\n margin-bottom: 10px;lass="app-content">\n text-align: center; {% block body %}{% endblock %}\n } </main>\n </div>\n .btn-group { </body>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n </html> </body> </div> </main> {% block body %}{% endblock %} <main class="app-content"> </header> <h1>{% block app_title %}Applications{% endblock %}</h1> <header class="app-header"> <div class="app-container"> <body> </head> {% endblock %} {% block importmap %}{{ importmap('app') }}{% endblock %} {% block javascripts %} {% endblock %} {% block stylesheets %} </style> } h3 { font-size: 1.25rem; } h2 { font-size: 1.5rem; } h1 { font-size: 1.75rem; } /* Adjust headings size */ } -webkit-overflow-scrolling: touch; overflow-x: auto; width: 100%; display: block; .table-responsive { /* Tables should be scrollable on mobile */ } width: 100%; flex-direction: column; display: flex;\n \n /* Tables */\n .table-responsive {\n overflow-x: auto;\n }\n \n .table {\n width: 100%;\n margin-bottom: 1rem;\n color: var(--color-text);\n border-collapse: collapse;\n }\n \n .table th,\n .table td {\n padding: 0.75rem;\n vertical-align: top;\n border-top: 1px solid var(--color-accent);\n }\n \n .table thead th {\n vertical-align: bottom;\n border-bottom: 2px solid var(--color-accent);\n text-align: left;\n }\n </html>\n """ -name: "base.html.twig" -path: "/var/www/v2/templates/base.html.twig" } -phpFile: "/var/www/v2/vendor/twig/twig/src/Parser.php" -phpLine: 287 }
in
templates/base.html.twig
(line 272)
width: 100%;}/* Tables should be scrollable on mobile */.table-responsive {display: block;width: 100%;overflow-x: auto;-webkit-overflow-scrolling: touch;}
in
vendor/twig/twig/src/TokenParser/BlockTokenParser.php
->
setBlock
(line 41)
public function parse(Token $token): Node{$lineno = $token->getLine();$stream = $this->parser->getStream();$name = $stream->expect(Token::NAME_TYPE)->getValue();$this->parser->setBlock($name, $block = new BlockNode($name, new EmptyNode(), $lineno));$this->parser->pushLocalScope();$this->parser->pushBlockStack($name);if ($stream->nextIf(Token::BLOCK_END_TYPE)) {$body = $this->parser->subparse([$this, 'decideBlockEnd'], true);
in
vendor/twig/twig/src/Parser.php
->
parse
(line 224)
}$this->stream->next();$subparser->setParser($this);$node = $subparser->parse($token);if (!$node) {trigger_deprecation('twig/twig', '3.12', 'Returning "null" from "%s" is deprecated and forbidden by "TokenParserInterface".', $subparser::class);} else {$node->setNodeTag($subparser->getTag());$rv[] = $node;
in
vendor/twig/twig/src/TokenParser/BlockTokenParser.php
->
subparse
(line 46)
$this->parser->setBlock($name, $block = new BlockNode($name, new EmptyNode(), $lineno));$this->parser->pushLocalScope();$this->parser->pushBlockStack($name);if ($stream->nextIf(Token::BLOCK_END_TYPE)) {$body = $this->parser->subparse([$this, 'decideBlockEnd'], true);if ($token = $stream->nextIf(Token::NAME_TYPE)) {$value = $token->getValue();if ($value != $name) {throw new SyntaxError(\sprintf('Expected endblock for block "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext());
in
vendor/twig/twig/src/Parser.php
->
parse
(line 224)
}$this->stream->next();$subparser->setParser($this);$node = $subparser->parse($token);if (!$node) {trigger_deprecation('twig/twig', '3.12', 'Returning "null" from "%s" is deprecated and forbidden by "TokenParserInterface".', $subparser::class);} else {$node->setNodeTag($subparser->getTag());$rv[] = $node;
in
vendor/twig/twig/src/Parser.php
->
subparse
(line 104)
$this->importedSymbols = [[]];$this->embeddedTemplates = [];$this->expressionRefs = new \WeakMap();try {$body = $this->subparse($test, $dropNeedle);if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) {$body = new EmptyNode();}} catch (SyntaxError $e) {
in
vendor/twig/twig/src/Environment.php
->
parse
(line 558)
{if (null === $this->parser) {$this->parser = new Parser($this);}return $this->parser->parse($stream);}/*** @return void*/
in
vendor/twig/twig/src/Environment.php
->
parse
(line 589)
* @throws SyntaxError When there was an error during tokenizing, parsing or compiling*/public function compileSource(Source $source): string{try {return $this->compile($this->parse($this->tokenize($source)));} catch (Error $e) {$e->setSourceContext($source);throw $e;} catch (\Exception $e) {throw new SyntaxError(\sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e);
in
vendor/twig/twig/src/Environment.php
->
compileSource
(line 408)
$this->cache->load($key);}if (!class_exists($cls, false)) {$source = $this->getLoader()->getSourceContext($name);$content = $this->compileSource($source);if (!isset($this->hotCache[$name])) {$this->cache->write($key, $content);$this->cache->load($key);}
in
vendor/twig/twig/src/Template.php
->
loadTemplate
(line 293)
}} else {$class = $this->env->getTemplateClass($template);}return $this->env->loadTemplate($class, $template, $index);} catch (Error $e) {if (!$e->getSourceContext()) {$e->setSourceContext($this->getSourceContext());}
in
var/cache/dev/twig/48/48dc1daa97b94650f0abd80de8a204a3.php
->
load
(line 56)
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "mariage/base.html.twig"));$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "mariage/base.html.twig"));$this->parent = $this->load("base.html.twig", 1);yield from $this->parent->unwrap()->yield($context, array_merge($this->blocks, $blocks));$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
in
vendor/twig/twig/src/Template.php
->
doDisplay
(line 402)
{$context += $this->env->getGlobals();$blocks = array_merge($this->blocks, $blocks);try {yield from $this->doDisplay($context, $blocks);} catch (Error $e) {if (!$e->getSourceContext()) {$e->setSourceContext($this->getSourceContext());}
in
var/cache/dev/twig/bf/bf80e71077171a39e4719b980175a1f0.php
->
yield
(line 53)
$__internal_5a27a8ba21ca79b61932376b2fa922d2->enter($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "celebration/index.html.twig"));$__internal_6f47bbe9983af81f1e7450e9a3e3768f = $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];$__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template", "celebration/index.html.twig"));yield from $this->getParent($context)->unwrap()->yield($context, array_merge($this->blocks, $blocks));$__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);$__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
in
vendor/twig/twig/src/Template.php
->
doDisplay
(line 402)
{$context += $this->env->getGlobals();$blocks = array_merge($this->blocks, $blocks);try {yield from $this->doDisplay($context, $blocks);} catch (Error $e) {if (!$e->getSourceContext()) {$e->setSourceContext($this->getSourceContext());}
in
vendor/twig/twig/src/Template.php
->
yield
(line 358)
return $this->blocks;}public function display(array $context, array $blocks = []): void{foreach ($this->yield($context, $blocks) as $data) {echo $data;}}public function render(array $context): string
in
vendor/twig/twig/src/Template.php
->
display
(line 373)
ob_start();} else {ob_start(function () { return ''; });}try {$this->display($context);} catch (\Throwable $e) {while (ob_get_level() > $level) {ob_end_clean();}
in
vendor/twig/twig/src/TemplateWrapper.php
->
render
(line 51)
yield from $this->template->yieldBlock($name, $context);}public function render(array $context = []): string{return $this->template->render($context);}/*** @return void*/
in
vendor/twig/twig/src/Environment.php
->
render
(line 333)
* @throws SyntaxError When an error occurred during compilation* @throws RuntimeError When an error occurred during rendering*/public function render($name, array $context = []): string{return $this->load($name)->render($context);}/*** Displays a template.*
in
vendor/symfony/framework-bundle/Controller/AbstractController.php
->
render
(line 462)
if (null !== $block) {return $this->container->get('twig')->load($view)->renderBlock($block, $parameters);}return $this->container->get('twig')->render($view, $parameters);}private function doRender(string $view, ?string $block, array $parameters, ?Response $response, string $method): Response{$content = $this->doRenderView($view, $block, $parameters, $method);
in
vendor/symfony/framework-bundle/Controller/AbstractController.php
->
doRenderView
(line 467)
return $this->container->get('twig')->render($view, $parameters);}private function doRender(string $view, ?string $block, array $parameters, ?Response $response, string $method): Response{$content = $this->doRenderView($view, $block, $parameters, $method);$response ??= new Response();if (200 === $response->getStatusCode()) {foreach ($parameters as $v) {if ($v instanceof FormInterface && $v->isSubmitted() && !$v->isValid()) {
in
vendor/symfony/framework-bundle/Controller/AbstractController.php
->
doRender
(line 279)
* If an invalid form is found in the list of parameters, a 422 status code is returned.* Forms found in parameters are auto-cast to form views.*/protected function render(string $view, array $parameters = [], ?Response $response = null): Response{return $this->doRender($view, null, $parameters, $response, __FUNCTION__);}/*** Renders a block in a view.*
$celebrations = $celebrationRepository->findBy(['creationBy' => $user,'wedding' => true]);return $this->render('celebration/index.html.twig', ['celebrations' => $celebrations,'base_template' => 'mariage/base.html.twig','route_prefix' => 'mariage_celebration','appName' => 'Mariage',]);
in
vendor/symfony/http-kernel/HttpKernel.php
->
index
(line 183)
$this->dispatcher->dispatch($event, KernelEvents::CONTROLLER_ARGUMENTS);$controller = $event->getController();$arguments = $event->getArguments();// call controller$response = $controller(...$arguments);// viewif (!$response instanceof Response) {$event = new ViewEvent($this, $request, $type, $response, $event);$this->dispatcher->dispatch($event, KernelEvents::VIEW);
in
vendor/symfony/http-kernel/HttpKernel.php
->
handleRaw
(line 76)
$request->headers->set('X-Php-Ob-Level', (string) ob_get_level());$this->requestStack->push($request);$response = null;try {return $response = $this->handleRaw($request, $type);} catch (\Throwable $e) {if ($e instanceof \Error && !$this->handleAllThrowables) {throw $e;}
in
vendor/symfony/http-kernel/Kernel.php
->
handle
(line 191)
if (!$this->handlingHttpCache) {$this->resetServices = true;}try {return $this->getHttpKernel()->handle($request, $type, $catch);} finally {--$this->requestStackSize;}}
in
vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php
->
handle
(line 35)
) {}public function run(): int{$response = $this->kernel->handle($this->request);if (Kernel::VERSION_ID >= 60400) {$response->send(false);if (\function_exists('fastcgi_finish_request') && !$this->debug) {
in
vendor/autoload_runtime.php
->
run
(line 32)
$app = $app(...$args);exit($runtime->getRunner($app)->run());
<?phpuse App\Kernel;require_once dirname(__DIR__).'/vendor/autoload_runtime.php';return function (array $context) {return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);};
Logs
| Level | Channel | Message |
|---|---|---|
| INFO 00:23:14 | request |
Matched route "_profiler". {
"route": "_profiler",
"route_parameters": {
"_route": "_profiler",
"_controller": "web_profiler.controller.profiler::panelAction",
"token": "2eeddd"
},
"request_uri": "https://preprod.notredernieradieu.fr/_profiler/2eeddd?panel=exception&type=request",
"method": "GET"
}
|
Stack Trace
|
SyntaxError
|
|---|
Twig\Error\SyntaxError:
The block 'body' has already been defined line 228 in "base.html.twig" at line 272.
at templates/base.html.twig:272
at Twig\Parser->setBlock()
(vendor/twig/twig/src/TokenParser/BlockTokenParser.php:41)
at Twig\TokenParser\BlockTokenParser->parse()
(vendor/twig/twig/src/Parser.php:224)
at Twig\Parser->subparse()
(vendor/twig/twig/src/TokenParser/BlockTokenParser.php:46)
at Twig\TokenParser\BlockTokenParser->parse()
(vendor/twig/twig/src/Parser.php:224)
at Twig\Parser->subparse()
(vendor/twig/twig/src/Parser.php:104)
at Twig\Parser->parse()
(vendor/twig/twig/src/Environment.php:558)
at Twig\Environment->parse()
(vendor/twig/twig/src/Environment.php:589)
at Twig\Environment->compileSource()
(vendor/twig/twig/src/Environment.php:408)
at Twig\Environment->loadTemplate()
(vendor/twig/twig/src/Template.php:293)
at Twig\Template->load()
(var/cache/dev/twig/48/48dc1daa97b94650f0abd80de8a204a3.php:56)
at __TwigTemplate_4810b25637c96f122b1374984e2446b5->doDisplay()
(vendor/twig/twig/src/Template.php:402)
at Twig\Template->yield()
(var/cache/dev/twig/bf/bf80e71077171a39e4719b980175a1f0.php:53)
at __TwigTemplate_16e6c3a635f6eb800feb973bda8458c7->doDisplay()
(vendor/twig/twig/src/Template.php:402)
at Twig\Template->yield()
(vendor/twig/twig/src/Template.php:358)
at Twig\Template->display()
(vendor/twig/twig/src/Template.php:373)
at Twig\Template->render()
(vendor/twig/twig/src/TemplateWrapper.php:51)
at Twig\TemplateWrapper->render()
(vendor/twig/twig/src/Environment.php:333)
at Twig\Environment->render()
(vendor/symfony/framework-bundle/Controller/AbstractController.php:462)
at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->doRenderView()
(vendor/symfony/framework-bundle/Controller/AbstractController.php:467)
at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->doRender()
(vendor/symfony/framework-bundle/Controller/AbstractController.php:279)
at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->render()
(src/Controller/Mariage/CelebrationController.php:31)
at App\Controller\Mariage\CelebrationController->index()
(vendor/symfony/http-kernel/HttpKernel.php:183)
at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
(vendor/symfony/http-kernel/HttpKernel.php:76)
at Symfony\Component\HttpKernel\HttpKernel->handle()
(vendor/symfony/http-kernel/Kernel.php:191)
at Symfony\Component\HttpKernel\Kernel->handle()
(vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
(vendor/autoload_runtime.php:32)
at require_once('/var/www/v2/vendor/autoload_runtime.php')
(public/index.php:5)
|