1 | <?php |
||
31 | class MasterdataType extends AbstractType |
||
|
|||
32 | { |
||
33 | protected $app; |
||
34 | |||
35 | 663 | public function __construct($app) |
|
39 | |||
40 | /** |
||
41 | * {@inheritdoc} |
||
42 | */ |
||
43 | 4 | public function buildForm(FormBuilderInterface $builder, array $options) |
|
44 | { |
||
45 | /** @var $app \Eccube\Application */ |
||
46 | 4 | $app = $this->app; |
|
47 | |||
48 | 4 | $masterdata = array(); |
|
49 | |||
50 | 4 | $driverChain = $app['orm.em']->getConfiguration()->getMetadataDriverImpl(); |
|
51 | 4 | $drivers = $driverChain->getDrivers(); |
|
52 | |||
53 | 4 | foreach ($drivers as $namespace => $driver) { |
|
54 | 4 | if ($namespace == 'Eccube\Entity') { |
|
55 | 4 | $classNames = $driver->getAllClassNames(); |
|
56 | 4 | foreach ($classNames as $className) { |
|
57 | 4 | $meta = $app['orm.em']->getMetadataFactory()->getMetadataFor($className); |
|
58 | 4 | if (strpos($meta->rootEntityName, 'Master') !== false |
|
59 | 4 | && $meta->hasField('id') |
|
60 | 4 | && $meta->hasField('name') |
|
61 | 4 | && $meta->hasField('rank') |
|
62 | ) { |
||
63 | 4 | $metadataName = str_replace('\\', '-', $meta->getName()); |
|
64 | 4 | $masterdata[$metadataName] = $meta->getTableName(); |
|
65 | } |
||
66 | } |
||
67 | } |
||
68 | } |
||
69 | |||
70 | $builder |
||
71 | 4 | ->add('masterdata', 'choice', array( |
|
72 | 4 | 'choices' => $masterdata, |
|
73 | 'expanded' => false, |
||
74 | 'multiple' => false, |
||
75 | 'constraints' => array( |
||
76 | 4 | new Assert\NotBlank(), |
|
77 | ), |
||
78 | )) |
||
79 | ; |
||
80 | |||
81 | } |
||
82 | |||
83 | /** |
||
84 | * {@inheritdoc} |
||
85 | */ |
||
86 | 663 | public function getName() |
|
90 | } |
||
91 |