Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Cms Project Laravel Package

ardteam/cms-project

View on GitHub
Deep Wiki
Context7

Getting Started

Minimal Setup

  1. 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(),
    
  2. Configure parameters.yml.dist:

    universal_analytics: ~
    
  3. Update Config Files:

    • Add Twig globals, Doctrine types, and FOSUser config to config.yml.
    • Configure security roles, providers, and firewalls in security.yml.
    • Import FOSUser routes in routing.yml.
  4. Extend the Bundle:

    // AppBundle/AppBundle.php
    public function getParent() { return 'ATCmsBundle'; }
    
  5. Create a Controller:

    // src/AppBundle/Controller/DefaultController.php
    namespace AppBundle\Controller;
    use AT\CmsBundle\Controller\CoreController;
    
    class DefaultController extends CoreController {}
    
  6. Set Up Database:

    php app/console doctrine:database:create
    php app/console doctrine:schema:update --force
    
  7. Create a Super Admin:

    php app/console fos:user:create admin admin@example.com admin123 --super-admin
    

First Use Case

Deploy a basic CMS page with a form:

  • Extend CoreController to access CMS utilities.
  • Use Twig globals (google_analytics_ua, base_template) for consistent layouts.
  • Leverage FOSUser for authentication (e.g., fos_user_security_login route).

Implementation Patterns

Core Workflows

  1. Page Management:

    • Use CoreController to fetch CMS pages via ATCmsBundle's built-in methods (e.g., getPage()).
    • Example:
      public function showPageAction($slug) {
          $page = $this->get('at_cms.page_manager')->findOneBySlug($slug);
          return $this->render('ATCmsBundle:Page:show.html.twig', ['page' => $page]);
      }
      
  2. Form Handling:

    • Integrate with CKEditor (via egeloen/ckeditor-bundle) for rich-text content.
    • Example:
      {{ form_start(form) }}
          {{ form_widget(form.content) }} {# CKEditor field #}
      {{ form_end(form) }}
      
  3. Media Management:

    • Use ElFinder (via helios-ag/fm-elfinder-bundle) for file uploads.
    • Example:
      {% embed 'ATCmsBundle:Media:elfinder.html.twig' %}
      
  4. User Roles & Permissions:

    • Extend AT\UserBundle\Entity\User for custom fields.
    • Secure routes in security.yml:
      - { path: ^/admin/dashboard, role: ROLE_ADMIN }
      
  5. Twig Extensions:

    • Access CMS utilities in Twig:
      {{ at_cms.get_current_page().title }}
      

Integration Tips

  • Doctrine Extensions: Use stof/doctrine-extensions-bundle for behaviors like Sluggable or Timestampable.
  • Assetic: Bundle CSS/JS assets with symfony/assetic-bundle.
  • SwiftMailer: Send emails via symfony/swiftmailer-bundle (e.g., password resets).
  • Monolog: Log errors with symfony/monolog-bundle.

Gotchas and Tips

Pitfalls

  1. Bundle Dependencies:

    • ardteam/user-project and friendsofsymfony/user-bundle must be installed exactly as specified (e.g., @dev versions).
    • Mismatched versions may break authentication or user management.
  2. Database Schema:

    • Running doctrine:schema:update --force without backups can overwrite existing data.
    • Test migrations in a staging environment first.
  3. Twig Globals:

    • base_template must point to an existing Twig template (e.g., ATCmsBundle:Core:base.html.twig).
    • Missing templates cause runtime errors.
  4. ElFinder Configuration:

    • Ensure fm_elfinder is properly configured in config.yml:
      fm_elfinder:
          instances:
              default:
                  locale: %locale%
                  editor: ckeditor
      
  5. CKEditor Setup:

    • Configure CKEditor in config.yml:
      egeloen_ckeditor:
          default_config: default
          configs:
              default:
                  toolbar: full
      

Debugging Tips

  • Symfony Profiler: Enable in config_dev.yml to inspect Doctrine queries, Twig variables, and routes.
  • Log Errors: Check app/logs/dev.log for ATCmsBundle or ATUserBundle issues.
  • Clear Cache:
    php app/console cache:clear
    
    After config changes or bundle updates.

Extension Points

  1. Custom Controllers:

    • Override CoreController methods (e.g., getPage()) for project-specific logic.
  2. Twig Functions:

    • Extend Twig with custom filters/globals in AppBundle/Twig/AppExtension.php:
      public function getFunctions() {
          return [
              new \Twig_SimpleFunction('custom_cms_function', [$this, 'customFunction']),
          ];
      }
      
  3. Event Listeners:

    • Subscribe to 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 }
      
  4. Custom Entities:

    • Extend 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
      }
      
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
comsave/common
alecsammon/php-raml-parser
chrome-php/wrench
lendable/composer-license-checker
typhoon/reflection
mesilov/moneyphp-percentage
mike42/gfx-php
bookdown/themes
aura/view
aura/html
aura/cli
povils/phpmnd
nayjest/manipulator
omnipay/tests
psr-mock/http-message-implementation
psr-mock/http-factory-implementation
psr-mock/http-client-implementation
voku/email-check
voku/urlify
rtheunissen/guzzle-log-middleware