mirror of
https://github.com/symfony/recipes-contrib.git
synced 2026-09-12 07:36:34 +03:00
Add recipe for sonata-project/page-bundle
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
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.core.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'
|
||||
|
||||
# page_defaults:
|
||||
# homepage: # disable decoration for homepage, key - is a page route
|
||||
# decorate: false
|
||||
# enabled: true
|
||||
|
||||
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'
|
||||
@@ -0,0 +1,11 @@
|
||||
#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: /
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"bundles": {
|
||||
"Sonata\\PageBundle\\SonataPageBundle": ["all"]
|
||||
},
|
||||
"copy-from-recipe": {
|
||||
"config/": "%CONFIG_DIR%/",
|
||||
"src/": "%SRC_DIR%/"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
<?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();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user