2017-05-04 2 views
0

J'ai créé une extension Backend et étendu fe_user par 4 champs supplémentaires.Champs TCA personnalisés non visibles dans Frontend

J'utilise TYPO3 7.6.13.

Les 4 champs personnalisés sont visibles dans les backendlists, mais les champs ne sont pas disponibles dans frontend.

Y a-t-il une liste "spéciale" que j'ai besoin d'étendre avec mes champs? Ma configuration TCA comme suit.

ExtensionManagementUtility::addTCAcolumns('fe_users', $temporaryColumns); 
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field1', '', 'after:image'); 
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field2', '', 'after:field1'); 
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field3', '', 'after:field2'); 
ExtensionManagementUtility::addToAllTCAtypes('fe_users', 'field4', '', 'after:field3'); 
ExtensionManagementUtility::addToAllTCAtypes(
    'fe_users', 
    'field1, field2, field3, field4' 
); 

Y at-il plus de choses à faire ou ai-je couru dans une sorte de bug?

+0

Pour moi, il ne sait pas exactement ce que la partie « frontend » de votre extension est. Avez-vous un modèle extbase de vos FrontendUsers qui doit être généré dans un modèle Fluid? Dans quel fichier avez-vous placé le code ci-dessus? Je suppose que vous l'avez placé dans 'Configuration/TCA/Overrides/fe_users.php'. Vous avez ajouté field1 - field4 à la ligne 1-4, mais vous les avez également ajoutés à la ligne 5 de votre exemple de code. Apparemment, il y a une autre extension personnalisée qui a ajouté les champs vtiger _..., parce qu'ils ne sont pas des champs par défaut de TYPO3 –

+0

Désolé, je n'étais pas clair à ce sujet. J'ai édité cette chose vtiger, c'était une erreur dans la question. J'ai un modèle extbase pour FrontendUsers et un modèle fluide pour la sortie. Le problème que j'ai est que ce champ1,2,3,4 ne sont pas disponibles. Le code abobe est placé dans Configuration/TCA/Overrides/fe_users.php. La ligne 5 n'est-elle pas nécessaire? – lufi

+0

Avez-vous étendu la table de base de données fe_users avec 'field1' ...? –

Répondre

1

Pour étendre un modèle existant extbase les étapes folllowing sont nécessaires:

  • Ajoutez les champs à votre base de données dans ext_tables.sql
  • Ajoutez les champs à TCA dans Configuration/TCA/Dérogations/table_name.php

Cela devrait être suffisant pour utiliser les champs à l'intérieur du backend TYPO3. Pour frontend le rendu de votre besoin de deux étapes:

  • étendons le modèle Extbase (Propriété, Getter et Setter)
  • Tell extbase d'utiliser votre nouveau modèle TypoScript: config.tx_extbase.persistence.classes

En ce qui concerne Je comprends que vous avez fait les trois premières étapes, mais peut-être raté le dernier?

Exemple complet (ext_typoscript_setup.txt, fichier TypoScript normal doit aussi):

config.tx_extbase { 
    persistence { 
     classes { 
      TYPO3\CMS\Extbase\Domain\Model\FrontendUser { 
       subclasses { 
        0 = YourVendor\YourextNamespace\Domain\Model\YourClass 
       } 
      } 
     } 
    } 
} 

Cela devrait être suffisant pour de nombreuses tables, mais fe_users utilise le champ recordType. Pour configurer ce dont vous avez besoin l'extrait TypoScript suivant (même fichier que la configuration config.tx_extbase):

config.tx_extbase { 
    persistence { 
     classes { 
     YourVendor\YourextNamespace\Domain\Model\YourClass { 
      mapping { 
       tableName = fe_users 
       recordType = 0 
      } 
     } 
    } 
} 

Cela oblige extbase d'ignorer la recordType et utilisez toujours votre modèle.

Documentation/Exemple complet (y compris explication recordType): https://docs.typo3.org/typo3cms/ExtbaseFluidBook/6-Persistence/5-modeling-the-class-hierarchy.html

+0

ext_typoscript_setup.txt l'a fait comme un charme! génial - merci m8! :) – lufi

0

Vous devez ajouter les champs au modèle. Dans votre domaine, vous aurez un référentiel fe_user qui sera mappé sur la table réelle fe_user.

Si vous ajoutez des champs à fe_user, vous devez les ajouter à votre modèle fe_user.

Avez-vous pensé à cela?

+0

Salut Stephan, oui. J'ai créé un modèle pour tous les 4 champs. Classes/Domaine/Modèle/FrontendUser.php. Les deux là, Setter et Getter. Voilà pourquoi je me demande. Je ne peux pas voir ce qui est probablement manquant. – lufi