21493 Posts in 5784 Topics by 2622 members
| Go to End | Next > | |
| Author | Topic: | 1239 Views |
-
Page property access in Controller

27 May 2011 at 12:06am Last edited: 27 May 2011 9:28am
Hi guys,
Okay, so, I've decided, to make life easy for the site admin, to default custom properties in a new page to match that of the home page. This way, the page doesn't look nasty if they've forgotten to add anything. This works great for single items, as I can just use
<% if Property %>
$Property
<% else %>
<% control Page(home) %>
$Property
<% end_control %>
<% end_if %>However, a problem arises if the property is an array, as I can't nest control statements, and using
<% control Page(home).Property %>
doesn't work. The question is, then; how can I use the property of some other page in a control statement in a template?
Thanks,
Lee -
Re: Page property access in Controller

27 May 2011 at 12:17am
how about replacing...
<% control Page(home).Property %>
with...
<% control Page(home) %>
<% if Property %>
do stuff
<% end_if %>
<% end_control %>I'd expect that to work...
-
Re: Page property access in Controller

27 May 2011 at 9:25am
Hi Swaiba,
Yes, that would work if the property was a string or somesuch, but it's an array of items (DataObjects), thus I'd need to use "control" to iterate through it. As controls can't be nested, it means I can't access the data.
Thanks for commenting, though
Lee -
Re: Page property access in Controller

27 May 2011 at 7:36pm Last edited: 27 May 2011 7:39pm
As controls can't be nested??
I don't follow that, I think I missed the "an array" part. A simple solution is to place your array into a DataObjectSet...
<% control Page(home) %>
<% if PropertyAsDataObjectSet %>
<% control PropertyAsDataObjectSet %>
do stuff
<% end_control %>
<% end_if %>
<% end_control %>function PropertyAsDataObjectSet() {
$dos = null;
if (count($this->Property)) {
$dos = new DataObjectSet();
foreach ($this->Property as $do) {
$dos->push($do);
}
}
return $dos;
} -
Re: Page property access in Controller

27 May 2011 at 8:19pm
Hi Swaiba,
Thanks, but I can't do that either, because I'd still be nesting control expressions, which isn't allowed. Otherwise, I could use it as it
Regards,
Lee -
Re: Page property access in Controller

27 May 2011 at 8:31pm
because I'd still be nesting control expressions, which isn't allowed
How is that? Where did you get that idea?
I nest controls all the time... -
Re: Page property access in Controller

27 May 2011 at 8:59pm
Doh! And therein lies my problem
I'm not sure where I read that, but I've been avoiding it like soap on the floor of a communal shower.
Thanks buddy, I'll give that a go
Lee
-
Re: Page property access in Controller

27 May 2011 at 9:09pm Last edited: 27 May 2011 9:10pm
Good luck Lee, all silverstripe Bristolians together!
| 1239 Views | ||
| Go to Top | Next > |


