2014-11-02 2 views
1

저는 Symfony로 시작했고 "bundles"로 붙어 있습니다. 내가 할 수있는 관리자를 허용하는 관리자 패널 구현한다고 가정 : Symfony - Admin Panel 구현

가 어떻게 같은 관리자 패널을 구현 가야합니까 뉴스

  1. 이 제품을 관리
  2. 이 기사 관리를
  3. 관리를? 관리자 패널은 제품/뉴스/기사를위한 별도의 컨트롤러와 함께 하나의 묶음이어야합니까? 아니면 제품/뉴스/기사를 자신의 묶음에 넣고 "관리"묶음으로 그룹화해야합니다 (가능한지 확실하지 않은 경우). 최근 Symfony Best Practices 발표에 따르면

답변

1

:

응용 프로그램 로직

분리 된 번들을 만들기 위해 AppBundle라는 단 하나의 번들을 작성, 그들 만 소프트웨어의 독립 실행 형 조각으로 재사용 할 수 있습니다. 물론 Admin과 Front 번들을 분리 할 수는 있지만 코드의 명확성을 위해서만 가능합니다.

0

관리자 패널을 신속하게 구현하려는 경우 SonataAdminBundle을 살펴볼 필요가 있습니다.

당신은 작곡가 & 가져 오기를 통해 어떤 경로를 설치하고 거기에서, 당신의 Products, NewsArticle 개체를 참조하는 클래스는 관리 서비스를 정의의 문제, 그리고.

확장 성이 좋기 때문에 &을 설치하는 것이 좋습니다. 또한 필터 양식 외에도 하나의 관리 인터페이스를 다른 상자에 즉시 내장하고 엔티티 단위로 라우트를 활성화/비활성화함으로써 엔티티 간의 관계를 처리 할 수 ​​있습니다. 또한 나뭇 가지 템플릿은 슈퍼 모듈 식이며 쉽게 재정의 할 수 있습니다. 당신이 SonataAdmin를 설치 한 후

(ORM을 가정) 빠른 예를 들어

, 서비스 정의에 추가합니다 (Sonata Admin Docs에서 가져온 예.)

services: 
    sonata.admin.pprodut: 
     class: Acme\DemoBundle\Admin\ProductAdmin 
     tags: 
      - { name: sonata.admin, manager_type: orm, group: "Content", label: "Product" } 
     arguments: 
      - ~ 
      - Acme\DemoBundle\Entity\Product 
      - ~ 

...와 일치하는 ProductAdmin 클래스 .

<?php 
// src/Acme/DemoBundle/Admin/ProductAdmin.php 

namespace Acme\DemoBundle\Admin; 

use Sonata\AdminBundle\Admin\Admin; 
use Sonata\AdminBundle\Datagrid\ListMapper; 
use Sonata\AdminBundle\Datagrid\DatagridMapper; 
use Sonata\AdminBundle\Form\FormMapper; 

class ProductAdmin extends Admin 
{ 
    // Fields to be shown on create/edit forms 
    protected function configureFormFields(FormMapper $formMapper) 
    { 
     $formMapper 
      ->add('title', 'text', array('label' => 'Product Title')) 
      ->add('sku', 'text') 
      ->add('description') //if no type is specified, SonataAdminBundle tries to guess it 
      // Other fields ... 
     ; 
    } 

    // Fields to be shown on filter forms 
    protected function configureDatagridFilters(DatagridMapper $datagridMapper) 
    { 
     $datagridMapper 
      ->add('title') 
      ->add('sku') 
     ; 
    } 

    // Fields to be shown on lists 
    protected function configureListFields(ListMapper $listMapper) 
    { 
     $listMapper 
      ->addIdentifier('title') 
      ->add('sku') 
     ; 
    } 
} 

그리고 경기가 끝났습니다.

그러나 휠체어를 재창조하기보다는 연습용으로 사용하면 SonataAdmin을 멋진 참조 번들로 사용할 수 있습니다. :)

관련 문제