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.

Form Questions

TreeDropdownField: unselect selected value


Go to End
Reply

21 Posts   5561 Views

Avatar
martimiz

8 March 2009 at 4:40am (Last edited: 8 March 2009 4:41am), Forum Moderator, 1091 Posts

I would like to use the TreeDropdownField as an optional field in a form, so I want to be able to 'unselect' a selected page. Is this possible? Is there some way to add a 'none' kind of option?

Avatar
andy_steel

12 March 2009 at 8:33am Community Member, 31 Posts

I would also like to do this. I've had a look at the TreeDropdownField class and can't see any easy way of doing it.

Avatar
MarijnKampf

25 November 2009 at 4:09am (Last edited: 18 June 2010 3:24am), Community Member, 164 Posts

Edit: [url=http://www.silverstripe.org/form-questions/show/255686?start=8#post286686]Use updated code instead[/url].

Came across the same issue. My solution was to extend the TreeDropdownField and adding the optional field there. You can use the OptionalTreeDropdownField where ever you would normally use the TreeDropdownField.

Simply create a file OptionalTreeDropdownField.php in your \mysite\code\ folder with the following code:

<?php
/**
* TreeDropdown-like field that gives you a tree of items including an empty field, using ajax.
* Author: Marijn Kampf www.exadium.com
* Date: 24 Nov 2009
* Version: 1.0
*/
class OptionalTreeDropdownField extends TreeDropdownField {
   function gettree() {
      echo '<ul class="tree"><li id="" class="l"><a>' . _t('OptionalTreeDropdownField.NONE', "(None)", PR_MEDIUM, 'Non selected value of a dropdown') . '</a>';
      parent::gettree();
      echo '</ul>';
   }
}

?>

Usage example:

      $fields->addFieldToTab("Root.Content.Sitemap", new OptionalTreeDropdownField('BasePage', "Base Page", 'SiteTree', 'URLSegment', 'MenuTitle'));

I felt that this would be the best way to achieve this, but there may be a better solution possible.

Avatar
andy_steel

25 November 2009 at 5:09am Community Member, 31 Posts

Good work Marijn. :-)

Avatar
frabraha

10 March 2010 at 3:43am Community Member, 49 Posts

I have some problems with the OptionalTreeDropdownField.
It doesn't save the value when I try to publish it. It just says Choose when I refresh the page.

With the normal TreeDropDownField you just write 'BasePageID', "Base Page", 'SiteTree' and it all works fine, but that doesn't work here.

Avatar
MarijnKampf

10 March 2010 at 3:50am Community Member, 164 Posts

frabraha, if you use TreeDropDownField it works, but once you change your code to OptionalTreeDropDownField it doesn't?

Can you post a sample of your code?

Avatar
frabraha

10 March 2010 at 3:56am Community Member, 49 Posts

public static $has_one = array(   
'InternLink' => 'SiteTree',);   

$fields->addFieldToTab('Root.Content.Main', new OptionalTreeDropdownField("InternLinkID", "Velg hvor artikkelen skal linkes til", 'SiteTree', 'URLSegment', 'MenuTitle'));

Avatar
MarijnKampf

10 March 2010 at 4:12am Community Member, 164 Posts

Are you sure you're not getting an error when you change it to:

$fields->addFieldToTab('Root.Content.Main', new TreeDropdownField("InternLinkID", "Velg hvor artikkelen skal linkes til", 'SiteTree', 'URLSegment', 'MenuTitle'));

Go to Top