getRegisteredFormsForModelObjectClasses() public static method

public static getRegisteredFormsForModelObjectClasses ( ) : Form[]
return Form[]
 /**
  * @return void
  */
 public function processData()
 {
     $objectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
     /** @var FluxService $fluxService */
     $fluxService = $objectManager->get('FluidTYPO3\\Flux\\Service\\FluxService');
     $fluxService->initializeObject();
     /** @var DataMapFactory $dataMapFactory */
     $dataMapFactory = $objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Mapper\\DataMapFactory');
     $forms = Core::getRegisteredFormsForTables();
     $models = Core::getRegisteredFormsForModelObjectClasses();
     foreach ($forms as $fullTableName => $form) {
         $this->processFormForTable($fullTableName, $form);
     }
     foreach ($models as $modelClassName => $form) {
         $map = $dataMapFactory->buildDataMap($modelClassName);
         $fullTableName = $map->getTableName();
         if (NULL === $form) {
             $form = $this->generateFormInstanceFromClassName($modelClassName, $fullTableName);
         }
         if (NULL === $form->getName()) {
             $form->setName($fullTableName);
         }
         $this->processFormForTable($fullTableName, $form);
     }
 }
 /**
  * @return void
  */
 public function processData()
 {
     if (TYPO3_REQUESTTYPE_INSTALL !== (TYPO3_REQUESTTYPE & TYPO3_REQUESTTYPE_INSTALL)) {
         $objectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');
         $objectManager->get('FluidTYPO3\\Flux\\Provider\\ProviderResolver')->loadTypoScriptConfigurationProviderInstances();
         $forms = Core::getRegisteredFormsForTables();
         $models = Core::getRegisteredFormsForModelObjectClasses();
         $packages = array_keys(Core::getRegisteredPackagesForAutoForms());
         foreach ($packages as $packageName) {
             list($vendorName, $extensionName) = explode('.', $packageName);
             $namespace = $vendorName . '\\' . $extensionName . '\\Domain\\';
             $extensionKey = ExtensionNamingUtility::getExtensionKey($packageName);
             $folder = ExtensionManagementUtility::extPath($extensionKey, 'Classes/Domain/Form/');
             $files = glob($folder . '*Form.php');
             $files = FALSE === $files ? array() : $files;
             foreach ($files as $fileName) {
                 $basename = pathinfo($fileName, PATHINFO_FILENAME);
                 $formClassName = $namespace . 'Form\\' . $basename;
                 $modelClassName = $namespace . 'Model\\' . substr($basename, 0, -4);
                 $fullTableName = $this->resolveTableName($modelClassName);
                 $models[$modelClassName] = $formClassName::create();
                 $models[$modelClassName]->setName($fullTableName);
                 $models[$modelClassName]->setExtensionName($packageName);
             }
         }
         foreach ($forms as $fullTableName => $form) {
             $this->processFormForTable($fullTableName, $form);
         }
         foreach ($models as $modelClassName => $form) {
             $fullTableName = $this->resolveTableName($modelClassName);
             if (NULL === $form) {
                 $form = $this->generateFormInstanceFromClassName($modelClassName, $fullTableName);
             }
             if (NULL === $form->getName()) {
                 $form->setName($fullTableName);
             }
             $this->processFormForTable($fullTableName, $form);
         }
     }
 }
Example #3
0
 /**
  * @test
  */
 public function canGetRegisteredFormsForModelClassNames()
 {
     $fakeClass = 'MyFakeClass';
     $form = Form::create();
     Core::registerFormForModelObjectClassName($fakeClass, $form);
     $this->assertSame($form, Core::getRegisteredFormForModelObjectClass($fakeClass));
     $this->assertContains($form, Core::getRegisteredFormsForModelObjectClasses());
     Core::unregisterFormForModelObjectClassName($fakeClass);
 }
Example #4
0
 /**
  * Resolves a list (array) of instances of Form implementations
  * from the provided package names, or all package names if empty.
  *
  * @param array $packageNames
  * @return Form[]
  */
 public function resolveDomainFormClassInstancesFromPackages(array $packageNames = NULL)
 {
     $packageNames = NULL === $packageNames ? Core::getRegisteredPackagesForAutoForms() : $packageNames;
     $models = (array) Core::getRegisteredFormsForModelObjectClasses();
     foreach ($packageNames as $packageName) {
         $classNames = $this->resolveClassNamesInPackageSubNamespace($packageName, 'Domain/Form', 'Form');
         foreach ($classNames as $formClassName) {
             // convert form class name to model class name by convention
             $modelClassName = str_replace('\\Domain\\Form\\', '\\Domain\\Model\\', $formClassName);
             $modelClassName = substr($modelClassName, 0, -4);
             $fullTableName = $this->resolveDatabaseTableName($modelClassName);
             $models[$modelClassName] = $formClassName::create();
             $models[$modelClassName]->setName($fullTableName);
             $models[$modelClassName]->setExtensionName($packageName);
         }
     }
     return $models;
 }