2017-10-19 11 views
0

Je souhaite que mon extension de calendrier renvoie la sortie XML et iCal tout en évitant d'avoir à utiliser un typoScript supplémentaire (page supplémentaire ou typeNum). Pour ce faire, j'ai créé un contrôleur d'exportation dédié. Le modèle d'extension XML correct est en cours de chargement mais enveloppé dans le modèle de page HTML standard.TYPO3 7: remplacer ou supprimer le modèle de page du contrôleur d'extension

Voici ce que j'ai essayé dans ExportController->listAction(). La ligne suivante fait ce que je l'espérais car il n'y a pas de section HTML <head> dans la sortie:

$GLOBALS['TSFE']->config['config']['disableAllHeaderCode'] = 1; 

Avec la ligne suivante à la place la page est encore complètement analysé, bien que je peux voir les changements dans le f: debug sortie $GLOBALS['TSFE']->tmpl->setup:

$GLOBALS['TSFE']->tmpl->setup['page.']['10.']['file'] = 'path/to/empty/templatefile.xml'; 

Je suis même allé plus loin et a essayé de remplacer tous les paramètres du modèle de mon TypoScript ($GLOBALS['TSFE']->tmpl->setup['page.']['10.']['file.']['stdWrap.']['cObject.']['default.']) - avec le même résultat. Alors que lors de la définition de $GLOBALS['TSFE']->tmpl->setup = null;, une partie du contenu de la page a disparu: tous les résultats sont affichés après le modèle XML de l'extension et au-dessus de tous les éléments de contenu, mais cette partie du modèle est toujours présente.

De plus - et sans succès - j'ai essayé ceci:

$this->objectManager->get(\TYPO3\CMS\Core\Page\PageRenderer::class)->setTemplateFile('path/to/empty/templatefile.xml'); 

est-il un moyen non-TypoScript pour obtenir ce que je veux?

Répondre

1

Le fichier de modèle d'action est résolu avant que votre action de contrôleur ne soit appelée. Le seul moyen que je connaisse est de remplacer les méthodes sur le contrôleur telles que setViewConfiguration et d'ajouter par programme un chemin racine de modèle supplémentaire - mais ceci n'est pas forcément compatible avec votre cas d'utilisation. Il exige que l'objet modèle ne spécifie pas un chemin de modèle et un nom de fichier, il doit uniquement spécifier un nom de modèle et un (ensemble de) chemins racine de modèle.

Votre cas d'utilisation ressemble au chemin du fichier et au nom du fichier dans TS, auquel cas vous ne pouvez pas le remplacer en dehors de TS.

Parfois, accepter de devoir utiliser TS pour certaines choses est simplement la solution la plus simple. C'est comme ça que TYPO3 a été conçu, après tout.

+0

Merci, Claus. Je suis allé pour la solution TS maintenant avec un pageType dédié - aussi parce que je ne comprendrais pas comment utiliser 'setViewConfiguration'. Mon approche est toujours d'en faire autant que possible dans les scripts et d'utiliser TS pour les paramètres vraiment nécessaires seulement, par exemple. quand je veux ajouter une sélection entre plusieurs possibilités. –