Zum Inhalt springen

Einer userFunc das Ergebnis aus COA_INT übergeben?

Erstellt am 11. Oktober 2012 · 5 Antworten · letzte Antwort am 22. Oktober 2012

Tags: PHP, Frage

typonewbe ·

Hallo,

Folgendes Problem ich habe eine userFunc

lib.mainMenu = USER
lib.mainMenu {
userFunc = user_domHelper->manipulateMenu
userFunc {
 menu = COA_INT
 menu {
   10 = HMENU
   10 {
     #hier das erste Menu
   }
   20 = HMENU
   20 {
    #hier das zweite Menu
   }
   wrap = |
 }
}

Was ich gerne möchte bzw. benötige ist das Ergebnis innerhalb des userfunc.menu.

Ohne userfunc wird ein Menü gerendert ich wollte jetzt quasi das Ergebnis der HTML Code der generiert wird mainpulieren. Wenn ich aber in meiner userfunction folgendes mache:

function manipulateMenu($content,$conf) {
$conf = $conf['userFunc.'];
$test = $this->cObj->cObjGetSingle($conf['menu'],$conf['menu.']);
t3lib_div::devlog('--- manipulateMenu ---', 'userFunc', 0, ' Menu = '.print_r($test ,TRUE));
}

steht in meinem devlog folgendes

Menu =

statt des erwarten html-Codes des Menüs

<ul><li><a ...></a></li></ul>

was mache ich falsch immer wenn ich in dem zusammenhang google bemühe finde ich beispiele mit cObjGetSingle wenn ich dem menu einfach nur TEXT gebe

menu = TEXT
menu.value = hier soll htmlcode stehen
menu.wrap =<span>|</span>

Dann macht er das auch Ergebnis ist dann im log
Menu = <span>hier soll htmlcode stehen</span>

Warum klappt das net mit dem COA_INT?

Danke schon mal im Voraus für die Mühe

Gruß typonewbe

typonewbe ·

Hi,

ich hab nu eine Zwischenlösung gefunden.

da ich nur das HMENU aus der 20 benötige habe ich mein TS abgeändert.

lib.mainMenu = COA_INT
lib.mainMenu {
  10 = HMENU
  #...
  20 = USER
  20 {
   userFunc = ...
   userFunc {
     menu = HMENU
     #...
   }
  }

}

So rendert er das HMENU direkt, der PHP Code bleibt daher unberührt.
Dennoch würde ich gerne wissen was ich falsch mache bzw. wie man das COA_INT rendern muss

Gruß typonewbe

Unbekannter Benutzer ·

USER_INT wird später ausgewertet weil eben nicht gecached, deine "Zwischenlösung" sollte soweit schon gut sein. Eigentlihc noch sinnvoller wäre, wenn du deine Methode wie ein "Plugin" aufbaust und als USER_INT ansprichst und dann darin einfach das Menu renderst und manipulierst.

typonewbe ·

Hallo kitsunet,

danke für deine schnelle Antwort. Aber wie meinst du das mit wie Plugin aufbauen?

Soll ich eher eine Extension schreiben und über

plugin.myext = USER

Darauf zugreifen oder bezieht sich die Äusserung auf die Struktur meiner Funktion?

Danke schon mal im Voraus

Gruß typonewbe

Unbekannter Benutzer ·

Korrekt, genau das meine ich. Extension schreiben und darüber zugreifen. Die Extension kann dann USER_INT sein und du kannst dir das Menu ja über CObject innerhalb des PHP Codes rendern lassen. Dann manipulieren und zurückgeben.