簡體   English   中英

Symfony-實施管理面板

[英]Symfony - Implementing Admin Panel

我剛開始使用Symfony並被“捆綁”卡住。 假設我要實現一個管理面板,該面板允許管理員執行以下操作:

  1. 管理產品
  2. 管理文章
  3. 管理新聞

我該如何實施這樣的管理面板? 管理面板應該與產品/新聞/文章的單獨控制器捆綁在一起嗎? 還是我應該將產品/新聞/文章放在自己的捆綁包中,然后(也許)將它們分組為“管理員”捆綁包(不確定是否可行)。

根據最近發布的Symfony最佳做法

僅為您的應用程序邏輯創建一個名為AppBundle的捆綁包

創建單獨的捆綁軟件,只有它們可以作為獨立軟件重用。 當然,可以將例如Admin和Front捆綁包分開,但這僅是為了使代碼清晰。

如果您想快速實現管理面板, SonataAdminBundle值得一看。

您可以通過composer安裝並導入一些路由,然后從那里定義管理服務以及引用您的ProductsNewsArticle實體的類。

我喜歡它,因為它是可擴展的,並且設置起來非常快。 除過濾器表單外,它還可以通過以下方式處理實體之間的關系:將一個管理界面直接嵌入到另一個管理界面中,並基於每個實體啟用/禁用路由。 此外,樹枝模板是超模塊化的,可以輕松覆蓋。

作為一個簡單的示例(假設使用ORM),安裝SonataAdmin后,添加一個服務定義:(例如,取自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仍然可以作為不錯的參考包。 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM