Symfony2 Sonate Admin Bundle

Symfony2 Sonate Admin Bundle
Gemeinsam Sonate Admin

In dieser Publikation kannst du mit Sonata Admin Bundle arbeiten. Folgen Sie einfach dem Schritt unten und am Ende dieser Publikation erhalten Sie eine voll funktionsfähige Funktion mit diesem Paket.
Um Sonata Admin Bundle verwenden zu können, müssen Sie das Symfony2 Framework installieren und konfigurieren. Ich hoffe du bist bereit, das zu tun.

Installation

1.1.    Cod herunterladen

Verwenden Sie den Komponisten, um Ihre Add-ons zu verwalten und SonataAdminBundle herunterzuladen:

>Php composer.phar erfordert Sonate-Projekt / admin-Bundle

Sie müssen eine Versionsbeschränkung eingeben. 'Dev-master' wird Ihnen die neueste Version zur Verfügung stellen, die mit der neuesten Version von Symfony2 kompatibel ist. Prüfen Sie den Packagist auf ältere Versionen:
Geben Sie eine Versionsbeschränkung für die Sonata-Projekt- / Admin-Bündel-Anforderung an: dev-master

1.2.    Herunterladen eines Speicherpakets

SonataAdminBundle kann mit mehreren Speichermechanismen arbeiten. Wir verwenden ORM Doctrine, um SonataDoctrineORMAdminBundle zu installieren.

>Composer erfordert Sonate Projekt / Lehre-ORM-admin-Bundle

Sie müssen eine Versionsbeschränkung eingeben. "Dev-Master" wird in der Regel die aktuellste und sprunghafteste Version bekommen. Überprüfe den Packagist sowohl auf Stall- als auch auf alte Versionen:
Geben Sie eine Versionsbeschränkung für die Sonate /

doctrine-orm-admin-bundle erforderlich: dev-master

1.3.    Aktivieren von SonataAdminBundle und seinen Abhängigkeiten

SonataAdminBundle setzt auf andere Pakete, um bestimmte Funktionen zu implementieren. Zusätzlich zu der in Schritt 2 erwähnten Speicherschicht gibt es noch andere Bündel, die für SonataAdminBundle notwendig sind:

  • SonataBlockBundle
  • SonatajQueryBundle
  • KnpMenuBundle (Version 1.1.*)

Diese Pakete werden vom Komponisten automatisch als Abhängigkeit von SonataAdminBundle heruntergeladen. Allerdings müssen Sie sie in Ihrer AppKernel.php aktivieren und sie manuell konfigurieren. Vergessen Sie nicht, SonataAdminBundle zu aktivieren:

// app/AppKernel.php
public function registerBundles()
{
       return array(
        // ...

        // Fügen Sie Ihre Abhängigkeiten hinzu
        new Sonata\BlockBundle\SonataBlockBundle(),
        new Sonata\jQueryBundle\SonatajQueryBundle(),
        new Knp\Bundle\MenuBundle\KnpMenuBundle(),
        new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),

        // Dann addiere SonataAdminBundle
        new Sonata\AdminBundle\SonataAdminBundle(),
        // ...
        );
}

1.4.    Konfigurieren von Abhängigkeiten SonataAdminBundle

SonataAdminBundle stellt einen SonataBlockBundle-Block zur Verfügung, der im Administrations-Dashboard verwendet wird. Um es nutzen zu können, stellen Sie sicher, dass es in der SonataBlockBundle-Konfiguration aktiviert ist:

YAML

# app/config/config.yml
sonata_block:
        default_contexts: [cms]
        blocks:
        # Aktivieren Sie den Block SonataAdminBundle
        sonata.admin.block.admin_list:
                contexts: [admin]
        #  Ihre anderen Blöcke

1.5.    sauber

Installieren Sie nun die Assets aus den Paketen:

PHP - app / assets Konsole das Web installieren

Normalerweise wird bei der Installation neuer Pakete empfohlen, dass Sie auch Ihren Cache löschen:

Cache PHP - Anwendung / console: klar
Erste Schritte mit SonataAdminBundle

Wenn Sie den Installationsanweisungen folgen, sollte SonataAdminBundle installiert werden, aber unzugänglich. Sie müssen es zuerst für Ihre Modelle konfigurieren, bevor Sie es verwenden können.Hier ist eine kurze Checkliste, was notwendig ist , um schnell zu konfigurieren und erstellen Sie Ihre ersten SonataAdminBundle Administrations - Interface - Modelle für Ihre Anwendung:

  • Schritt 1: Legen Sie die SonataAdminBundle-Routen fest
  • Schritt 2: Erstellen Sie eine Admin-Klasse
  • Schritt 3: Erstellen eines Verwaltungsdienstes
  • Schritt 4: Konfiguration

Schritt 1: Legen Sie die SonataAdminBundle-Routen fest

Um auf SonataAdminBundle-Seiten zugreifen zu können, müssen Sie ihre Routen der Routing-Datei Ihrer Anwendung hinzufügen:
YAML

# app/config/routing.yml
admin:

        resource:@SonataAdminBundle/Resources/config/routing/sonata_admin.xml'
        prefix: /admin

_sonata_admin:
       Ressourcen :.
            type: sonata_admin
            prefix: /admin

An dieser Stelle können Sie bereits auf das leere (leere) Dashboard zugreifen, indem Sie die URL: http: //yoursite.local/admin/dashboard besuchen.http://yoursite.local/admin/dashboard.

Schritt 2: Erstellen Sie eine Admin-Klasse

SonataAdminBundle hilft Ihnen, Ihre Daten mithilfe einer grafischen Oberfläche zu verwalten, mit der Sie Instanzen Ihres Modells erstellen, aktualisieren oder durchsuchen können. Diese Aktionen müssen konfiguriert werden, was mit einer Admin-Klasse erfolgt.
Eine Admin-Klasse repräsentiert die Zuordnung Ihres Modells zu jeder Aktion der Administration. Dabei entscheiden Sie über die Felder, die auf einer Liste angezeigt werden sollen, als Filter zu verwenden oder auf einer Formularerstellung / -ausgabe anzuzeigen.
Der einfachste Weg, eine Admin-Klasse für Ihr Modell zu erstellen, besteht darin, die Sonata \ AdminBundle \ Admin \ Admin-Klasse zu erweitern.
Angenommen, Ihr JigarUserBundle hat eine Benutzerentität. Hier ist, wie eine grundlegende Administrationsklasse aussehen könnte:

namespace Jigar\UserBundle\Admin;

use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Show\ShowMapper;
class UserAdmin extends Admin {

protected function configureFormFields(FormMapper $formMapper)
{
   $formMapper
      ->add('username', 'text', array('label' => 'User Name'))
      ->add('firstname')
      ->add('lastname')
      ->add('email')
      ->add('password');
}

protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
   $datagridMapper->add('username', null, array('label' => 'User Name')
      ->add('email');
}

protected function configureListFields(ListMapper $listMapper)
{
   $listMapper
      ->addIdentifier('username')
      ->add('email')
      ->addIdentifier('enabled', null, array('template' =>
         'JigarUserBundle:CRUD:status_field.html.twig'))
      ->addIdentifier('roles', null, array(
         'template' => 'JigarUserBundle:CRUD:list_roles.html.twig',
      ))
      ->add('phone')
      ->add('_action', 'actions', array(
         'actions' => array(
         'show' => array(),
         'edit' => array(),
         'delete' => array()
      )
      ));
}
protected function configureShowField(ShowMapper $showMapper)
{
   $showMapper
      ->add('username')
      ->add('email');
}

Schritt 3: Erstellen eines Verwaltungsdienstes

Nun, da du deine Admin-Klasse erstellt hast, musst du einen Service dafür erstellen. Dieser Service muss das Sonata.admin-Tag haben, es liegt an Ihnen, SonataAdminBundle zu informieren, dass dieser spezielle Service eine Admin-Klasse darstellt:
Erstellen Sie eine neue Datei admin.xml oder admin.yml im Ordner Jigar / UserBundle / Resources / config / folder:
YAML

Dienstleistungen:
   sonata.admin.user:
     Klasse: Jigar\UserBundle\Admin\UserAdmin
     Schlüsselwörter:
        - { name: sonata.admin, manager_type: orm, group: "User", label: "User" }
     Argumente:
        - ~
        - Jigar\UserBundle\Entity\User
        - ~
     nennen:
        - [ setTranslationDomain, [JigarUserBundle]]

Jetzt, da du eine Konfigurationsdatei mit deinem Administrationsdienst hast, musst du Symfony2 nur noch laden. Es gibt zwei Möglichkeiten, dies zu tun:

  • Import zum Hauptconfig.yml

Füge deine neue Konfigurationsdatei in die Haupt-config.yml ein (vergewissere dich, dass du die richtige Dateierweiterung benutzt):
YAML

# app/config/config.yml
Importe:
     - { resource: @JigarUserBundle/Resources/config/admin.xml }
  • Bitten Sie Ihre Gruppe, sie zu laden

#Jigar/UserBundle/DependencyInjection/JigarUserBundleExtension.php for YAML configurations

use Symfony\Component\DependencyInjection\Loader;
use Symfony\Component\Config\FileLocator;

public function load(array $configs, ContainerBuilder $container)
{
   $configuration = new Configuration();
   $config = $this->processConfiguration($configuration, $configs);

   $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));

   $loader->load('services.yml');

   $loader->load('admin.yml');

}

Schritt 4: Konfiguration

An diesem Punkt haben Sie grundlegende administrative Aktionen für Ihr Modell. Wenn Sie erneut http: //yoursite.local/admin/dashboard besuchen, sollten Sie nun ein Panel mit Ihrer zugeordneten Vorlage sehen. Sie können mit der Erstellung, Auflistung, Bearbeitung und dem Löschen von Instanzen beginnen.

Das obige Bild zeigt die Verwaltungspanel-Startseite, die die drei verschiedenen Benutzer-, Produkt- und Kategorienentitäten auflistet.