Fehler bei der Layoutbearbeitung
ich muss das thema leider wieder aufmachen da ich in ein nettes problem beim validtor geraten bin... (HerrB hatte das in ähnlicher form mit der variable $db)
ich setze für ein projekt direkt im layout php code ein.
soweit so gut -> die konstruktion sieht in etwa so aus
und das verursacht leider einen fatal php error in class.htmlvalidator.php -> function cleanHTML
der grund dafür ist an sich auch logisch...
da der code in der cleanHTML mittels eval ausgeführt wird kann inerhalb der funktion img $properties nie zur verfügung stehen...
sämtliche layouts nun nachzubessern und überall ein global reinzubauen wäre etwas problematisch...
ich würde daher eher vorschlagen das eval rauszunehmen bzw die funktion cleanHTML so anzupassen das sämtlicher php code ignoriert wird...
ich hab mich jetzt mal mit preg_replace gespielt und somit sämtlichen php code rausgefiltert...
das einzige was dann natürlich nicht mehr stimmt sind die zeilennummern angabe beim parsen, falls tags vergessen wurden...
jede zeile php code die rausgefiltert wird müsste somit durch -> \n ersetzt werden...
falls eine überprüfung des php codes durchgeführt werden soll müsste das ähnlich gehandhabt werden wie in modTestModule (ich glaub zumindestens das die funktion so heisst) -> also sämtlichen html code mit einer funktionsdefinition function foo () { [HTMLCODE] } ... umschließen...
ich setze für ein projekt direkt im layout php code ein.
soweit so gut -> die konstruktion sieht in etwa so aus
Code: Alles auswählen
<?php
$properties = new PropertyCollection();
function img($idcat) {
global $properties;
return $properties->getValue("idcat", $idcat, "visual", "image");
}
$image = img($idcat);
?>
der grund dafür ist an sich auch logisch...
da der code in der cleanHTML mittels eval ausgeführt wird kann inerhalb der funktion img $properties nie zur verfügung stehen...
sämtliche layouts nun nachzubessern und überall ein global reinzubauen wäre etwas problematisch...
ich würde daher eher vorschlagen das eval rauszunehmen bzw die funktion cleanHTML so anzupassen das sämtlicher php code ignoriert wird...
ich hab mich jetzt mal mit preg_replace gespielt und somit sämtlichen php code rausgefiltert...
das einzige was dann natürlich nicht mehr stimmt sind die zeilennummern angabe beim parsen, falls tags vergessen wurden...
jede zeile php code die rausgefiltert wird müsste somit durch -> \n ersetzt werden...
falls eine überprüfung des php codes durchgeführt werden soll müsste das ähnlich gehandhabt werden wie in modTestModule (ich glaub zumindestens das die funktion so heisst) -> also sämtlichen html code mit einer funktionsdefinition function foo () { [HTMLCODE] } ... umschließen...
*** make your own tools (wishlist :: thx)
die idee mit dem eval ist ja keine schlechte -> mir gefällt diese möglichkeittimo hat geschrieben:mit dem eval sollte primär vermieden werden, daß eben jener PHP-Code für die Validierung in Betracht kommt...
nur momentan ist preg_replace einfach der bessere weg...
*** make your own tools (wishlist :: thx)
fertig ist sie ja...
das mit den zeilen nummern stimmt nur noch nicht...
und ich sitze momentan nicht vor meinem eigenen rechner(stromabschaltung)...
das mit den zeilen nummern stimmt nur noch nicht...
und ich sitze momentan nicht vor meinem eigenen rechner(stromabschaltung)...
*** make your own tools (wishlist :: thx)
sieht bei mir momentan wie folgt aus:
Code: Alles auswählen
function cleanHTML ($html)
{
// remove all php code from layout
$resultingHTML = preg_replace('/<\?(php)?((.)|(\s))*?\?>/i', '', $html);
/* We respect only \n, but we need to take care of windows (\n\r) and other systems (\r) */
$resultingHTML = str_replace("\r\n", "\n", $resultingHTML);
$resultingHTML = str_replace("\r", "\n", $resultingHTML);
return $resultingHTML;
}
*** make your own tools (wishlist :: thx)
ist lieb dass du fragst...timo hat geschrieben:darf ich schließen?
geschlossen
*** make your own tools (wishlist :: thx)