Ouvrir votre console
Aller dans le répertoire de votre projet Sf2.3+
Exécuter la ligne ci-dessous
$ composer require javiereguiluz/easyadmin-bundleOuvrir le fichier app/AppKernel.php
Ajouter le bundle à la liste des $bundles
<?php
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new JavierEguiluz\Bundle\EasyAdminBundle\EasyAdminBundle(),
);
}
// ...
}Ouvrir le fichier app/config/routing.yml (habituellement placé ici)
Ajouter les quatre lignes ci-dessous
# app/config/routing.yml
easy_admin_bundle:
resource: "@EasyAdminBundle/Controller/"
type: annotation
prefix: /admin
# ...Ouvrir votre console
Aller dans le répertoire de votre projet Sf2.3+
Exécuter la ligne ci-dessous
$ php app/console assets:install --symlinkOuvrir le fichier app/config/config.yml
Modifier le nom dans les menus de votre "EasyAdmin"
# app/config/config.yml
easy_admin:
entities:
- AppBundle\Entity\Customer
- AppBundle\Entity\Order
- AppBundle\Entity\Product# app/config/config.yml
easy_admin:
entities:
Customers:
label: 'Active Clients'
class: AppBundle\Entity\Customer
Orders:
label: 'Pending Orders'
class: AppBundle\Entity\Order** transformation **
Il est possible de :
# app/config/config.yml
easy_admin:
entities:
'Active Clients': AppBundle\Entity\Customer
'Pending Orders': AppBundle\Entity\Order
'Inventory (2015)': AppBundle\Entity\Product
<p text-align:left"="" style="text-align: left;">Il est possible de :
Il est possible de :
easy_admin:
entities:
Product:
class: AppBundle\Entity\Product
show:
fields:
- { property: 'photo', format: 'image' }
# ...
# ...Il est possible de :
easy_admin:
entities:
Customer:
class: AppBundle\Entity\Customer
form:
fields: ['id', 'name', 'email']
title: 'Add customer'
new:
fields: ['name', 'email']
edit:
title: 'Edit customer'
# ...Il est possible de surcharger les actions de création et d'édition du controller
<?php
// Ces méthodes existent toujours et sont présentes avant
// la persistance des informations en BDD
// Edition
protected function prepareEditEntityForPersist($entity)
{
return $entity;
}
// New
protected function prepareNewEntityForPersist($entity)
{
return $entity;
}<?php
// Etape 1 - Création d'un nouveau controller
// + il faut étendre le EasyAdminController
// src/AppBundle/Controller/AdminController.php
namespace AppBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use JavierEguiluz\Bundle\EasyAdminBundle\Controller\AdminController
as EasyAdminController;
class AdminController extends EasyAdminController
{
/**
* @Route("/admin/", name="admin")
*/
public function indexAction(Request $request)
{
return parent::indexAction($request);
}
/** @TODO **/
}<?php
// Etape 2 - Etendre les méthodes souhaitées
protected function prepareEditEntityForPersist($entity)
{
if ($entity instanceof Article) {
return $this->updateSlug($entity);
}
}
protected function prepareNewEntityForPersist($entity)
{
if ($entity instanceof Article) {
return $this->updateSlug($entity);
}
}
private function updateSlug($entity)
{
$slug = $this->get('app.slugger')
->slugify($entity->getTitle());
$entity->setSlug($slug);
return $entity;
}
Il est possible de surcharger les formulaires par défaut
<?php
// src/AppBundle/Controller/AdminController.php
namespace AppBundle\Controller;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use JavierEguiluz\Bundle\EasyAdminBundle\Controller\AdminController as EasyAdminController;
use AppBundle\Entity\Event;
class AdminController extends EasyAdminController
{
/**
* @Route("/admin/", name="admin")
*/
public function indexAction(Request $request)
{
return parent::indexAction($request);
}
public function createEditForm($entity, array $entityProperties)
{
$editForm = parent::createEditForm($entity, $entityProperties);
if ($entity instanceof Event) {
// the trick is to remove the default field and then
// add the customized field
$editForm->remove('city');
$editForm->add('city', 'choice', array('choices' => array(
'London', 'New York', 'Paris', 'Tokyo'
)));
}
return $editForm;
}
}layout.html.twig c'est la mise en page générale
new.html.twig utilisé pour les actions : new, search
show.html.twig utilisé pour l'action : show
edit.html.twig utilisé pour l'action : edit
list.html.twig utilisé pour l'action : list
_list_paginator.html.twig utilisé pour la pagination
_flashes.html.twig utilisé pour les flash messages
your-project/
├─ app/
│ ├─ ...
│ └─ Resources/
│ └─ EasyAdminBundle/
│ └─ views/
│ └─ _list_paginator.html.twig
├─ src/
├─ vendor/
└─ web/Il est possible de :
easy_admin:
assets:
css:
# HTTP protocol-relative URL
- '//example.org/css/admin1.css'
# absolute non-secure URL
- 'http://example.org/css/admin2.css'
# absolute secure URL
- 'https://example.org/css/admin3.css'
# absolute internal bundle URL
- '/bundles/acmedemo/css/admin4.css'
# relative internal bundle URL
- 'bundles/app/css/admin5.css'
js:
# this option works exactly
# the same as the 'css' option
- '//example.org/js/admin1.js'
- 'http://example.org/js/admin2.js'
- 'https://example.org/js/admin3.js'
- '/bundles/acmedemo/js/admin4.js'
- 'bundles/app/js/admin5.js'
# ...Il faut :
# app/config/config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: admin.yml } # <-- Ajouter cette ligne
# app/config/admin.yml # <-- Créer ce fichier
easy_admin:
# ...
# Copier toute la configuration que vous aviez écrit
# ...# app/config/config_prod.yml
doctrine:
orm:
metadata_cache_driver: apc
# memcache, memcached, xcache et service sont valides