Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

Template Questions

Trouble with If block syntax in templates


Reply

2 Posts   2032 Views

Avatar
scpi

1 October 2009 at 7:25am Community Member, 21 Posts

I've run into a confusing issue with template syntax, maybe somebody can help me out. The following two snippets seem like they should be equivalent, but apparently they're not. There must be a reason why, but I have no idea what it could be. Any thoughts?

In a template, this works:

<% control Parent %>
<% if URLSegment == home %>
   <p>foo</p>
<% end_if %>
<% end_control %>

But this does not:

<% if Parent.URLSegment == home %>
   <p>foo</p>
<% end_if %>

The second example returns a blank page and logs this error:

"PHP Parse error: syntax error, unexpected '}' in /private/var/folders/HJ/HJPYl5CrFjSn7+gK6JPhl2pKtAE/-Tmp-/silverstripe-cache-Applications-MAMP-htdocs/.cache.Applications.MAMP.htdocs.themes.mytheme.templates.Page.ss on line 264"

Avatar
Willr

1 October 2009 at 6:55pm Forum Moderator, 5511 Posts

One note - I didn't think the template worked with == thought it needed to be =.

I think that this is a limitation with the parser. Its not able to evaluate Parent.URLSegment *then* do the comparison, it can only evaluate once per statement. You are probably best doing it with the control then the if.