Federico Zacayan

Software Devloper.

Symfony & Sonata-admin

Descargar laradock.

Copiar el archivo de con las variabes de entorno.

Nginx tiene archivo especial para Synfony.

Entrar al workspace.

Entrar al workspace.

sudo docker-compose up -d nginx mysql

sudo docker-compose exec workspace bash

composer create-project symfony/website-skeleton .

composer require sonata-project/admin-bundle (including "sonata-project/core-bundle (>=3.9)" AND "sonata-project/admin-bundle (>=3.31)") whit are from contributors.

composer require sonata-project/doctrine-orm-admin-bundle

chmod -R 777 .

# config/packages/framework.yaml

framework:
    translator: { fallbacks: ['%locale%'] }

bin/console cache:clear

bin/console assets:install

http://yoursite.local/admin/dashboard

bin/console make:entity

BlogPost

title

string

255

no

body

text

no

draft

boolean

no

bin/console make:entity

Category

name

string

255

no

blogPosts

OneToMany

App\Entity\BlogPost

no

no

\

Add "DATABASE_URL=mysql://default:secret@mysql:3306/default" to .env file

bin/console doctrine:schema:update --force

protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
    {
        $datagridMapper
            // ->add('id')
            ->add('name')
            ;
    }

    protected function configureListFields(ListMapper $listMapper): void
    {
        $listMapper
            // ->add('id')
            ->add('name')
            ->add('_action', null, [
                'actions' => [
                    'show' => [],
                    'edit' => [],
                    'delete' => [],
                ],
            ]);
    }

    protected function configureFormFields(FormMapper $formMapper): void
    {
        $formMapper
            // ->add('id')
            ->add('name')
            ;
    }

    protected function configureShowFields(ShowMapper $showMapper): void
    {
        $showMapper
            // ->add('id')
            ->add('name')
            ;
    }

Update BlogPostAdmin.php

use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Sonata\AdminBundle\Form\Type\ModelType;
use App\Entity\Category;
protected function configureDatagridFilters(DatagridMapper $datagridMapper): void
    {
        $datagridMapper
            // ->add('id')
            ->add('title')
            ->add('body')
            ->add('draft')
            ;
    }

    protected function configureListFields(ListMapper $listMapper): void
    {
        $listMapper
            // ->add('id')
            ->addIdentifier('title')
            ->add('body')
            ->add('draft')
            ->add('_action', null, [
                'actions' => [
                    'show' => [],
                    'edit' => [],
                    'delete' => [],
                ],
            ]);
    }

    protected function configureFormFields(FormMapper $formMapper): void
    {
        $formMapper
            // ->add('id')
            ->add('title')
            ->add('body')
            ->add('draft', CheckboxType::class, ['required'=> false])
            ->add('category', ModelType::class, [
                'class' => Category::class,
                'property' => 'name',
            ])
            ;
    }

    protected function configureShowFields(ShowMapper $showMapper): void
    {
        $showMapper
            // ->add('id')
            ->add('title')
            ->add('body')
            ->add('draft')
            ;
    }