Thanks for the advice. I'd prefer to go with method #1 because that is how I was previously rendering templates with Zend_View. The echo issue still remains, however. If I use ${dojo().onLoadCaptureEnd()} then I get random "1" outputs everywhere because onLoadCaptureEnd() returns true. This is rather unfortunate because dojo information is rendered all over the place in Zend. For example,
default.tpl.html Standard template which should form the skeleton of the view. add.tpl.html Uses Zend_Dojo_Form to output a Dojotized form. menu.tpl.html Uses dijit.Menu to create a nifty menu. If I have default.tpl.html which contains content from add.tpl.thml and menu.tpl.html then I run into a serious issue. Everytime I call ${dojo().onLoadCaptureStart()} or ${dojo().requireModule('some.Dijit.Here')} then Zend will call the __toString() method of the dojo() view helper because PHPTAL prepends everything with an echo. This ends up giving me the complete dojo() output multiple times throughout my template. By the time the template is done rendering I may have included dojo.xd.js from the AOL CDN five or more times. So, while the escape issue is troubling it's not as serious as the problem I've outlined above. I've spent most of the morning trying to come up with a solution and have failed miserably. regards, Kyle -------- Original Message -------- Subject: Re: [PHPTAL] How to disabe ${php: XXXX} forced echo? Date: Tue, 12 Jan 2010 14:49:17 -0000 From: Kornel Lesiński <kor...@aardvarkmedia.co.uk> To: "Template Attribute Language for PHP" <phptal@lists.motion-twin.com> Reply-To: Template Attribute Language for PHP <phptal@lists.motion-twin.com> On 12-01-2010 at 13:25:45 <the...@spiffyjr.me> wrote: >>> Does Dojo expect to get HTML/XML markup as input, or unescaped script? > >> If the latter, you might get nasty surprise when you use '&' or '<'. > > I see what you mean here. I think I'll try to come up with some way to > alter the scripts. Perhaps using macros to insert the the script code > where necessary? I haven't looked at them much but they sound promising. Macros just call PHPTAL code, so you'll get more of the same escaping :) I've checked source code of this dojo view, and it's quite ignorant about escaping, as I expected. It doesn't try to escape the content, just hopes to receive something compatible with whatever can be put in <script> (in HTML) or CDATA (if xhtml mode is enabled). With these assumptions if you used </ or ]]> in your source code, it could break the page. If you used XML without CDATA to capture, the script could fail, etc. (regardless whether you use PHPTAL or not). I think your options are: 1. Use capturing, but stay away from characters that have different meaning in XML/HTML/CDATA/plaintext: < > & 2. Use $dojo->addOnLoad() in PHP code. Give it code escaped appropriately for template markup you generate (best bet is to use HTML5 output mode and only escape </ as <\/) 3. Try <script tal:omit-tag="">/*<![CDATA[*/ instead of <tal:block>. Script element in PHPTAL triggers special-case workaround for text/html, which is closer to what Dojo expects. -- regards, Kornel _______________________________________________ PHPTAL mailing list PHPTAL@lists.motion-twin.com http://lists.motion-twin.com/mailman/listinfo/phptal _______________________________________________ PHPTAL mailing list PHPTAL@lists.motion-twin.com http://lists.motion-twin.com/mailman/listinfo/phptal