AuthorAdmin   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 5
eloc 24
c 1
b 0
f 1
dl 0
loc 45
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A setUploaderHelper() 0 3 1
A configureDatagridFilters() 0 3 1
A configureListFields() 0 8 1
A configureFormFields() 0 21 2
1
<?php
2
3
namespace App\Admin;
4
5
use App\Entity\Author;
6
use Sonata\AdminBundle\Admin\AbstractAdmin;
7
use Sonata\AdminBundle\Datagrid\DatagridMapper;
8
use Sonata\AdminBundle\Datagrid\ListMapper;
9
use Sonata\AdminBundle\Form\FormMapper;
10
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
11
use Symfony\Component\Form\Extension\Core\Type\FileType;
12
use Symfony\Component\Form\Extension\Core\Type\TextType;
13
use Vich\UploaderBundle\Templating\Helper\UploaderHelper;
14
15
final class AuthorAdmin extends AbstractAdmin
16
{
17
    private UploaderHelper $uploaderHelper;
18
19
    public function setUploaderHelper(UploaderHelper $uploaderHelper)
20
    {
21
        $this->uploaderHelper = $uploaderHelper;
22
    }
23
24
    protected function configureFormFields(FormMapper $formMapper)
25
    {
26
        $formMapper->add('name', TextType::class);
27
        $formMapper->add('bio', TextType::class);
28
        $formMapper->add('gender', ChoiceType::class, [
29
                'choices' => [
30
                    'Male' => Author::AUTHOR_GENDER_MALE,
31
                    'Female' => Author::AUTHOR_GENDER_FEMALE,
32
                    'Other' => Author::AUTHOR_GENDER_OTHER,
33
                ],
34
                'required' => true,
35
            ]
36
        );
37
        $formMapper->add('courses');
38
        $fileFieldOptions = ['required' => false];
39
        if (null !== $this->getSubject()->getPicture()) {
40
            $imagePath = $this->uploaderHelper->asset($this->getSubject(), 'pictureFile');
41
42
            $fileFieldOptions['help'] = '<img src="'.$imagePath.'" class="admin-preview" />';
43
        }
44
        $formMapper->add('pictureFile', FileType::class, $fileFieldOptions);
45
    }
46
47
    protected function configureDatagridFilters(DatagridMapper $datagridMapper)
48
    {
49
        $datagridMapper->add('name');
50
    }
51
52
    protected function configureListFields(ListMapper $listMapper)
53
    {
54
        $listMapper->addIdentifier('name');
55
        $listMapper->add('bio');
56
        $listMapper->add('picture');
57
        $listMapper->add('courses');
58
        $listMapper->add('created');
59
        $listMapper->add('updated');
60
    }
61
}
62