Installation:
composer require ardteam/cms-project:1.0.x@dev friendsofsymfony/user-bundle ardteam/user-project
Update AppKernel.php to register bundles:
new AT\CmsBundle\ATCmsBundle(),
new FOS\UserBundle\FOSUserBundle(),
new AT\UserBundle\ATUserBundle(),
Configure parameters.yml.dist:
universal_analytics: ~
Update Config Files:
config.yml.security.yml.routing.yml.Extend the Bundle:
// AppBundle/AppBundle.php
public function getParent() { return 'ATCmsBundle'; }
Create a Controller:
// src/AppBundle/Controller/DefaultController.php
namespace AppBundle\Controller;
use AT\CmsBundle\Controller\CoreController;
class DefaultController extends CoreController {}
Set Up Database:
php app/console doctrine:database:create
php app/console doctrine:schema:update --force
Create a Super Admin:
php app/console fos:user:create admin admin@example.com admin123 --super-admin
Deploy a basic CMS page with a form:
CoreController to access CMS utilities.google_analytics_ua, base_template) for consistent layouts.fos_user_security_login route).Page Management:
CoreController to fetch CMS pages via ATCmsBundle's built-in methods (e.g., getPage()).public function showPageAction($slug) {
$page = $this->get('at_cms.page_manager')->findOneBySlug($slug);
return $this->render('ATCmsBundle:Page:show.html.twig', ['page' => $page]);
}
Form Handling:
egeloen/ckeditor-bundle) for rich-text content.{{ form_start(form) }}
{{ form_widget(form.content) }} {# CKEditor field #}
{{ form_end(form) }}
Media Management:
helios-ag/fm-elfinder-bundle) for file uploads.{% embed 'ATCmsBundle:Media:elfinder.html.twig' %}
User Roles & Permissions:
AT\UserBundle\Entity\User for custom fields.security.yml:
- { path: ^/admin/dashboard, role: ROLE_ADMIN }
Twig Extensions:
{{ at_cms.get_current_page().title }}
stof/doctrine-extensions-bundle for behaviors like Sluggable or Timestampable.symfony/assetic-bundle.symfony/swiftmailer-bundle (e.g., password resets).symfony/monolog-bundle.Bundle Dependencies:
ardteam/user-project and friendsofsymfony/user-bundle must be installed exactly as specified (e.g., @dev versions).Database Schema:
doctrine:schema:update --force without backups can overwrite existing data.Twig Globals:
base_template must point to an existing Twig template (e.g., ATCmsBundle:Core:base.html.twig).ElFinder Configuration:
fm_elfinder is properly configured in config.yml:
fm_elfinder:
instances:
default:
locale: %locale%
editor: ckeditor
CKEditor Setup:
config.yml:
egeloen_ckeditor:
default_config: default
configs:
default:
toolbar: full
config_dev.yml to inspect Doctrine queries, Twig variables, and routes.app/logs/dev.log for ATCmsBundle or ATUserBundle issues.php app/console cache:clear
After config changes or bundle updates.Custom Controllers:
CoreController methods (e.g., getPage()) for project-specific logic.Twig Functions:
AppBundle/Twig/AppExtension.php:
public function getFunctions() {
return [
new \Twig_SimpleFunction('custom_cms_function', [$this, 'customFunction']),
];
}
Event Listeners:
ATCmsBundle events (e.g., at.cms.page.save) in services.yml:
services:
app.cms_listener:
class: AppBundle\EventListener\CmsListener
tags:
- { name: kernel.event_listener, event: at.cms.page.save, method: onPageSave }
Custom Entities:
AT\UserBundle\Entity\User or create new entities in ATCmsBundle:
// src/AppBundle/Entity/CustomPage.php
use AT\CmsBundle\Entity\Page as BasePage;
class CustomPage extends BasePage {
// Add custom fields/methods
}
How can I help you explore Laravel packages today?