|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
|
|
|
Re: [SMARTY] default modifiers vs. foreach & ifHi.
Actually, this is an expected behavior -- even though it does make default_modifiers that much less useful. If you don't want default_modifier behavior to be applied to a specific template variable access, you need to say so in the template eg: {$foo|smarty:nodefaults}. This is especially important for non-scalar values (and specifically, for non-string values) such as arrays that you would rather like to loop through. You might also search the forums for "nodefaults" to see a few discussions (and perhaps even a few solutions/workarounds) on this topic. There was a long discussion about adding a new auto-escaping feature that would only be applied to scalar values, but unfortunately, that didn't get as far as it might have. boots --- Danilo Buerger <danilo@...> wrote: > Hey. > > I am not able to reproduce this. Could you please submit a working > sample? And yes, this should go to the dev list if you think its a bug. > > Bye. > > Artemy Tregoubenko schrieb: > > Hello everyone. > > > > I just tried to use this nice feature of smarty: > > http://smarty.php.net/manual/en/variable.default.modifiers.php > > I think that auto-escaping of all values when outputting them is a great > > idea, so i set $this->default_modifiers = array('escape:"html"'); > > > > It worked nice until I tried to use foreach to iterate over array of > > arrays. I got lots of messages like this: > > Warning: htmlspecialchars() expects parameter 1 to be string, array > > given... > > > > The same warnings were displayed when using "{if $array}". > > > > I looked into compiled templates and found that smarty applies default > > modifiers to all parameters of foreach, including > > "from=$array_of_arrays", and this generates warning. > > > > Hiding warnings is a bad practice, so I'm looking for another solution > > for this problem. By now I hacked _compile_foreach_start and > > _compile_if_tag so that default_modifiers are toggled off in the > > beginning and restored at the end of methods. I understand this is only > > partial solution. > > > > Can anyone, having deeper knowledge of smarty compiler, suggest better > > way to fix this? > > Or should I write about my problem to dev list? > ____________________________________________________________________________________Give spam the boot. Take control with tough spam protection in the all-new Yahoo! Mail Beta. http://advision.webevents.yahoo.com/mailbeta/newmail_html.html -- Smarty Development Mailing List (http://smarty.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php |
|
|
Re: [SMARTY] default modifiers vs. foreach & ifThanks, boots!
I've found your discussion of this topic with andreas and messju. I wish what andreas suggests could be done easily. For now I'll stick to my quick hacks in compiler and patch for escape modifier which ignores all non-scalars. > Hi. > > Actually, this is an expected behavior -- even though it does make > default_modifiers that much less useful. If you don't want > default_modifier > behavior to be applied to a specific template variable access, you need > to say > so in the template eg: {$foo|smarty:nodefaults}. This is especially > important > for non-scalar values (and specifically, for non-string values) such as > arrays > that you would rather like to loop through. > > You might also search the forums for "nodefaults" to see a few > discussions (and > perhaps even a few solutions/workarounds) on this topic. There was a long > discussion about adding a new auto-escaping feature that would only be > applied > to scalar values, but unfortunately, that didn't get as far as it might > have. > > boots > > --- Danilo Buerger <danilo@...> wrote: > >> Hey. >> >> I am not able to reproduce this. Could you please submit a working >> sample? And yes, this should go to the dev list if you think its a bug. >> >> Bye. >> >> Artemy Tregoubenko schrieb: >> > Hello everyone. >> > >> > I just tried to use this nice feature of smarty: >> > http://smarty.php.net/manual/en/variable.default.modifiers.php >> > I think that auto-escaping of all values when outputting them is a >> great >> > idea, so i set $this->default_modifiers = array('escape:"html"'); >> > >> > It worked nice until I tried to use foreach to iterate over array of >> > arrays. I got lots of messages like this: >> > Warning: htmlspecialchars() expects parameter 1 to be string, array >> > given... >> > >> > The same warnings were displayed when using "{if $array}". >> > >> > I looked into compiled templates and found that smarty applies default >> > modifiers to all parameters of foreach, including >> > "from=$array_of_arrays", and this generates warning. >> > >> > Hiding warnings is a bad practice, so I'm looking for another solution >> > for this problem. By now I hacked _compile_foreach_start and >> > _compile_if_tag so that default_modifiers are toggled off in the >> > beginning and restored at the end of methods. I understand this is >> only >> > partial solution. >> > >> > Can anyone, having deeper knowledge of smarty compiler, suggest better >> > way to fix this? >> > Or should I write about my problem to dev list? >> > > > > ____________________________________________________________________________________Give > spam the boot. Take control with tough spam protection in the all-new > Yahoo! Mail Beta. > http://advision.webevents.yahoo.com/mailbeta/newmail_html.html -- Sincerely yours, Arty [ (i): http://arty.name ] -- Smarty Development Mailing List (http://smarty.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php |
| Free Forum Powered by Nabble | Forum Help |