|
Smarty
WARNING: All discussion is moving to https://reddit.com/r/smarty, please go there! This forum will be closing soon. |
|
View previous topic :: View next topic |
Do you find these new tags to be a good idea? |
|
Total Votes : 0 |
|
Author |
Message |
manixrock Smarty n00b
Joined: 16 Aug 2010 Posts: 1
|
Posted: Mon Aug 16, 2010 8:48 am Post subject: {try} and {finally} blocks for nested conditional code |
|
|
Since HTML markup almost always requires both an opening and a closing tag, and such code is sometimes dependent upon a condition, it is too often that code duplication for the opening and closing tags occurs:
Code: |
{if $someContition && $someObject == 37 && $addAsLink}
<a href="http://example_com/">
{/if}
some text
{if $someContition && $someObject == 37 && $addAsLink}
</a>
{/if}
|
And for cases when you have multiple cases for the surrounding code, or nested cases and conditions, the code becomes very ugly and hard to read. What I'm proposing is a tag that avoids such code duplication:
Code: |
{try $someContition && $someObject == 37 && $addAsLink}
<a href="http://example_com/">
{finally}some text{/finally}
</a>
{/try}
|
The {try} block will print normally if the condition is true, but if false will only print any contained {finally} blocks. This emulates standard try/finally code behavior of languages, and should be familiar to most developers.
Nesting is possible:
Code: |
{try $someContition && $someObject == 37 && $addAsLink}
<a href="http://example_com/">
{try $highlight}
<b>
{finally}some text{/finally}
</b>
{/try}
</a>
{/try}
|
Sometimes you need to alternate between different conditions, and even have a default value (if all else fails):
Code: |
{try $someContition && $someObject == 37 && $addAsLink}
<a href="http://example_com/">
{catchtry $hard_highlight}
<b>
{catchtry $simple_highlight}
<i>
{catch}
<span class="simple">
{finally}some text{/finally}
</span>
{/catch}
</i>
{/catchtry}
</b>
{/catchtry}
</a>
{/try}
|
The three new tags {try}, {catchtry} and {catch} are the functional equivalent of {if}, {elseif} and {else}.
I think this would save a lot of code, and make markup cleaner and more functional.
As for implementation, it should not be too hard if done correctly. I could provide assistance if anyone is interested. |
|
Back to top |
|
mohrt Administrator
Joined: 16 Apr 2003 Posts: 7368 Location: Lincoln Nebraska, USA
|
Posted: Mon Aug 16, 2010 5:15 pm Post subject: |
|
|
that would be confusing has hell to a typical html designer. you can implement the try stuff yourself if you really want it. everything here can be accomplished with if/else blocks, and maybe some help from includes or template inheritance. |
|
Back to top |
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|