[PHPTAL] javascript code messed up
I'm using a tal:block fill-slot=script to fill my macro template with javascript code. However, all are converted to $lt;, which (seems to) cause an error in a for loop for (i=0; i myarray.lenght; i++) { ... } is converted to for (i=0; i lt; myarray.lenght; i++) { ... } and I get an error at that line. Any way to enforce phptal to put the content from the tal:block to be passed as text ? I tried specifying tal:block define-slot=structure script, but that doesn't work... ___ PHPTAL mailing list PHPTAL@lists.motion-twin.com http://lists.motion-twin.com/mailman/listinfo/phptal
Re: [PHPTAL] javascript code messed up
On 02-09-2009 at 14:12:39 Tjerk Meesters tjerk.meest...@gmail.com wrote: Start your script with !-- and end with //-- You must *not* do that in XHTML, because in XHTML this may actually comment out the script. XHTML doesn't have HTML's magic treatment of script and comments in it. -- regards, Kornel ___ PHPTAL mailing list PHPTAL@lists.motion-twin.com http://lists.motion-twin.com/mailman/listinfo/phptal
Re: [PHPTAL] javascript code messed up
On 02-09-2009 at 14:04:15 GRolf ger...@pictureparking.com wrote: I'm using a tal:block fill-slot=script to fill my macro template with javascript code. However, all are converted to $lt;, which (seems to) cause an error in a for loop for (i=0; i myarray.lenght; i++) { ... } is converted to for (i=0; i lt; myarray.lenght; i++) { ... } and I get an error at that line. Apparently you're using text/html mode. Do you use HTML 5 output mode or XHTML? XHTML requires to be escaped as lt; (otherwise it would be ill-formed start of a tag). HTML requires the opposite - it has hardcoded rule that script content is CDATA where entities aren't interpreted. Any way to enforce phptal to put the content from the tal:block to be passed as text ? Strictly speaking it is passed as text, and text in markup has to be escaped. Try wrapping script in fill-slot in /*![CDATA[*/ … /*]]*/. That is a workaround for XHTML served as HTML. -- regards, Kornel ___ PHPTAL mailing list PHPTAL@lists.motion-twin.com http://lists.motion-twin.com/mailman/listinfo/phptal
Re[2]: [PHPTAL] javascript code messed up
sorry, I overlooked your answer here. I was using PHPTal in default output mode, I was not specifying anything. I'm now specifying $phpTal-setOutputMode(PHPTAL::XHTML); My templates have doctype xhtml 1.0 Adding the /*![CDATA[*/ … /*]]*/ works fine (adding !-- -- too, at least in FF) thx! On 02-09-2009 at 14:04:15 GRolf ger...@pictureparking.com wrote: I'm using a tal:block fill-slot=script to fill my macro template with javascript code. However, all are converted to $lt;, which (seems to) cause an error in a for loop for (i=0; i myarray.lenght; i++) { ... } is converted to for (i=0; i lt; myarray.lenght; i++) { ... } and I get an error at that line. Apparently you're using text/html mode. Do you use HTML 5 output mode or XHTML? XHTML requires to be escaped as lt; (otherwise it would be ill-formed start of a tag). HTML requires the opposite - it has hardcoded rule that script content is CDATA where entities aren't interpreted. Any way to enforce phptal to put the content from the tal:block to be passed as text ? Strictly speaking it is passed as text, and text in markup has to be escaped. Try wrapping script in fill-slot in /*![CDATA[*/ … /*]]*/. That is a workaround for XHTML served as HTML. ___ PHPTAL mailing list PHPTAL@lists.motion-twin.com http://lists.motion-twin.com/mailman/listinfo/phptal
Re: [PHPTAL] javascript code messed up
GRolf a écrit : what solution would you propose then ? IMHO javascript has nothing to do in (X)HTML, use external file! ie : script type=text/javascript src=javascript.js/script ___ PHPTAL mailing list PHPTAL@lists.motion-twin.com http://lists.motion-twin.com/mailman/listinfo/phptal