代码之家  ›  专栏  ›  技术社区  ›  dmitry76

空仪表板Symfony3 sonata adminBundle

  •  0
  • dmitry76  · 技术社区  · 9 年前

    config.yml

        imports:
        - { resource: parameters.yml }
        - { resource: security.yml }
        - { resource: services.yml }
    
    # Put parameters here that don't need to change on each machine where the app is deployed
    # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
    parameters:
        locale: en
    
    framework:
        #esi: ~
        translator: { fallbacks: [en] }
        secret: '%secret%'
        router:
            resource: '%kernel.project_dir%/app/config/routing.yml'
            strict_requirements: ~
        form: ~
        csrf_protection: ~
        validation: { enable_annotations: true }
        #serializer: { enable_annotations: true }
        templating:
            engines: ['twig']
        default_locale: '%locale%'
        trusted_hosts: ~
        session:
            # https://symfony.com/doc/current/reference/configuration/framework.html#handler-id
            handler_id: session.handler.native_file
            save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
        fragments: ~
        http_method_override: true
        assets: ~
        php_errors:
            log: true
    
    # Twig Configuration
    twig:
        debug: '%kernel.debug%'
        strict_variables: '%kernel.debug%'
    
    # Doctrine Configuration
    doctrine:
        dbal:
            driver: pdo_mysql
            host: '%database_host%'
            port: '%database_port%'
            dbname: '%database_name%'
            user: '%database_user%'
            password: '%database_password%'
            charset: UTF8
            # if using pdo_sqlite as your database driver:
            #   1. add the path in parameters.yml
            #     e.g. database_path: '%kernel.project_dir%/var/data/data.sqlite'
            #   2. Uncomment database_path in parameters.yml.dist
            #   3. Uncomment next line:
            #path: '%database_path%'
    
        orm:
            auto_generate_proxy_classes: '%kernel.debug%'
            naming_strategy: doctrine.orm.naming_strategy.underscore
            auto_mapping: true
    
    # Swiftmailer Configuration
    swiftmailer:
        transport: '%mailer_transport%'
        host: '%mailer_host%'
        username: '%mailer_user%'
        password: '%mailer_password%'
        spool: { type: memory }
    
    
    #Cache
    doctrine_cache:
        providers:
            my_markdown_cache:
                type: file_system
                file_system:
                    directory: /tmp/doctrine_cache
    
    
    
    sonata_admin:
        title: My Blog Admin
    
    
    sonata_block:
        default_contexts: [cms]
        blocks:
            sonata.admin.block.admin_list:
                contexts: [admin]
    

    parameters:
        #parameter_name: value
    
    services:
        # default configuration for services in *this* file
        _defaults:
            # automatically injects dependencies in your services
            autowire: true
            # automatically registers your services as commands, event subscribers, etc.
            autoconfigure: true
            # this means you cannot fetch services directly from the container via $container->get()
            # if you need to do this, you can override this setting on individual services
            public: false
    
        # makes classes in src/AppBundle available to be used as services
        # this creates a service per class whose id is the fully-qualified class name
        AppBundle\:
            resource: '../../src/AppBundle/*'
            # you can exclude directories or files
            # but if a service is unused, it's removed anyway
            exclude: '../../src/AppBundle/{Entity,Repository,Tests}'
    
        # controllers are imported separately to make sure they're public
        # and have a tag that allows actions to type-hint services
        AppBundle\Controller\:
            resource: '../../src/AppBundle/Controller'
            public: true
            tags: ['controller.service_arguments']
    
        # add more services, or override services that need manual wiring
        # AppBundle\Service\ExampleService:
        #     arguments:
        #         $someArgument: 'some_value'
    services:
        app.admin.category:
            class: AppBundle\Admin\CategoryAdmin
            arguments: [~, AppBundle\Entity\Category, ~]
            tags:
                - { name: sonata.admin, manager_type: orm, label: Category }
            public: true
    
        app.admin.articles:
            class: AppBundle\Admin\ArticlesAdmin
            arguments: [~, AppBundle\Entity\Articles, ~]
            tags:
                - { name: sonata.admin, manager_type: orm, label: Blog post }
            public: true
    

    类别管理员类

    namespace AppBundle\Admin;
    
    use Sonata\AdminBundle\Admin\AbstractAdmin;
    use Sonata\AdminBundle\Datagrid\ListMapper;
    use Sonata\AdminBundle\Datagrid\DatagridMapper;
    use Sonata\AdminBundle\Form\FormMapper;
    use Sonata\AdminBundle\Show\ShowMapper;
    
    class CategoryAdmin extends AbstractAdmin
    {
        protected function configureFormFields(FormMapper $formMapper)
        {
            $formMapper->add('name', 'text', array('label' => 'Название'));
        }
    
        protected function configureDatagridFilters(DatagridMapper $datagridMapper)
        {
            $datagridMapper->add('name');
        }
    
        protected function configureListFields(ListMapper $listMapper)
        {
            $listMapper->addIdentifier('name');
        }
    
        protected function configureShowFields(ShowMapper $showMapper)
        {
            $showMapper
                ->add('name');
    
        }
    }
    

    类别实体类

    namespace AppBundle\Entity;
    
    use Doctrine\ORM\Mapping as ORM;
    use Doctrine\Common\Collections\ArrayCollection;
    
    /**
     * Category
     *
     * @ORM\Table(name="category")
     * @ORM\Entity(repositoryClass="AppBundle\Repository\CategoryRepository")
     */
    class Category
    {
        /**
         * @ORM\OneToMany(targetEntity="Articles", mappedBy="category")
         */
        private $blogPosts;
    
        public function __construct()
        {
            $this->blogPosts = new ArrayCollection();
        }
    
        public function getBlogPosts()
        {
            return $this->blogPosts;
        }
    
    
        /**
         * @var int
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        private $id;
    
        /**
         * @var string
         *
         * @ORM\Column(name="name", type="string", length=255)
         */
        private $name;
    
    
        /**
         * Get id
         *
         * @return int
         */
        public function getId()
        {
            return $this->id;
        }
    
        /**
         * Set name
         *
         * @param string $name
         *
         * @return Category
         */
        public function setName($name)
        {
            $this->name = $name;
    
            return $this;
        }
    
        /**
         * Get name
         *
         * @return string
         */
        public function getName()
        {
            return $this->name;
        }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   dmitry76    9 年前

    问题解决了。解决方案不在捆绑包的文档中,而是在symphony的文档中