Download the PHP package zenstruck/content-bundle without Composer
On this page you can find all versions of the php package zenstruck/content-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download zenstruck/content-bundle
More information about zenstruck/content-bundle
Files in zenstruck/content-bundle
Package content-bundle
Short Description Simple CMS for Symfony2 using Doctrine2 Class Table Inheritance
License MIT
Homepage http://zenstruck.com/project/ZenstruckContentBundle
Informations about the package content-bundle
Information
This Bundle allows for various content-types using Doctrine2's Inheritance
(see http://www.doctrine-project.org/docs/orm/2.1/en/reference/inheritance-mapping.html
for more information). It allows for all your content-types to inherit from a single Node
.
The problem with Doctrine2's implementation is it requires
you set all your inherited Entities in the top most Entity. With this Bundle
they are setup in your config.yml
.
Configuration
-
Create a
Node
class: -
Create one or more content-type Entities (extending from your
Node
entity):Note: They can also extend eachother (
BlogPost->Page->Node
) -
Add your node class and any new content-types to your
config.yml
:Note: in the above example the machine name of class
BlogPost
isblog_post
. This naming convention is important. -
(optional) To use the controller that this bundle provides activate it in your
config.yml
: - (optional) If you used the controller in step 4, add the routing:
Reference
Manager
There is a manager class that is available from the service container via the id
zenstruck_content.manager
.
Breadcrumbs
The manager contains a function called getAncestors(Node $node)
. This returns
an array of Ancestor nodes based on the path of the current Node
given.
For instance, if you pass a node with path foo/bar/baz
it will return an array of nodes
with path's foo
and foo/bar
if they exist and in that order.
Usage
Inheritance Type
By default Doctrine2's Class Table Inheritance is used. This means each content-type
extending from Node
is it's own table linking back to the base node
table. There
is also the option of using Class Table Inheritance. All content types will be
stored in the same table.
You can enable this in your config.yml
:
Template
To provide your own templates set the default_template
option in your config.yml
:
Note: the default template name must be node
.
InheritedUniqueEntity constraint
This bundles comes with a custom UniqueEntity
validation constraint. The default Doctrine
one has problems with inheritance. It only checks the values of entities within it's current
scope and children. For instance if you have this structure: BlogPost->Page->Node
and place the default Doctrine UniqueEntity
constraint on a field in Page
. Saving a
BlogPost
with a field that is the same as one in Page
will not cause the constraint
to become invalid.
The InheritedUniqueEntity
constraint packaged with this
bundle does.
Usage
The following demonstrates adding a UniqueEntity constraint on the body
field of the Page
entity. All classes that inherit from Page
will have this constraint in the Page
scope.
Sitemap Generation
This bundle comes with a Sitemap Generator for use with DpnXmlSitemapBundle
Usage
- Install and configure DpnXmlSitemapBundle
-
Enable sitemap generator in your
config.yml
: - By default, the generator uses the
findAll
method on theNode
's entity manager. To use a different method change it in yourconfig.yml
:
The sitemap should be available at /sitemap.xml
.