TYPO3-Testaccount
Testen Sie die aktuellste TYPO3-Version kostenlos und unverbindlich für einen Monat!

Jetzt testen!

Schulungen

FlexForm Konfiguration leer in eigenem Page Type?


Autor Nachricht
Verfasst am: 05. 08. 2008 [00:16]
SeveQ
Themenersteller
Dabei seit: 31.05.2005
Beiträge: 101
Hi Leute,

ich hab für einen Ajax Request einer eigenen Extension folgendermaßen eine Response Page gebaut.

EXT:blubb/pi1/static/setup.txt:
TYPOSCRIPT
includeLibs.blubbediblubb = EXT:blubb/pi1/class.tx_blubb_pi1.php
 
blubb_page >
blubb_page = PAGE
blubb_page {
	typeNum = 12345
	config {
		language = de
		locale_all = de_DE
		disableAllHeaderCode = 1
		sendNoCacheHeaders = 1
		metaCharset = utf-8
		no_cache = 1
		admPanel = 0
		xhtml_cleaning = 0
		additionalHeaders = Content-Type:text/plain;charset=utf-8
	}
 
	10 < plugin.tx_blubb_pi1
	10.userFunc = tx_blubb_pi1->getAjaxResponse
}


Das funktioniert soweit auch schon sehr gut. Bis auf eine Sache:

ich hab im Kontext dieser Seite aus irgendeinem Grund keine Werte aus der FlexForm Konfiguration zur Verfügung.

Ich lese die FlexForm Config in einer eigenen Funktion ein.

PHP
function initFF()
	{
		$content = "";
 
		$this->pi_initPIflexForm();
		$this->lConf = array();
		$piFlexForm = $this->cObj->data['pi_flexform'];
 
		foreach($piFlexForm['data'] as $sheet => $data)
		{
			foreach( $data as $lang => $value )
			{
				foreach( $value as $key => $val )
				{
					$this->lConf[$key] = $this->pi_getFFvalue($piFlexForm, $key, $sheet);
				}
			}
		}
 
		return $content;
	}


Im Kontext der Hauptseite funktioniert das zu 100%. Im Kontext der Response Seite ist $this->cObj->data['pi_flexform']; nicht existent.

Wie kommt das? Und wie erreiche ich, daß auch im Kontext der Response Page die Konfiguration zur Verfügung steht?

Danke

Grüße,
Hendrik
ProfilICQ
Verfasst am: 05. 08. 2008 [02:28]
SeveQ
Themenersteller
Dabei seit: 31.05.2005
Beiträge: 101
Mir isses gerade wie Schuppen von den Augen gefallen:

weil es gar keine Konfiguration für diese Page gibt. Die vorgenommenen Einstellungen sind nicht für das Plugin global, sondern nur für ein spezifisches Contentitem gültig...

Oh man! banghead.gif banghead.gif banghead.gif
ProfilICQ
Verfasst am: 05. 08. 2008 [06:10]
just2b
TYPO3-Gott
Moderator
Dabei seit: 04.08.2004
Beiträge: 19047
und damit du zugriff auf das TS hast, müsstest du noch den Parameter $conf übergeben, so wie in deinem plugin

georg

=> TYPO3 - inspiring people to share <= aber kein Support per PM!

=> in eigener Sache: · inspiring people to share your location Trag dich in die TYPO3 Weltkarte ein und zeige wie groß die TYPO3 Community ist - vielen Dank!<=
ProfilWWW
Verfasst am: 03. 03. 2009 [15:48]
michelfontaine
Dabei seit: 24.08.2004
Beiträge: 161
Ich habe das gleiche Problem und die Schuppen sind bei mir noch auf den Augen. Was bedeutet denn

Die vorgenommenen Einstellungen sind nicht für das Plugin global, sondern nur für ein spezifisches Contentitem gültig
?

Warum steht $this->cObj->data['pi_flexform'] in meinem Plugin nur bei Pagetype 0 zur Verfügung (während andere Werte aus dem data-Array auch bei anderen Pagetypes zur Verfügung stehen)? Wo wird die Auswahl getroffen? Und wo muss ich $conf übergeben? Im TS oder wo? Bin leider aus Euren Aussagen nicht schlau geworden...

Viele Grüße
Mic

Es gibt keinen Standart!
http://www.k-faktor.com/standart/
Profil
Verfasst am: 04. 05. 2010 [17:08]
tylfaril
Dabei seit: 04.05.2010
Beiträge: 2
hi.

ich hab leider ein ähnliches, um nicht zu sagen identes problem.

ich hab auf meiner hauptseite einen datenbankzugriff der von einem paramter aus einer flexform abhängig ist.

mache ich dann einen ajax call kann die flexform nicht mehr initialisiert werden und meine abfrage geht in der datenbank ins leere.
mein typoscript für meine extension sieht so aus:
TYPOSCRIPT
#AJAX call
ajaxCall = PAGE
 
ajaxCall {
  typeNum = 5001
  10 < plugin.tx_infproject_pi1
  10.pid_list >
  10.pid_list = 37
  config {
    disableAllHeaderCode = 1
    xhtml_cleaning = 0
    admPanel = 0
    debug = 0
    no_cache = 1
  }
}

jetzt soll die 37 aber aus der aktuellen $conf['pidList'] kommen.

bei meinem AjaxCall füge ich dann der URL "&type=5001" hinzu.

[javascript]
$.ajax({
type: "POST",
url: document.URL + '&type=5001',
[/javascript]

mir ist leider nicht klar wie ich den Parameter $conf übergeben soll, so wie just2b meinte bzw wie ich die Konfiguration für mein Objekt mit der typeNum 5001 von meiner hauptseite übernehmen kann.

einen weiteren Lösungsansatz habe ich mit eID unternommen.
obwohl ich den noch nicht zum Laufen gebracht habe und daher nicht weiß ob mir auf diesem weg die $this->piVars bzw $conf erhalten bleibt.

bei meiner JS behandlung füge ich dann ein "&eID=ajaxCall" hinzu.
[javascript]
$.ajax({
type: "POST",
url: document.URL + '&eID=ajaxCall',
[/javascript]

in meiner ext_localconf.php hab ich ebenfalls die Zeile
PHP
$GLOBALS ['TYPO3_CONF_VARS']['FE']['eID_include']['ajaxCall'] = 'EXT:inf_project/ajaxCall.php';

hinzugefügt.

jedoch gibt mein php script ajaxCall.php
(
PHP
<?php
echo "ajaxCall.php"; ?>
)
nichts zurück.


Hat jemand Erfahrungen gemacht?
Oder sogar eine Lösung?

Ich bräuchte nach dem Ajax Aufruf einen Zugriff auf die Daten in der FlexForm.

lg
Matthias



Profil
Verfasst am: 18. 07. 2011 [11:45]
Shark1982
Dabei seit: 29.06.2006
Beiträge: 43
Gibts es denn dafür jetzt eine Möglichkeit ? Stehe vor dem gleichen Problem.

Zitat:
und damit du zugriff auf das TS hast, müsstest du noch den Parameter $conf übergeben, so wie in deinem plugin


Wo genau muss ich den Parameter $conf übergeben in PHP oder TS steh auf dem Schlauch ?

Mitglied in der www.mediengarage.de
ProfilWWW
Verfasst am: 21. 07. 2011 [14:26]
tylfaril
Dabei seit: 04.05.2010
Beiträge: 2
also bei mir rufe ich einfach

$this->initPIflexForm();

auf
ich schätze das habe ich aus der tt_news:
PHP
$this->pi_initPIflexform();
		// Copy the flexform data to a new object
		$piFlexForm = $this->cObj->data['pi_flexform'];
 
		// Combine FlexForm and TS values
		if ($piFlexForm['data']) {
			foreach ($piFlexForm['data'] as $sheet => $data) {
				foreach ($data as $lang => $value) {
					foreach ($value as $key => $val) {
						$val = $this->pi_getFFvalue($piFlexForm, $key, $sheet);
						/* If value exists in Flexform, overwrite existing Typoscript value or create new array entry */
						if ($val != null) {
							$this->conf[$key] = $val;
						}
					}
				}
			}
		}

die flexform daten sind dann richtig gefüllt
wenn der ajaxCall richtig eingerichtet ist sollten die variablen normal befüllt sein und zur verfügung stehen.
oder war das nicht genau das problem?
Profil