Symfony Exception

RuntimeError

HTTP 500 Internal Server Error

Impossible to access an attribute ("sources") on a null variable.

Exception

Twig\Error\ RuntimeError

Show exception properties
Twig\Error\RuntimeError {#1220
  -lineno: 10
  -name: "video/view_video.html.twig"
  -rawMessage: "Impossible to access an attribute ("sources") on a null variable."
  -sourcePath: "/var/www/fr.sebii.www/versions/version-2403111955/symfony/templates/video/view_video.html.twig"
  -sourceCode: """
    {% extends '_template/base.html.twig' %}\n
    \n
    {% block hero %}\n
        {% embed '_template/base/components/embed_hero_none.html.twig' %}{% endembed %}\n
    {% endblock hero %}\n
    \n
    {% block content %}\n
        {% embed '_template/base/components/embed_article.html.twig' with {video_header: true} %}\n
            {% block video_header %}\n
                {% if video.sources|length > 0 %}\n
                    {{ enum('App\\Enum\\Video\\SourceServiceEnum').getPlayerEmbedCode(video.sources.first, 'aspect-video w-full object-center')|raw }}\n
                {% else %}\n
                    PAS DE SOURCE !!!!\n
                {% endif %}\n
            {% endblock video_header %}\n
            {% block title video.name %}\n
            {% block content %}\n
                <p class="{{ content_p_class }} text-xs text-right">\n
                    Date de publication : {{ video.recordedAt|date('d/m/Y H:i') }}\n
                </p>\n
                <p class="{{ content_p_class }}">\n
                    {{ video.description }}\n
                </p>\n
            {% endblock content %}\n
            {% block tags %}\n
                {% for playlistItem in video.playlistItems %}\n
                    {% if playlistItem.playlist.displayed == true %}\n
                        <a href="{{ path('sebii__video__list_videos__playlist_filter', {playlistSlug: playlistItem.playlist.slug}) }}" class="{{ tag_a_class }}">\n
                            <span class="mdi mdi-playlist-play"></span>\n
                            {{ playlistItem.playlist.name }}\n
                        </a>\n
                    {% endif %}\n
                {% endfor %}\n
                {% for category in video.categories %}\n
                    <a href="{{ path('sebii__video__list_videos__category_filter', {categorySlug: category.slug}) }}" class="{{ tag_a_class }}">\n
                        {{ category.typeEnum.getMaterialDesignIconTag()|raw }}\n
                        {{ category.name }}\n
                    </a>\n
                {% endfor %}\n
                {% for categoryCollection in video.categoryCollections %}\n
                    <a href="{{ path('sebii__video__list_videos__category_collection_filter', {categoryCollectionSlug: categoryCollection.slug}) }}" class="{{ tag_a_class }}">\n
                        <span class="mdi mdi-bookmark-box-multiple"></span>\n
                        {{ categoryCollection.name }}\n
                    </a>\n
                {% endfor %}\n
                <a href="{{ path('sebii__video__list_videos__video_type_filter', {videoType: video.type}) }}" class="{{ tag_a_class }}">\n
                    <span class="mdi mdi-video"></span>\n
                    {{ enum('App\\Enum\\Video\\VideoTypeEnum').getMessageFromValue(video.type)|trans }}\n
                </a>\n
            {% endblock tags %}\n
            {% block playlists %}\n
                {% import '_template/base/components/macro_playlist_video.html.twig' as playlist_video %}\n
                {% for playlist_item in video.playlistItems %}\n
                    {% if playlist_item.playlist.displayed == true %}\n
                        {{ playlist_video.playlist(playlist_item.playlist, playlist_item) }}\n
                    {% endif %}\n
                {% endfor %}\n
            {% endblock playlists %}\n
        {% endembed %}\n
    {% endblock content %}
    """
}
  1. {% endblock hero %}
  2. {% block content %}
  3.     {% embed '_template/base/components/embed_article.html.twig' with {video_header: true} %}
  4.         {% block video_header %}
  5.             {% if video.sources|length > 0 %}
  6.                 {{ enum('App\\Enum\\Video\\SourceServiceEnum').getPlayerEmbedCode(video.sources.first, 'aspect-video w-full object-center')|raw }}
  7.             {% else %}
  8.                 PAS DE SOURCE !!!!
  9.             {% endif %}
  10.         {% endblock video_header %}
  1.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  2.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""video_header"));
  3.         // line 10
  4.         echo "            ";
  5.         if ((twig_length_filter($this->envtwig_get_attribute($this->env$this->source, (isset($context["video"]) || array_key_exists("video"$context) ? $context["video"] : (function () { throw new RuntimeError('Variable "video" does not exist.'10$this->source); })()), "sources", [], "any"falsefalsefalse10)) > 0)) {
  6.             // line 11
  7.             echo "                ";
  8.             echo twig_get_attribute($this->env$this->source$this->extensions['App\Twig\Extension\TwigEnumExtension']->enum("App\\Enum\\Video\\SourceServiceEnum"), "getPlayerEmbedCode", [twig_get_attribute($this->env$this->sourcetwig_get_attribute($this->env$this->source, (isset($context["video"]) || array_key_exists("video"$context) ? $context["video"] : (function () { throw new RuntimeError('Variable "video" does not exist.'11$this->source); })()), "sources", [], "any"falsefalsefalse11), "first", [], "any"falsefalsefalse11), "aspect-video w-full object-center"], "method"falsefalsefalse11);
  9.             echo "
  10.             ";
  1.             throw new \LogicException('A block must be a method on a \Twig\Template instance.');
  2.         }
  3.         if (null !== $template) {
  4.             try {
  5.                 $template->$block($context$blocks);
  6.             } catch (Error $e) {
  7.                 if (!$e->getSourceContext()) {
  8.                     $e->setSourceContext($template->getSourceContext());
  9.                 }
  1.                     ";
  2.         // line 9
  3.         if ((array_key_exists("video_header"$context) && ((isset($context["video_header"]) || array_key_exists("video_header"$context) ? $context["video_header"] : (function () { throw new RuntimeError('Variable "video_header" does not exist.'9$this->source); })()) == true))) {
  4.             // line 10
  5.             echo "                        ";
  6.             $this->displayBlock('video_header'$context$blocks);
  7.             // line 11
  8.             echo "                    ";
  9.         }
  10.         // line 12
  11.         echo "                    ";
  1.     }
  2.     protected function displayWithErrorHandling(array $context, array $blocks = [])
  3.     {
  4.         try {
  5.             $this->doDisplay($context$blocks);
  6.         } catch (Error $e) {
  7.             if (!$e->getSourceContext()) {
  8.                 $e->setSourceContext($this->getSourceContext());
  9.             }
  1.         return $this->blocks;
  2.     }
  3.     public function display(array $context, array $blocks = [])
  4.     {
  5.         $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks$blocks));
  6.     }
  7.     public function render(array $context)
  8.     {
  9.         $level ob_get_level();
  1.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  2.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""video/view_video.html.twig"));
  3.         $this->parent $this->loadTemplate("_template/base/components/embed_article.html.twig""video/view_video.html.twig"8);
  4.         $this->parent->display($contextarray_merge($this->blocks$blocks));
  5.         
  6.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  7.         
  8.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1.     }
  2.     protected function displayWithErrorHandling(array $context, array $blocks = [])
  3.     {
  4.         try {
  5.             $this->doDisplay($context$blocks);
  6.         } catch (Error $e) {
  7.             if (!$e->getSourceContext()) {
  8.                 $e->setSourceContext($this->getSourceContext());
  9.             }
  1.         return $this->blocks;
  2.     }
  3.     public function display(array $context, array $blocks = [])
  4.     {
  5.         $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks$blocks));
  6.     }
  7.     public function render(array $context)
  8.     {
  9.         $level ob_get_level();
  1.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  2.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "block""content"));
  3.         // line 8
  4.         echo "    ";
  5.         $this->loadTemplate("video/view_video.html.twig""video/view_video.html.twig"8"876487659")->display(twig_array_merge($context, ["video_header" => true]));
  6.         
  7.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  8.         
  9.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  1.             throw new \LogicException('A block must be a method on a \Twig\Template instance.');
  2.         }
  3.         if (null !== $template) {
  4.             try {
  5.                 $template->$block($context$blocks);
  6.             } catch (Error $e) {
  7.                 if (!$e->getSourceContext()) {
  8.                     $e->setSourceContext($template->getSourceContext());
  9.                 }
  1.         ";
  2.         // line 63
  3.         $this->displayBlock('hero'$context$blocks);
  4.         // line 64
  5.         echo "        ";
  6.         $this->displayBlock('content'$context$blocks);
  7.         // line 65
  8.         echo "
  9. ";
  10.         // line 73
  11.         echo "
  1.     }
  2.     protected function displayWithErrorHandling(array $context, array $blocks = [])
  3.     {
  4.         try {
  5.             $this->doDisplay($context$blocks);
  6.         } catch (Error $e) {
  7.             if (!$e->getSourceContext()) {
  8.                 $e->setSourceContext($this->getSourceContext());
  9.             }
  1.         return $this->blocks;
  2.     }
  3.     public function display(array $context, array $blocks = [])
  4.     {
  5.         $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks$blocks));
  6.     }
  7.     public function render(array $context)
  8.     {
  9.         $level ob_get_level();
  1.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f $this->extensions["Symfony\\Bridge\\Twig\\Extension\\ProfilerExtension"];
  2.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->enter($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof = new \Twig\Profiler\Profile($this->getTemplateName(), "template""video/view_video.html.twig"));
  3.         $this->parent $this->loadTemplate("_template/base.html.twig""video/view_video.html.twig"1);
  4.         $this->parent->display($contextarray_merge($this->blocks$blocks));
  5.         
  6.         $__internal_5a27a8ba21ca79b61932376b2fa922d2->leave($__internal_5a27a8ba21ca79b61932376b2fa922d2_prof);
  7.         
  8.         $__internal_6f47bbe9983af81f1e7450e9a3e3768f->leave($__internal_6f47bbe9983af81f1e7450e9a3e3768f_prof);
  1.     }
  2.     protected function displayWithErrorHandling(array $context, array $blocks = [])
  3.     {
  4.         try {
  5.             $this->doDisplay($context$blocks);
  6.         } catch (Error $e) {
  7.             if (!$e->getSourceContext()) {
  8.                 $e->setSourceContext($this->getSourceContext());
  9.             }
  1.         return $this->blocks;
  2.     }
  3.     public function display(array $context, array $blocks = [])
  4.     {
  5.         $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks$blocks));
  6.     }
  7.     public function render(array $context)
  8.     {
  9.         $level ob_get_level();
  1.             ob_start();
  2.         } else {
  3.             ob_start(function () { return ''; });
  4.         }
  5.         try {
  6.             $this->display($context);
  7.         } catch (\Throwable $e) {
  8.             while (ob_get_level() > $level) {
  9.                 ob_end_clean();
  10.             }
  1.         $this->template $template;
  2.     }
  3.     public function render(array $context = []): string
  4.     {
  5.         return $this->template->render($context);
  6.     }
  7.     public function display(array $context = [])
  8.     {
  9.         // using func_get_args() allows to not expose the blocks argument
  1.      * @throws SyntaxError  When an error occurred during compilation
  2.      * @throws RuntimeError When an error occurred during rendering
  3.      */
  4.     public function render($name, array $context = []): string
  5.     {
  6.         return $this->load($name)->render($context);
  7.     }
  8.     /**
  9.      * Displays a template.
  10.      *
  1.         if (null !== $block) {
  2.             return $this->container->get('twig')->load($view)->renderBlock($block$parameters);
  3.         }
  4.         return $this->container->get('twig')->render($view$parameters);
  5.     }
  6.     private function doRender(string $view, ?string $block, array $parameters, ?Response $responsestring $method): Response
  7.     {
  8.         $content $this->doRenderView($view$block$parameters$method);
  1.         return $this->container->get('twig')->render($view$parameters);
  2.     }
  3.     private function doRender(string $view, ?string $block, array $parameters, ?Response $responsestring $method): Response
  4.     {
  5.         $content $this->doRenderView($view$block$parameters$method);
  6.         $response ??= new Response();
  7.         if (200 === $response->getStatusCode()) {
  8.             foreach ($parameters as $v) {
  9.                 if ($v instanceof FormInterface && $v->isSubmitted() && !$v->isValid()) {
  1.      * If an invalid form is found in the list of parameters, a 422 status code is returned.
  2.      * Forms found in parameters are auto-cast to form views.
  3.      */
  4.     protected function render(string $view, array $parameters = [], ?Response $response null): Response
  5.     {
  6.         return $this->doRender($viewnull$parameters$response__FUNCTION__);
  7.     }
  8.     /**
  9.      * Renders a block in a view.
  10.      *
  1.     ): Response
  2.     {
  3.         /** @var Video $video */
  4.         $video $videoRepository->find(id$videoUuid);
  5.         return $this->render(view'video/view_video.html.twig'parameters: [
  6.             'video' => $video,
  7.         ]);
  8.     }
  9. }
  1.         $this->dispatcher->dispatch($eventKernelEvents::CONTROLLER_ARGUMENTS);
  2.         $controller $event->getController();
  3.         $arguments $event->getArguments();
  4.         // call controller
  5.         $response $controller(...$arguments);
  6.         // view
  7.         if (!$response instanceof Response) {
  8.             $event = new ViewEvent($this$request$type$response$event);
  9.             $this->dispatcher->dispatch($eventKernelEvents::VIEW);
  1.         $request->headers->set('X-Php-Ob-Level', (string) ob_get_level());
  2.         $this->requestStack->push($request);
  3.         $response null;
  4.         try {
  5.             return $response $this->handleRaw($request$type);
  6.         } catch (\Throwable $e) {
  7.             if ($e instanceof \Error && !$this->handleAllThrowables) {
  8.                 throw $e;
  9.             }
  1.         $this->boot();
  2.         ++$this->requestStackSize;
  3.         $this->resetServices true;
  4.         try {
  5.             return $this->getHttpKernel()->handle($request$type$catch);
  6.         } finally {
  7.             --$this->requestStackSize;
  8.         }
  9.     }
  1.     ) {
  2.     }
  3.     public function run(): int
  4.     {
  5.         $response $this->kernel->handle($this->request);
  6.         if (Kernel::VERSION_ID >= 60400) {
  7.             $response->send(false);
  8.             if (\function_exists('fastcgi_finish_request') && !$this->debug) {
  1. $app $app(...$args);
  2. exit(
  3.     $runtime
  4.         ->getRunner($app)
  5.         ->run()
  6. );
require_once('/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/autoload_runtime.php') in /var/www/fr.sebii.www/versions/version-2403111955/symfony/public/index.php (line 31)
  1.     exit();
  2. }
  3. use App\Kernel;
  4. require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
  5. return function (array $context) {
  6.     return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
  7. };

Stack Trace

RuntimeError
Twig\Error\RuntimeError:
Impossible to access an attribute ("sources") on a null variable.

  at /var/www/fr.sebii.www/versions/version-2403111955/symfony/templates/video/view_video.html.twig:10
  at twig_get_attribute()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/var/cache/dev/twig/81/81bbda218c5b1f59c99d9a25983c309e.php:379)
  at __TwigTemplate_ec65eb71c84f71a7ec0c338598f73b1d___876487659->block_video_header()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Template.php:171)
  at Twig\Template->displayBlock()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/var/cache/dev/twig/7d/7db76b2e17227d1ceb6c0e07610a7381.php:81)
  at __TwigTemplate_f480cb249acfe7dc28eebd4073513a35->doDisplay()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Template.php:394)
  at Twig\Template->displayWithErrorHandling()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Template.php:367)
  at Twig\Template->display()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/var/cache/dev/twig/81/81bbda218c5b1f59c99d9a25983c309e.php:358)
  at __TwigTemplate_ec65eb71c84f71a7ec0c338598f73b1d___876487659->doDisplay()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Template.php:394)
  at Twig\Template->displayWithErrorHandling()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Template.php:367)
  at Twig\Template->display()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/var/cache/dev/twig/81/81bbda218c5b1f59c99d9a25983c309e.php:91)
  at __TwigTemplate_ec65eb71c84f71a7ec0c338598f73b1d->block_content()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Template.php:171)
  at Twig\Template->displayBlock()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/var/cache/dev/twig/09/0904028ec21ec89fd4eef91f0fb71cb9.php:111)
  at __TwigTemplate_f999c0437c75051ae42742003e6fd394->doDisplay()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Template.php:394)
  at Twig\Template->displayWithErrorHandling()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Template.php:367)
  at Twig\Template->display()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/var/cache/dev/twig/81/81bbda218c5b1f59c99d9a25983c309e.php:49)
  at __TwigTemplate_ec65eb71c84f71a7ec0c338598f73b1d->doDisplay()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Template.php:394)
  at Twig\Template->displayWithErrorHandling()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Template.php:367)
  at Twig\Template->display()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Template.php:379)
  at Twig\Template->render()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/TemplateWrapper.php:38)
  at Twig\TemplateWrapper->render()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/twig/twig/src/Environment.php:280)
  at Twig\Environment->render()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/symfony/framework-bundle/Controller/AbstractController.php:448)
  at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->doRenderView()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/symfony/framework-bundle/Controller/AbstractController.php:453)
  at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->doRender()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/symfony/framework-bundle/Controller/AbstractController.php:253)
  at Symfony\Bundle\FrameworkBundle\Controller\AbstractController->render()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/src/Controller/Video/ViewVideo.php:24)
  at App\Controller\Video\ViewVideo->__invoke()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/symfony/http-kernel/HttpKernel.php:181)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/symfony/http-kernel/HttpKernel.php:76)
  at Symfony\Component\HttpKernel\HttpKernel->handle()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/symfony/http-kernel/Kernel.php:197)
  at Symfony\Component\HttpKernel\Kernel->handle()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php:35)
  at Symfony\Component\Runtime\Runner\Symfony\HttpKernelRunner->run()
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/autoload_runtime.php:29)
  at require_once('/var/www/fr.sebii.www/versions/version-2403111955/symfony/vendor/autoload_runtime.php')
     (/var/www/fr.sebii.www/versions/version-2403111955/symfony/public/index.php:31)