Symfony Simple CMS Bundle

Installs: 2 511

Dependents: 0

Stars: 42

Watchers: 22

Forks: 12

Language: PHP

5.2.1 2014-12-23 15:37 UTC


Setup the bundle

  1. Fetch the source code
  2. Add the namespace to your autoloader
  3. Add the bundle to your AppKernel class
  4. Add routing
  5. Generate Schema
  6. Permissions
  7. Enjoy

How to use simple CMS

Just add a tag to your twig file to allow user to edit a specific entity type (by default, text & image is provided)

Some Examples

{# add a text with key 'mycustomtextidentifier'  #}
{{ 'mycustomtextidentifier'|scms('text') }}

{# add a image with key 'mycustomimageidentifier'  #}
{{ scms('mycustomimageidentifier','image') }}

{# add a collections of texts with key 'mycustomtextidentifier'  #}
{{ 'mycustomtextidentifier'|scms_collection('text') }}

{# add a collections of images with key 'mycustomimageidentifier'  #}
{{ scms_collection('mycustomimageidentifier','image') }}

Advanced examples

Single image with my class and inline editorstyle (instead of block) and a specific locale (default is the current locale)

{{ scms('mycustomidentifier','image',{'inline':true,'attr':{'class':'mycssclass'} },'de_CH'  ) }}

Flexible amount of wysiwyg text elements

{{ scms_collection('mycustomidentifier','text',{'html':true}) }}

Install & setup the bundle

  1. Fetch the source code

    Add IbrowsSimpleCMSBundle in your composer.json:

        "require": {
            "ibrows/simplecms-bundle": "*"

    Now tell composer to download the bundle by running the command:

    $ php composer.phar update ibrows/simplecms-bundle

    Composer will install the bundle to your project's ibrows/simplecms-bundle directory.

  2. Add the bundle to your AppKernel class

    // app/AppKernerl.php
    public function registerBundles()
        $bundles = array(
            // ...
            new Ibrows\SimpleCMSBundle\IbrowsSimpleCMSBundle(),
            // ...
        // ...
  3. Add routing

    // app/config/routing.yml
        resource: "@IbrowsSimpleCMSBundle/Controller/"
        type:     annotation
        prefix:   /scms  
  4. Generate Schema

    php app/console doctrine:schema:update  --force
  5. Permissions

    Get permissions for FileUpload, default folder is web-dir uploads/documents

Minimal configuration

This bundle requires Nothing !

Additional configuration

Edit default config

# app/config/conf.yml

      include_js_libs: true
      upload_dir: 'uploads/documents'

Add security per type

# app/config/conf.yml

    # defaults
        text: { class: Ibrows\SimpleCMSBundle\Entity\TextContent , type: Ibrows\SimpleCMSBundle\Form\TextContentType, security:{general: ROLE_ADMIN} }
        image: { class: Ibrows\SimpleCMSBundle\Entity\ImageContent, type: Ibrows\SimpleCMSBundle\Form\FileContentType, security:{general: ROLE_ADMIN, show: ROLE_SUPER_ADMIN, create: ROLE_SUPER_ADMIN , edit: ROLE_SUPER_ADMIN , delete: ROLE_SUPER_ADMIN  } }

Add Tiny4 with Events Example

    jQuery(document.body).on('ibrows.simplecms.modal.open', function(event,element, context, replacmentid){
    jQuery(document.body).on('ibrows.simplecms.modal.close', function(event,element, context, replacmentid){
        tinyMCE.remove('.simplecms-editform textarea');

Edit TinyMCE3 Options

# app/config/conf.yml

        theme: 'advanced'
        theme_advanced_buttons1: 'bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect'
    # other configs...

Add types

Add / Edit types of Content:

# app/config/conf.yml

        # defaults
        text: { class: Ibrows\SimpleCMSBundle\Entity\TextContent , type: Ibrows\SimpleCMSBundle\Form\TextContentType }
        image: { class: Ibrows\SimpleCMSBundle\Entity\ImageContent, type: Ibrows\SimpleCMSBundle\Form\FileContentType}
        # custom
        mytext: { class: Ibrows\SimpleCMSBundle\Entity\TextContent , type: Ibrows\SimpleCMSBundle\Form\TextContentType , repository: Ibrows\SimpleCMSBundle\Repository\TextContent, label:first}
        mycustomentity: { class: Ibrows\XXXBundle\Entity\YYYContent , type: Ibrows\SimpleCMSBundle\Form\YYYContentType , repository: Ibrows\SimpleCMSBundle\Repository\Content, label:myone}

Your YYYContent Entity have to implement Ibrows\SimpleCMSBundle\Entity\ContentInterface or extend Ibrows\SimpleCMSBundle\Entity\Content or a Child of it. It's also a good idea to extend Ibrows\SimpleCMSBundle\ContentType in your FormType.






  • create the ODM version


Developed at iBROWS AG Zurich: Marc Steiner Dominik Zogg Olivier Kofler

Twitter: @iBRWOSWEB Web: www.ibrows.ch