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.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Conditional Fields in the CMS


Reply


6 Posts   1466 Views

Avatar
quamsta

Community Member, 29 Posts

3 January 2009 at 6:50am

Hi, I have a field in my Page.php getCMSFields function that I want to display on every TOP level page only. I don't want the field to show up in any level higher than 1. Is there a simple variable I can check with an if statement to do this?

Avatar
UncleCheese

Forum Moderator, 4096 Posts

3 January 2009 at 7:14am

Edited: 03/01/2009 7:15am

if(!$this->Parent()) {
$fields->addFieldToTab...
}

Avatar
quamsta

Community Member, 29 Posts

3 January 2009 at 7:21am

Hey, thanks for replying. I found Parent() in the API, earlier but I couldn't figure out how to use it.

I tried your if statement, but it doesn't work. The field doesn't show up anywhere, and when I negate the if-statement you showed me, the field shows up on all pages, regardless of their hierarchy :(

Avatar
UncleCheese

Forum Moderator, 4096 Posts

3 January 2009 at 8:08am

It depends on how you have your architecture set up. Find out the parentID and just use that..

if(!this->Parent())
$fields->addFieldToTab...
else
$fields->addFieldToTab(new LiteralField('foo',$this->ParentID))

if $this->Parent() is returning true, it will return something other than 0 in the LiteralField, in which case, you're not really at the top level. If you want to leave it the way it is, just do

if($this->ParentID == $theID)
//add the field

or you could even do

if($this->Parent()->URLSegment == "some-page"))

you see what I mean..

Avatar
quamsta

Community Member, 29 Posts

3 January 2009 at 9:16am

I see what you mean. I was able to get my code to work with this statement:

if(!$this->Parent) {
      $fields->addFieldToTab(

Thanks for your help!!

Avatar
zim

Community Member, 135 Posts

26 March 2010 at 9:28am

I want to do this but the other way around. that is I have two image fields that I want to display only on top level... not children.

(the fields are declared in page.php)

Specifically on the blog entries in my blog module.

I tried

if(!$this->Level(0)) {

$fields->addFieldToTab("Root.Content.menuImage", new ImageField('menuImage'));
$fields->addFieldToTab("Root.Content.menuImage", new ImageField('menuImageRoll'));

}

but this did not work. fields still appear.

can anyone help?