Installation
composer require edemy/mainbundle:dev-master
Ensure your composer.json includes the package under require-dev if using dev-master.
Register the Bundle
Add to app/AppKernel.php:
new eDemy\MainBundle\eDemyMainBundle(),
Configure Routing
Add to app/routing.yml:
edemy_main:
resource: .
type: extra
(Note: This assumes a routing.yml file exists in eDemyMainBundle/Resources/config/. Verify the actual path.)
Basic User Setup
Configure app/config.yml:
fos_user:
db_driver: orm
user_class: eDemy\MainBundle\Entity\User
(Ensure the User entity exists in eDemy\MainBundle\Entity.)
Security Configuration
Update app/security.yml with the provided snippet, replacing existing security settings.
First Use Case Run migrations (if applicable) and test the default routes (e.g., login/logout via FOSUserBundle).
eDemyMainBundle/Resources/config/ for YAML/XML configs (e.g., routing.yml, services.yml).eDemy\MainBundle\Entity for base models (e.g., User).composer.json for required bundles (e.g., FOSUserBundle, KnpPaginatorBundle).README.md or Resources/doc/ for bundle-specific features.User Management
Leverage FOSUserBundle (integrated via eDemyMainBundle) for authentication, registration, and role-based access.
eDemy\MainBundle\Entity\User for custom fields:
use eDemy\MainBundle\Entity\User as BaseUser;
class CustomUser extends BaseUser { ... }
fos_user.user_class in config.yml to point to your extended class.Routing
edemy_main as a namespace for bundle-specific routes. Example:
# app/routing.yml
edemy_main_homepage:
path: /
defaults: { _controller: eDemyMainBundle:Default:index }
eDemyMainBundle/Resources/config/routing/.Pagination
Use KnpPaginatorBundle (included) for paginated queries:
use Knp\Component\Pager\PaginatorInterface;
$paginator = $this->get('knp_paginator');
$results = $paginator->paginate(
$queryBuilder, /* Your Doctrine QueryBuilder */
$request->query->getInt('page', 1),
10
);
Serialization
JMSSerializerBundle enables JSON/XML serialization/deserialization:
$serializer = $this->get('jms_serializer');
$data = $serializer->serialize($entity, 'json');
TinyMCE Integration (Optional)
If StfalconTinymceBundle is enabled, configure it in config.yml:
stfalcon_tinymce:
include_jquery: false
selector: 'textarea'
plugins:
- 'advlist autolink lists link charmap print preview hr anchor pagebreak'
eDemy\MainBundle\Entity for consistency.eDemyMainBundle/Twig/ and register them in services.yml.eDemyMainBundle/Resources/config/services.yml:
services:
app.user_listener:
class: AppBundle\EventListener\UserListener
tags:
- { name: kernel.event_listener, event: fos_user.registered, method: onUserRegistered }
eDemyMainBundle/Resources/public/ and enqueue them in Twig:
{{ asset('bundles/edemymain/css/style.css') }}
Bundle Maturity
dev-master. Test thoroughly in a staging environment.Routing Conflicts
edemy_main route (type: extra) may override existing routes. Verify with:
php app/console debug:router
edemy_main_custom_route:
path: /custom
defaults: { _controller: eDemyMainBundle:CustomController:index }
FOSUserBundle Dependencies
FOSUserBundle is properly configured before using eDemyMainBundle. Common issues:
User entity or incorrect user_class in config.yml.php app/console doctrine:schema:update --force if needed).Serialization Issues
JMSSerializerBundle may fail if entities lack proper metadata. Annotate entities:
use JMS\Serializer\Annotation as Serializer;
class User {
/**
* @Serializer\ExclusionPolicy("all")
*/
private $password;
}
Optional Dependencies
StfalconTinymceBundle is optional but may be required for rich-text features. Install separately:
composer require stfalcon/tinymce-bundle
Symfony Profiler
Enable the profiler in app/config.yml:
framework:
profiler: { only_exceptions: false }
Access at /_profiler to inspect requests, Doctrine queries, and events.
Logging
Configure monolog in app/config.yml:
monolog:
handlers:
main:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%.log"
level: debug
Doctrine Debugging Enable SQL logging:
php app/console doctrine:query:sql "SELECT * FROM user"
Or add to config.yml:
doctrine:
dbal:
logging: true
Event Debugging Dump dispatched events in a controller:
$events = $this->get('event_dispatcher')->getListeners();
dump($events);
Custom Entities
Extend eDemy\MainBundle\Entity\User or create new entities in your bundle:
use Doctrine\ORM\Mapping as ORM;
use eDemy\MainBundle\Entity\User as BaseUser;
/**
* @ORM\Entity
*/
class ExtendedUser extends BaseUser {
/**
* @ORM\Column(type="string")
*/
private $customField;
}
Override Services
Replace bundle services in app/config/services.yml:
services:
edemy_main.twig.extension:
class: AppBundle\Twig\CustomExtension
tags:
- { name: twig.extension }
Add Routes
Create app/Resources/config/routing/edemy_extensions.yml:
edemy_main_custom:
path: /custom
defaults: { _controller: AppBundle:Default:custom }
Extend Templates
Override bundle templates by placing them in app/Resources/eDemyMainBundle/views/ (e.g., Default/index.html.twig).
Add Listeners/Subscribers
Register custom listeners in app/config/services.yml:
services:
app.custom_listener:
class: AppBundle\EventListener\CustomListener
tags:
- { name: kernel.event_listener, event: edemy.main.event, method: onEvent }
How can I help you explore Laravel packages today?