sonata-project/page-bundle
Generated files
config/packages/sonata_page.yaml
sonata_block:
context_manager: sonata.page.block.context_manager
default_contexts: [sonata_page_bundle]
sonata_admin:
assets:
extra_javascripts:
- bundles/sonatapage/sonata-page.back.min.js
extra_stylesheets:
- bundles/sonatapage/sonata-page.back.min.css
sonata_page:
slugify_service: sonata.page.slugify.cocur
multisite: host
use_streamed_response: false
router_auto_register:
enabled: true
priority: 150
ignore_route_patterns:
- ^(.*)admin(.*) # ignore admin route, ie route containing 'admin'
- ^_(.*) # ignore symfony routes
ignore_routes:
- sonata_page_cache_esi
- sonata_page_cache_ssi
- sonata_page_js_sync_cache
- sonata_page_js_async_cache
- sonata_cache_esi
- sonata_cache_ssi
- sonata_cache_js_async
- sonata_cache_js_sync
- sonata_cache_apc
ignore_uri_patterns:
- ^/admin\/ # ignore admin route, ie route containing 'admin'
default_template: default
templates:
default:
path: '@SonataPage/layout.html.twig'
name: 'default'
containers:
header:
name: Header
content_top:
name: Top content
content:
name: Main content
content_bottom:
name: Bottom content
footer:
name: Footer
matrix:
layout: |
HHHHHHHH
HHHHHHHH
TTTTTTTT
TTTTTTTT
CCCCCCCC
CCCCCCCC
BBBBBBBB
BBBBBBBB
FFFFFFFF
FFFFFFFF
mapping:
H: header
T: content_top
C: content
B: content_bottom
F: footer
direct_publication: '%kernel.debug%'
catch_exceptions:
not_found: [404] # render 404 page with "not_found" key (name generated: _page_internal_error_{key})
fatal: [500] # so you can use the same page for different http errors or specify specific page for each error
class:
page: 'App\Entity\SonataPagePage'
snapshot: 'App\Entity\SonataPageSnapshot'
block: 'App\Entity\SonataPageBlock'
site: 'App\Entity\SonataPageSite'
config/routes/sonata_page.yaml
#sonata_page_api:
# resource: '@SonataPageBundle/Resources/config/routing/api.xml'
# prefix: /
#sonata_page_cache:
# resource: '@SonataPageBundle/Resources/config/routing/cache.xml'
# prefix: /
sonata_page_exceptions:
resource: '@SonataPageBundle/Resources/config/routing/exceptions.xml'
prefix: /
src/Entity/SonataPageBlock.php
<?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;
/**
* @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")
*
* @var SonataPagePage
*/
protected $page;
public function getId()
{
return $this->id;
}
/**
* @ORM\PrePersist
*/
public function prePersist(): void
{
parent::prePersist();
}
/**
* @ORM\PreUpdate
*/
public function preUpdate(): void
{
parent::preUpdate();
}
}
src/Entity/SonataPagePage.php
<?php
declare(strict_types=1);
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as Serializer;
use Sonata\PageBundle\Entity\BasePage;
/**
* @ORM\Entity
* @ORM\Table(name="page__page")
* @ORM\HasLifecycleCallbacks
*/
class SonataPagePage extends BasePage
{
/**
* @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\SonataPagePage",
* mappedBy="parent", cascade={"persist"}, orphanRemoval=false
* )
* @ORM\OrderBy({"position"="ASC"})
*
* @var SonataPagePage[]
*/
protected $children;
/**
* @ORM\OneToMany(
* targetEntity="App\Entity\SonataPageBlock",
* mappedBy="page", cascade={"remove", "persist", "refresh", "merge", "detach"}, orphanRemoval=false
* )
* @ORM\OrderBy({"position"="ASC"})
*
* @var SonataPageBlock[]
*/
protected $blocks;
/**
* @ORM\ManyToOne(
* targetEntity="App\Entity\SonataPageSite",
* cascade={"persist"}
* )
* @ORM\JoinColumn(name="site_id", referencedColumnName="id", onDelete="CASCADE")
*
* @var SonataPageSite
*/
protected $site;
/**
* @ORM\ManyToOne(
* targetEntity="App\Entity\SonataPagePage",
* inversedBy="children", cascade={"persist"}
* )
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id", onDelete="CASCADE")
*
* @var SonataPagePage
*/
protected $parent;
/**
* @ORM\OneToMany(
* targetEntity="App\Entity\SonataPagePage",
* mappedBy="target", orphanRemoval=false
* )
*
* @var SonataPagePage[]
*/
protected $sources;
/**
* @ORM\ManyToOne(
* targetEntity="App\Entity\SonataPagePage",
* inversedBy="sources", cascade={"persist"}
* )
* @ORM\JoinColumn(name="target_id", referencedColumnName="id", onDelete="CASCADE")
*
* @var SonataPagePage
*/
protected $target;
public function getId()
{
return $this->id;
}
/**
* @ORM\PrePersist
*/
public function prePersist(): void
{
parent::prePersist();
}
/**
* @ORM\PreUpdate
*/
public function preUpdate(): void
{
parent::preUpdate();
}
}
src/Entity/SonataPageSite.php
<?php
declare(strict_types=1);
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as Serializer;
use Sonata\PageBundle\Entity\BaseSite;
/**
* @ORM\Entity
* @ORM\Table(name="page__site")
* @ORM\HasLifecycleCallbacks
*/
class SonataPageSite extends BaseSite
{
/**
* @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;
public function getId()
{
return $this->id;
}
/**
* @ORM\PrePersist
*/
public function prePersist(): void
{
parent::prePersist();
}
/**
* @ORM\PreUpdate
*/
public function preUpdate(): void
{
parent::preUpdate();
}
}
src/Entity/SonataPageSnapshot.php
<?php
declare(strict_types=1);
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as Serializer;
use Sonata\PageBundle\Entity\BaseSnapshot;
/**
* @ORM\Entity
* @ORM\Table(name="page__snapshot", indexes={
* @ORM\Index(
* name="idx_snapshot_dates_enabled", columns={"publication_date_start", "publication_date_end","enabled"
* })
* })
*/
class SonataPageSnapshot extends BaseSnapshot
{
/**
* @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\ManyToOne(
* targetEntity="App\Entity\SonataPageSite",
* cascade={"persist"}
* )
* @ORM\JoinColumn(name="site_id", referencedColumnName="id", onDelete="CASCADE")
*
* @var SonataPageSite
*/
protected $site;
/**
* @ORM\ManyToOne(
* targetEntity="App\Entity\SonataPagePage",
* cascade={"persist"}
* )
* @ORM\JoinColumn(name="page_id", referencedColumnName="id", onDelete="CASCADE")
*
* @var SonataPagePage
*/
protected $page;
public function getId()
{
return $this->id;
}
}