edge5 / app-backend-bundle
Base project with Admingenerator, FOS user bundle and db-side translations.
Installs: 374
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 5
Forks: 0
Open Issues: 0
Language:JavaScript
Type:symfony-bundle
pkg:composer/edge5/app-backend-bundle
Requires
- cedriclombardot/admingenerator-generator-bundle: dev-master
- cedriclombardot/admingenerator-user-bundle: dev-master
- friendsofsymfony/jsrouting-bundle: ~1.1
- friendsofsymfony/user-bundle: ~1.3
- jms/security-extra-bundle: dev-master
- knplabs/knp-menu-bundle: dev-master
- liip/imagine-bundle: master
- propel/propel-bundle: 1.2.x-dev
- symfony/symfony: >= 2.2.0
- twig/twig: >= 1.9.0
- willdurand/propel-typehintable-behavior: dev-master
This package is not auto-updated.
Last update: 2016-05-06 06:23:43 UTC
README
This project provides a simple predefined backend base, consiting of AdminGeneratorBundle, the FOS User Bundle and a simple component, which loads translations out of the database.
Installation
Add to composer.json:
"require": {
"edge5/app-backend-bundle": "dev-master",
"avocode/form-extensions-bundle": "dev-master",
"jms/security-extra-bundle": "dev-master"
},
...
"config": {
...
"component-dir": "web/components"
},
And change minimum-stability from stable to dev:
"minimum-stability": "dev",
Then run php composer.phar update command.
Configuration
Add to app/AppKernel.php
new WhiteOctober\PagerfantaBundle\WhiteOctoberPagerfantaBundle(), new Admingenerator\GeneratorBundle\AdmingeneratorGeneratorBundle(), new Admingenerator\UserBundle\AdmingeneratorUserBundle(), new FOS\UserBundle\FOSUserBundle(), new Knp\Bundle\MenuBundle\KnpMenuBundle(), new Propel\PropelBundle\PropelBundle(), new Edge5\AppBackendBundle\Edge5AppBackendBundle(), new Avocode\FormExtensionsBundle\AvocodeFormExtensionsBundle(), new JMS\AopBundle\JMSAopBundle(), new JMS\SecurityExtraBundle\JMSSecurityExtraBundle(),
Add to app/config/config.yml:
fos_user:
service:
mailer: fos_user.mailer.noop
db_driver: propel
user_class: FOS\UserBundle\Propel\User
firewall_name: main
admingenerator_generator:
base_admin_template: AdmingeneratorGeneratorBundle::base_admin_assetic_less.html.twig
use_doctrine_orm: false
use_doctrine_odm: false
use_propel: true
stylesheets:
- { path: bundles/edge5appbackend/css/custom.css }
javascripts:
- { path: bundles/edge5appbackend/js/backend.js }
- { path: bundles/edge5appbackend/js/tiny_mce/jquery.tinymce.js }
- { path: bundles/edge5appbackend/js/tiny_mce/tiny_mce.js }
admingenerator_user:
login_template: Edge5AppBackendBundle::base_admin.html.twig
propel:
path: "%kernel.root_dir%/../vendor/propel/propel1"
phing_path: "%kernel.root_dir%/../vendor/pear-phing"
dbal:
driver: mysql
user: %database_user%
password: %database_password%
dsn: mysql:host=%database_host%;dbname=%database_name%;charset=UTF8
options: {}
attributes: {}
knp_menu:
twig:
template: AdmingeneratorGeneratorBundle:KnpMenu:knp_menu_trans.html.twig
jms_security_extra:
expressions: true
Uncomment in app/config/config.yml:
framework:
translator: { fallback: %locale% }
Add to app/config/config.yml:
twig:
form:
resources:
- "Edge5AppBackendBundle::fields.html.twig"
- "AdmingeneratorGeneratorBundle:Form:fields.html.twig"
- "AvocodeFormExtensionsBundle:Form:form_widgets.html.twig"
- "AvocodeFormExtensionsBundle:Form:form_stylesheets.html.twig"
- "AvocodeFormExtensionsBundle:Form:form_javascripts.html.twig"
Add to app/config/parameters.yml:
parameters:
locales: [<<locales for i18n>>]
edge5.menu_builder.class: Edge5\AppBackendBundle\Menu\AdminMenu
Add routes to app/config/routes.yml:
backend_bundle:
resource: "@Edge5AppBackendBundle/Resources/config/routing/backend.xml"
prefix: /admin
fos_user_security:
resource: "@FOSUserBundle/Resources/config/routing/security.xml"
Add to security.yml:
security:
encoders:
"FOS\UserBundle\Model\UserInterface": sha512
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, role: ROLE_ADMIN }
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
Add to app/config/propel.ini (create if not existing):
propel.behavior.typehintable.class = vendor.TypehintableBehavior.src.TypehintableBehavior
Run following commands:
php app/console propel:build
Extend the backend
Menu
If you want to extend the menu you have to do the following steps.
1: Override AdminMenu
Create a file "AdminMenu.php" in "YourProject/src/YourBundle/Menu/"
Extend DefaultMenuBuilder (Admingenerator\GeneratorBundle\Menu\DefaultMenuBuilder)
Override the "navbarMenu" function as you want
class AdminMenu extends DefaultMenuBuilder
{
protected $translation_domain = 'Admin';
public function navbarMenu(FactoryInterface $factory, array $options)
{
$menu = $factory->createItem('root');
$menu->setChildrenAttributes(array('id' => 'main_navigation', 'class' => 'nav'));
//Your custom Menu
$users = $this->addDropdown($menu, 'Logins');
$this->addLinkRoute($users, 'Users', 'Edge5_AppBackendBundle_User_list');
$this->addLinkRoute($users, 'Groups', 'Edge5_AppBackendBundle_Group_list');
// Just some examples
$this->addLinkRoute($menu, 'Customers', 'Edge5_BackendBundle_Customer_list');
$this->addLinkRoute($menu, 'Products', 'Edge5_BackendBundle_Product_list');
$this->addLinkRoute($menu, 'Translations', 'Edge5_AppBackendBundle_Translation_list');
return $menu;
}
}
In "parameters.yml" set "edge5.set menu_builder.class"
parameters:
edge5.menu_builder.class: Vendor\YourBundle\Menu\AdminMenu
2: Define Dashboard view
Create a DashboardController (YourBundle/Controller/DashboardController.php)
This Controller returns the view for the dashboard (base_dashboard.html.twig)
class DashboardController extends Controller
{
public function indexAction()
{
return $this->render('YourBundle::base_dashboard.html.twig');
}
}
Register route for the dashboard and define base_admin_template in "app/config/config.yml"
admingenerator_generator:
base_admin_template: YourBundle::base_admin.html.twig
dashboard_welcome_path: dashboard
3: Create Views
In "YourBundle/Resources/views" create
- base_dashboard.html.twig
- base_admin.html.twig
- base_admin_navbar.html.twig
In "base_admin_navbar.html.twig" render the correct Menu (Menu from your custom AdminMenuController)
{% extends 'Edge5AppBackendBundle::base_admin_navbar.html.twig' %}
{% block menu %}
{{ knp_menu_render('YourBundle:AdminMenu:navbarMenu') }}
{% endblock %}
Include "base_admin_navbar.html.twig" in "base_admin.html.twig" and "base_dashboard.html.twig"
{% extends 'Edge5AppBackendBundle::base_admin.html.twig' %}
{% block navbar %}
{% include 'Edge5BackendBundle::base_admin_navbar.html.twig' %}
{% endblock navbar %}
4: Clear cache
php app/console cache:clear