sonata-project / SonataPageBundle

This bundle provides a Site and Page management through container and block services
https://docs.sonata-project.org/projects/SonataPageBundle
MIT License
219 stars 209 forks source link

Release 4.0 #1495

Closed eerison closed 2 years ago

eerison commented 2 years ago

I'm using this branch to test the upgrade from 3.x branch to 4.x

Those issues need to be solved before release 4.0 version

CSS / Javascript:

Other:

Completed:

eerison commented 2 years ago

Updated Sonata admin 4

Sonata\BlockBundle\Model\BaseBlock::setPosition(): Argument #1 ($position) must be of type int, null given, called in /app/vendor/sonata-project/page-bundle/src/Entity/Transformer.php on line 157
eerison commented 2 years ago

well the 4.x branch is unusable, if you just navigate into the admin you will get some internal server error!

eerison commented 2 years ago

do you think make sense I create more bug issues @VincentLanglet?

VincentLanglet commented 2 years ago

Havind all the issues in the same issue might be enough

VincentLanglet commented 2 years ago

For

http://localhost:8001/admin/app/sonatapagepage/tree

it's the same issue than https://github.com/sonata-project/SonataPageBundle/issues/1498

I proposed a solution.

eerison commented 2 years ago

For

http://localhost:8001/admin/app/sonatapagepage/tree

it's the same issue than #1498

I proposed a solution.

NIce ❤️

VincentLanglet commented 2 years ago

For

form.group_form_page_group_main_label, form.group_form_page_group_seo_label, form.group_form_page_group_advanced_label

I assume the translations exists either https://github.com/sonata-project/SonataPageBundle/blob/3.x/src/Resources/translations/SonataPageBundle.en.xliff#L133-L144 or https://github.com/sonata-project/SonataPageBundle/blob/3.x/src/Resources/translations/SonataPageBundle.en.xliff#L225-L236

But SonataAdmin changed the way he generated the translation keys. In 3.x foo.bar group were using the key foo_bar. In 4.x foo.bar group is using the key form.group_foo_bar.

So the form_page.group_seo_label translations should be updated. And we might simplify

form.group_form_page_group_main_label, form.group_form_page_group_seo_label, form.group_form_page_group_advanced_label

to

form.group_main_label, form.group_seo_label, form.group_advanced_label

By changing https://github.com/sonata-project/SonataPageBundle/blob/f2ca4ea390f0a9da0290fc85a847562a8a83dc7d/src/Admin/PageAdmin.php#L281-L283 to

             ->with('main_label', ['class' => 'col-md-6'])->end()
             ->with('seo_label', ['class' => 'col-md-6'])->end()
             ->with('advanced_label', ['class' => 'col-md-6'])->end();

or even

             ->with('main', ['class' => 'col-md-6'])->end()
             ->with('seo', ['class' => 'col-md-6'])->end()
             ->with('advanced', ['class' => 'col-md-6'])->end();
VincentLanglet commented 2 years ago

For create_snapshot, it's https://github.com/sonata-project/SonataPageBundle/pull/1502 IMHO

eerison commented 2 years ago

I added a new issue in dashboard

Amin-Hosseini commented 2 years ago

Hey, I will work on missing translations

eerison commented 2 years ago

@VincentLanglet have you tried to add this in the pipelines: https://symfony.com/doc/current/translation/debug.html to get the missing translations?

VincentLanglet commented 2 years ago

@VincentLanglet have you tried to add this in the pipelines: https://symfony.com/doc/current/translation/debug.html to get the missing translations?

It would miss all the translation key generated dynamically if I understand correctly

eerison commented 2 years ago

@VincentLanglet have you tried to add this in the pipelines: https://symfony.com/doc/current/translation/debug.html to get the missing translations?

It would miss all the translation key generated dynamically if I understand correctly

true :(

VincentLanglet commented 2 years ago
  • at http://localhost:8001/admin/dashboard is returning An exception has been thrown during the rendering of a template ("The options "manager", "page_id" do not exist. Defined options are: "attr", "extra_cache_keys", "groups", "template", "ttl", "use_cache".").

For this error, seems like the BlockManager is done in 4.x is not working https://github.com/sonata-project/SonataPageBundle/blob/4.x/src/Block/BlockContextManager.php#L19 because the extra settings are not configured https://github.com/sonata-project/SonataBlockBundle/blob/375b168da31545bf3c386fd25a4b483411ac97c5/src/Block/BlockContextManager.php#L163

Is there a way to avoid removing the final keyword from the BlockBundle BlockManager ? cc @jordisala1991

jordisala1991 commented 2 years ago

Saw the same error and tried to fix, but didn't found a solution without touching BlockBundle. I only tried for half an hour, so I might be wrong.

VincentLanglet commented 2 years ago

Saw the same error and tried to fix, but didn't found a solution without touching BlockBundle.

Seems ok to me to touch the BlockBundle, but I would have prefer to avoid removing the final keyword.

FormType has things like a getParent() method, I dunno if same could be done here. We could also provide an abstract class with everything implemented except the configureSettings method ; but seems like some settings need to be configured for every BlockManager, like template. So there is maybe something like configureDefaultSettings and configureExtraSettings... Didn't find a great pattern so far.

eerison commented 2 years ago

Saw the same error and tried to fix, but didn't found a solution without touching BlockBundle. I only tried for half an hour, so I might be wrong.

I was checking with @Amin-Hosseini this issue related with BlockManager, and I guess it's possible make this work without remove the final class, Because if I got correct we are more or less decorating this BlockContextManager.php#L16

@Amin-Hosseini please share where what have you find ATM!

Amin-Hosseini commented 2 years ago

I've checked #1483 changes and as we don't have OptionsResolver in src/Block/BlockContextManager.php anymore, error happens on $optionsResolver->resolve($settings); -> BlockBundle : BlockContextManager.php#L289

I tried to update get function on BlockContextManager to add (merge) $settings to $block but I guess we can fix this issue with add $optionsResolver->setDefaults($settings); to BlockBundle : BlockContextManager.php#L285

I can create a PR, if you think it's the good solution :-)

cc @jordisala1991

eerison commented 2 years ago

I've checked #1483 changes and as we don't have OptionsResolver in src/Block/BlockContextManager.php anymore, error happens on $optionsResolver->resolve($settings); -> BlockBundle : BlockContextManager.php#L289

I tried to update get function on BlockContextManager to add (merge) $settings to $block but I guess we can fix this issue with add $optionsResolver->setDefaults($settings); to BlockBundle : BlockContextManager.php#L285

I can create a PR, if you think it's the good solution :-)

cc @jordisala1991

VincentLanglet commented 2 years ago

I tried to update get function on BlockContextManager to add (merge) $settings to $block but I guess we can fix this issue with add $optionsResolver->setDefaults($settings); to BlockBundle : BlockContextManager.php#L285

I can create a PR, if you think it's the good solution :-)

I might misunderstand the solution but the issue I see is that we cannot validate the values/type of the extra settings ; it would be so nice to be able to configure extra settings in the PageBundle BlockContextManager. That's why I had in mind to provide an abstract class with extensions point.

eerison commented 2 years ago

I tried to update get function on BlockContextManager to add (merge) $settings to $block but I guess we can fix this issue with add $optionsResolver->setDefaults($settings); to BlockBundle : BlockContextManager.php#L285 I can create a PR, if you think it's the good solution :-)

I might misunderstand the solution but the issue I see is that we cannot validate the values/type of the extra settings ; it would be so nice to be able to configure extra settings in the PageBundle BlockContextManager. That's why I had in mind to provide an abstract class with extensions point.

Well should be good we think in some solution using interfaces, usually those abstract class going to increase 😞

VincentLanglet commented 2 years ago

when I'm running composer update -W, I'm facing this issue Compile Error: Type of App\Entity\SonataPageBlock::$page must be ?Sonata\Pa !! geBundle\Model\PageInterface (as in class Sonata\PageBundle\Model\Block) at In SonataPageBlock.php line 16:

It's an issue with your code IMHO @eerison

eerison commented 2 years ago

when I'm running composer update -W, I'm facing this issue Compile Error: Type of App\Entity\SonataPageBlock::$page must be ?Sonata\Pa !! geBundle\Model\PageInterface (as in class Sonata\PageBundle\Model\Block) at In SonataPageBlock.php line 16:

It's an issue with your code IMHO @eerison

Really? I don't remember to change something inf Block::page

VincentLanglet commented 2 years ago

Really? I don't remember to change something inf Block::page

Since we're adding typehint, you'll need to add some too. Composer is asking you to change $page to ?PageInterface $page in your entity

eerison commented 2 years ago

when I'm running composer update -W, I'm facing this issue Compile Error: Type of App\Entity\SonataPageBlock::$page must be ?Sonata\Pa !! geBundle\Model\PageInterface (as in class Sonata\PageBundle\Model\Block) at In SonataPageBlock.php line 16:

It's an issue with your code IMHO @eerison

Ohhh do you mean the code from my project?

eerison commented 2 years ago

Really? I don't remember to change something inf Block::page

Since we're adding typehint, you'll need to add some too. Composer is asking you to change $page to ?PageInterface $page in your entity

But do you mean the code from sonata page bundle or from my project?

Note: I don't have any custom class extending from sonata bundles

eerison commented 2 years ago

Really? I don't remember to change something inf Block::page

Since we're adding typehint, you'll need to add some too. Composer is asking you to change $page to ?PageInterface $page in your entity

Ohh ok I guess I got it, I'll check that ;)

jordisala1991 commented 2 years ago

It is strange that you have declared page property on your entity, Can you show that piece of code?

eerison commented 2 years ago

It is strange that you have declared page property on your entity, Can you show that piece of code?

I'm not in the computer atm, but my entities were generated in 3.x code, and I'm switching between 3.x and 4.x branch

VincentLanglet commented 2 years ago

Can you also try https://github.com/sonata-project/SonataPageBundle/pull/1524 @eerison ? Or maybe explaining why we need a custom BlockContextManager.

I found no occurence of the page_id or manager keys.

eerison commented 2 years ago

@VincentLanglet I remember that I found a condition from this manager, if it's sanpshot Proxy return snapshot if not return page

eerison commented 2 years ago

Hey @jordisala1991

as I can see the slugify_service: sonata.page.slugify.cocur option will be deprecated for 3.x, But since it'll be deprecated, is there any way the 3.x code work without it? because I still need to keep this configuration there, other wise it raise an exception!

eerison commented 2 years ago

It is strange that you have declared page property on your entity, Can you show that piece of code?

Hey @jordisala1991 and @VincentLanglet this error was definetly related with my code, in 3.x it was generated like this

//src/Entity/SonataPageBlock.php

     * @var SonataPagePage
     */
    protected $page;

and when I changed to 4.x, the IDE was saying this

Screenshot 2022-08-08 at 11 37 55

But after change to

protected ?PageInterface $page = null;

it works 🥳 !

and we were just reading wrong, it wasn't passing block in page, it says to define "as in class Sonata\PageBundle\Model\Block"

Compile Error: Type of App\Entity\SonataPageBlock::$page must be ?Sonata\PageBundle\Model\PageInterface (as in class Sonata\PageBundle\Model\Block) 

But question, should we add some notes in UPGRADE file?

jordisala1991 commented 2 years ago

You should not need to declare that property.

For the upgrade notes, we have or will have one that mentions typehints and return types on all the project.

But again, this specific error is because you have a property that you dont need to declare IMO.

eerison commented 2 years ago

You should not need to declare that property.

For the upgrade notes, we have or will have one that mentions typehints and return types on all the project.

But again, this specific error is because you have a property that you dont need to declare IMO.

this property was generate from 3.x branch when I installed the project 👀

eerison commented 2 years ago

it is my class/entity

<?php

declare(strict_types=1);

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as Serializer;
use Sonata\PageBundle\Entity\BaseBlock;
use Sonata\PageBundle\Model\PageInterface;

/**
 * @ORM\Entity
 * @ORM\Table(name="page__block")
 * @ORM\HasLifecycleCallbacks
 */
class SonataPageBlock extends BaseBlock
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     * // Serializer\Groups(groups={"sonata_api_read","sonata_api_write","sonata_search"})
     *
     * @var int
     */
    protected $id;

    /**
     * @ORM\OneToMany(
     *     targetEntity="App\Entity\SonataPageBlock",
     *     mappedBy="parent", cascade={"remove", "persist"}, orphanRemoval=true
     * )
     * @ORM\OrderBy({"position"="ASC"})
     *
     * @var SonataPageBlock[]
     */
    protected $children;

    /**
     * @ORM\ManyToOne(
     *     targetEntity="App\Entity\SonataPageBlock",
     *     inversedBy="children"
     * )
     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE")
     *
     * @var SonataPageBlock
     */
    protected $parent;

    /**
     * @ORM\ManyToOne(
     *     targetEntity="App\Entity\SonataPagePage",
     *     inversedBy="blocks", cascade={"persist"}
     * )
     * @ORM\JoinColumn(name="page_id", referencedColumnName="id", onDelete="CASCADE")
     */
    protected ?PageInterface $page = null;

    public function getId()
    {
        return $this->id;
    }

    /**
     * @ORM\PrePersist
     */
    public function prePersist(): void
    {
        parent::prePersist();
    }

    /**
     * @ORM\PreUpdate
     */
    public function preUpdate(): void
    {
        parent::preUpdate();
    }
}

then I guess any of those methods should be in my code, don't you?

haivala commented 2 years ago

At least I don't have those. Only the getId.

eerison commented 2 years ago

yeah that's true I guess I got this from other project, I checked in the docs and it says to put only $id

https://docs.sonata-project.org/projects/SonataPageBundle/en/3.x/reference/installation/#doctrine-orm-configuration

my bad!

eerison commented 2 years ago

just to inform that I found a new issue in compose page, I added it in the description

Screenshot 2022-08-08 at 18 21 37
jordisala1991 commented 2 years ago

I will work in the sonata_pool issue. I know how to fix it.

jordisala1991 commented 2 years ago

Hey @jordisala1991

as I can see the slugify_service: sonata.page.slugify.cocur option will be deprecated for 3.x, But since it'll be deprecated, is there any way the 3.x code work without it? because I still need to keep this configuration there, other wise it raise an exception!

Afaik, the deprecation should only trigger if you have customized the slugger service, if you leave the default value it should be fine.

jordisala1991 commented 2 years ago

This one should fix the sonata_pool issue: https://github.com/sonata-project/SonataPageBundle/pull/1533

eerison commented 2 years ago

I tried to remove a block list from my contact page and I got this error

Screenshot 2022-08-10 at 09 24 27

logs error:

Uncaught PHP Exception Sonata\AdminBundle\Exception\ModelManagerException: "Failed to delete object: App\Entity\SonataPageBlock" at /app/vendor/sonata-project/doctrine-orm-admin-bundle/src/Model/ModelManager.php line 353
Trace error

``` Twig\Error\RuntimeError: An exception has been thrown during the rendering of a template ("The block service `sonata.seo.block.email.share_button` does not exist"). at vendor/sonata-project/page-bundle/src/Resources/views/Block/block_container.html.twig:15 at Twig\Template->displayBlock('block_child_render', array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin), '_parent' => array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), '_seq' => array(object(SonataPageBlock), object(SonataPageBlock)), 'loop' => array('parent' => array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), 'index0' => 0, 'index' => 1, 'first' => true, 'revindex0' => 1, 'revindex' => 2, 'length' => 2, 'last' => false), 'child' => object(SonataPageBlock), '_key' => 0), array('block' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block'), 'block_class' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_class'), 'block_role' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_role'), 'block_child_render' => array(object(__TwigTemplate_11a6df20747b83c76c2dea98116e266c), 'block_block_child_render'))) (var/cache/dev/twig/08/08bb010280c36b09d0fde12de06a12bc.php:139) at __TwigTemplate_38562a293a1384ab61beaf1b374e52aa->block_block(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin), '_parent' => array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), '_seq' => array(object(SonataPageBlock), object(SonataPageBlock)), 'loop' => array('parent' => array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), 'index0' => 0, 'index' => 1, 'first' => true, 'revindex0' => 1, 'revindex' => 2, 'length' => 2, 'last' => false), 'child' => object(SonataPageBlock), '_key' => 0), array('block' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block'), 'block_class' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_class'), 'block_role' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_role'), 'block_child_render' => array(object(__TwigTemplate_11a6df20747b83c76c2dea98116e266c), 'block_block_child_render'))) (vendor/twig/twig/src/Template.php:171) at Twig\Template->displayBlock('block', array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('block' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block'), 'block_class' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_class'), 'block_role' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_role'), 'block_child_render' => array(object(__TwigTemplate_11a6df20747b83c76c2dea98116e266c), 'block_block_child_render'))) (var/cache/dev/twig/4e/4e025cd33edfd0aaaa9f955d9e29f6c1.php:66) at __TwigTemplate_e3822c6c701c5587526986b4b54fedd0->doDisplay(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('block' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block'), 'block_class' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_class'), 'block_role' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_role'), 'block_child_render' => array(object(__TwigTemplate_11a6df20747b83c76c2dea98116e266c), 'block_block_child_render'))) (vendor/twig/twig/src/Template.php:394) at Twig\Template->displayWithErrorHandling(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('block' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block'), 'block_class' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_class'), 'block_role' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_role'), 'block_child_render' => array(object(__TwigTemplate_11a6df20747b83c76c2dea98116e266c), 'block_block_child_render'))) (vendor/twig/twig/src/Template.php:367) at Twig\Template->display(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('block_class' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_class'), 'block_role' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_role'), 'block' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block'), 'block_child_render' => array(object(__TwigTemplate_11a6df20747b83c76c2dea98116e266c), 'block_block_child_render'))) (var/cache/dev/twig/08/08bb010280c36b09d0fde12de06a12bc.php:50) at __TwigTemplate_38562a293a1384ab61beaf1b374e52aa->doDisplay(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('block_class' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_class'), 'block_role' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_role'), 'block' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block'), 'block_child_render' => array(object(__TwigTemplate_11a6df20747b83c76c2dea98116e266c), 'block_block_child_render'))) (vendor/twig/twig/src/Template.php:394) at Twig\Template->displayWithErrorHandling(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('block_class' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_class'), 'block_role' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block_role'), 'block' => array(object(__TwigTemplate_38562a293a1384ab61beaf1b374e52aa), 'block_block'), 'block_child_render' => array(object(__TwigTemplate_11a6df20747b83c76c2dea98116e266c), 'block_block_child_render'))) (vendor/twig/twig/src/Template.php:367) at Twig\Template->display(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('block_child_render' => array(object(__TwigTemplate_11a6df20747b83c76c2dea98116e266c), 'block_block_child_render'))) (var/cache/dev/twig/85/85d2757ed780c29de793e4c3f3de6082.php:48) at __TwigTemplate_11a6df20747b83c76c2dea98116e266c->doDisplay(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('block_child_render' => array(object(__TwigTemplate_11a6df20747b83c76c2dea98116e266c), 'block_block_child_render'))) (vendor/twig/twig/src/Template.php:394) at Twig\Template->displayWithErrorHandling(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('block_child_render' => array(object(__TwigTemplate_11a6df20747b83c76c2dea98116e266c), 'block_block_child_render'))) (vendor/twig/twig/src/Template.php:367) at Twig\Template->display(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'))) (vendor/twig/twig/src/Template.php:379) at Twig\Template->render(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top')), array()) (vendor/twig/twig/src/TemplateWrapper.php:40) at Twig\TemplateWrapper->render(array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'))) (vendor/twig/twig/src/Environment.php:277) at Twig\Environment->render('@SonataPage/Block/block_container.html.twig', array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top'))) (vendor/sonata-project/block-bundle/src/Block/Service/AbstractBlockService.php:43) at Sonata\BlockBundle\Block\Service\AbstractBlockService->renderResponse('@SonataPage/Block/block_container.html.twig', array('block' => object(SonataPageBlock), 'decorator' => array('pre' => '', 'post' => ''), 'settings' => array('layout' => '{{ CONTENT }}', 'class' => '', 'use_cache' => true, 'extra_cache_keys' => array(), 'attr' => array(), 'template' => '@SonataPage/Block/block_container.html.twig', 'ttl' => 86400, 'code' => 'content_top')), object(Response)) (vendor/sonata-project/block-bundle/src/Block/Service/ContainerBlockService.php:74) at Sonata\BlockBundle\Block\Service\ContainerBlockService->execute(object(BlockContext), object(Response)) (vendor/sonata-project/page-bundle/src/Block/ContainerBlockService.php:42) at Sonata\PageBundle\Block\ContainerBlockService->execute(object(BlockContext), object(Response)) (vendor/sonata-project/block-bundle/src/Block/BlockRenderer.php:70) at Sonata\BlockBundle\Block\BlockRenderer->render(object(BlockContext)) (vendor/sonata-project/block-bundle/src/Templating/Helper/BlockHelper.php:450) at Sonata\BlockBundle\Templating\Helper\BlockHelper->render(object(SonataPageBlock), array()) (vendor/sonata-project/page-bundle/src/Twig/Extension/PageExtension.php:194) at Sonata\PageBundle\Twig\Extension\PageExtension->renderBlock(object(SonataPageBlock), array()) (vendor/sonata-project/page-bundle/src/Twig/Extension/PageExtension.php:178) at Sonata\PageBundle\Twig\Extension\PageExtension->renderContainer('content_top', object(SnapshotPageProxy)) (var/cache/dev/twig/c3/c311e20692341d677e8fb48bc2baeade.php:100) at __TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab->block_sonata_page_container(array('error_codes' => array('_page_internal_error_not_found', '_page_internal_error_fatal'), 'page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('sonata_page_html_tag' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_html_tag'), 'sonata_page_head' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_head'), 'sonata_page_stylesheets' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_stylesheets'), 'page_stylesheets' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_stylesheets'), 'sonata_page_javascripts' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_javascripts'), 'page_javascripts' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_javascripts'), 'sonata_page_body_tag' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_body_tag'), 'sonata_page_top_bar' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_top_bar'), 'page_top_bar' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_top_bar'), 'sonata_page_container' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_container'), 'page_container' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_container'), 'sonata_page_asset_footer' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_asset_footer'), 'page_asset_footer' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_asset_footer'), 'sonata_page_breadcrumb' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_breadcrumb'), 'page_content' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_page_content'))) (vendor/twig/twig/src/Template.php:171) at Twig\Template->displayBlock('sonata_page_container', array('error_codes' => array('_page_internal_error_not_found', '_page_internal_error_fatal'), 'page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('sonata_page_html_tag' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_html_tag'), 'sonata_page_head' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_head'), 'sonata_page_stylesheets' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_stylesheets'), 'page_stylesheets' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_stylesheets'), 'sonata_page_javascripts' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_javascripts'), 'page_javascripts' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_javascripts'), 'sonata_page_body_tag' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_body_tag'), 'sonata_page_top_bar' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_top_bar'), 'page_top_bar' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_top_bar'), 'sonata_page_container' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_container'), 'page_container' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_container'), 'sonata_page_asset_footer' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_asset_footer'), 'page_asset_footer' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_asset_footer'), 'sonata_page_breadcrumb' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_breadcrumb'), 'page_content' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_page_content'))) (var/cache/dev/twig/fe/fed722bf9eb616ca2f8c8b902cb8282b.php:74) at __TwigTemplate_f962c62dd8e0e8e03c89780fc740b668->doDisplay(array('error_codes' => array('_page_internal_error_not_found', '_page_internal_error_fatal'), 'page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('sonata_page_html_tag' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_html_tag'), 'sonata_page_head' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_head'), 'sonata_page_stylesheets' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_stylesheets'), 'page_stylesheets' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_stylesheets'), 'sonata_page_javascripts' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_javascripts'), 'page_javascripts' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_javascripts'), 'sonata_page_body_tag' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_body_tag'), 'sonata_page_top_bar' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_top_bar'), 'page_top_bar' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_top_bar'), 'sonata_page_container' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_container'), 'page_container' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_container'), 'sonata_page_asset_footer' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_asset_footer'), 'page_asset_footer' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_asset_footer'), 'sonata_page_breadcrumb' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_breadcrumb'), 'page_content' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_page_content'))) (vendor/twig/twig/src/Template.php:394) at Twig\Template->displayWithErrorHandling(array('error_codes' => array('_page_internal_error_not_found', '_page_internal_error_fatal'), 'page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('sonata_page_html_tag' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_html_tag'), 'sonata_page_head' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_head'), 'sonata_page_stylesheets' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_stylesheets'), 'page_stylesheets' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_stylesheets'), 'sonata_page_javascripts' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_javascripts'), 'page_javascripts' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_javascripts'), 'sonata_page_body_tag' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_body_tag'), 'sonata_page_top_bar' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_top_bar'), 'page_top_bar' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_top_bar'), 'sonata_page_container' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_container'), 'page_container' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_container'), 'sonata_page_asset_footer' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_sonata_page_asset_footer'), 'page_asset_footer' => array(object(__TwigTemplate_f962c62dd8e0e8e03c89780fc740b668), 'block_page_asset_footer'), 'sonata_page_breadcrumb' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_breadcrumb'), 'page_content' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_page_content'))) (vendor/twig/twig/src/Template.php:367) at Twig\Template->display(array('error_codes' => array('_page_internal_error_not_found', '_page_internal_error_fatal'), 'page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('sonata_page_container' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_container'), 'sonata_page_breadcrumb' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_breadcrumb'), 'page_content' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_page_content'))) (var/cache/dev/twig/c3/c311e20692341d677e8fb48bc2baeade.php:50) at __TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab->doDisplay(array('error_codes' => array('_page_internal_error_not_found', '_page_internal_error_fatal'), 'page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('sonata_page_container' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_container'), 'sonata_page_breadcrumb' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_breadcrumb'), 'page_content' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_page_content'))) (vendor/twig/twig/src/Template.php:394) at Twig\Template->displayWithErrorHandling(array('error_codes' => array('_page_internal_error_not_found', '_page_internal_error_fatal'), 'page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite), 'wrap_fields_with_addons' => true, 'app' => object(AppVariable), 'sonata_block' => object(GlobalVariables), 'sonata_config' => object(SonataConfiguration), 'sonata_page' => object(GlobalVariables), 'sonata_page_admin' => object(PageAdmin)), array('sonata_page_container' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_container'), 'sonata_page_breadcrumb' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_sonata_page_breadcrumb'), 'page_content' => array(object(__TwigTemplate_5fd018dec64b8c1c2a6ae5bb33b025ab), 'block_page_content'))) (vendor/twig/twig/src/Template.php:367) at Twig\Template->display(array('error_codes' => array('_page_internal_error_not_found', '_page_internal_error_fatal'), 'page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite))) (vendor/twig/twig/src/Template.php:379) at Twig\Template->render(array('error_codes' => array('_page_internal_error_not_found', '_page_internal_error_fatal'), 'page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite)), array()) (vendor/twig/twig/src/TemplateWrapper.php:40) at Twig\TemplateWrapper->render(array('error_codes' => array('_page_internal_error_not_found', '_page_internal_error_fatal'), 'page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite))) (vendor/twig/twig/src/Environment.php:277) at Twig\Environment->render('@SonataPage/layout.html.twig', array('error_codes' => array('_page_internal_error_not_found', '_page_internal_error_fatal'), 'page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite))) (vendor/sonata-project/page-bundle/src/Page/TemplateManager.php:99) at Sonata\PageBundle\Page\TemplateManager->renderResponse('default', array('page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite)), object(Response)) (vendor/sonata-project/page-bundle/src/Page/Service/DefaultPageService.php:56) at Sonata\PageBundle\Page\Service\DefaultPageService->execute(object(SnapshotPageProxy), object(Request), array('page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite)), object(Response)) (vendor/sonata-project/page-bundle/src/Page/PageServiceManager.php:83) at Sonata\PageBundle\Page\PageServiceManager->execute(object(SnapshotPageProxy), object(Request), array('page' => object(SnapshotPageProxy), 'site' => object(SonataPageSite)), object(Response)) (vendor/symfony/http-kernel/HttpKernel.php:158) at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1) (vendor/symfony/http-kernel/HttpKernel.php:80) at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true) (vendor/symfony/http-kernel/Kernel.php:201) at Symfony\Component\HttpKernel\Kernel->handle(object(Request)) (public/index.php:29) ```

Note 1: It was a block created in 3.x branch

VincentLanglet commented 2 years ago

The stack trace might help ; we would need the original exception and not the ModelManager one

eerison commented 2 years ago

@Amin-Hosseini I can see the is missing a snapshot translation for this page: http://localhost:8001/admin/app/sonatapagepage/652/sonatapagesnapshot/1486/edit

It's the label that is missing: form.group_snapshot

eerison commented 2 years ago

The stack trace might help ; we would need the original exception and not the ModelManager one

Done, the trace error is there :)

eerison commented 2 years ago

I executed the bin/console sonata:page:cleanup-snapshots and I got this error

In QueryException.php line 32:

  [Syntax Error] line 0, col 74: Error: Expected Literal, got ')'  

In QueryException.php line 21:

  DELETE App\Entity\SonataPageSnapshot s WHERE s.page = 653 AND s.id NOT IN()  

any idea @Hanmac ?

eerison commented 2 years ago

Need to fix the bootstrap layout for page blocks

Screenshot 2022-08-10 at 09 55 03 Screenshot 2022-08-10 at 10 08 01
eerison commented 2 years ago

After this PR pass: #1524, I would say 4.x will be able to test and see if it's possible to find more issues!

VincentLanglet commented 2 years ago

After this PR pass: #1524, I would say 4.x will be able to test and see if it's possible to find more issues!

You can already play with my branch if you want to look for more issue ; the merge is not needed