Jump to:

3432 Posts in 1058 Topics by 734 members

Data Model Questions

SilverStripe Forums » Data Model Questions » User Population of DropDownField

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

Page: 1
Go to End
Author Topic: 1712 Views
  • taligent
    Avatar
    Community Member
    18 Posts

    User Population of DropDownField Link to this post

    I am getting started with silverStripe and need a good kick in the butt. I am trying to figure out how to add a field in the admin area that page editors can use to enter in a description and a url. I then want to populate a DropDownField in the front end with the description so that site visitors can click the dropdownfield and select a link to go to a new section of the site or to an external site.

    I have searched quite a bit through the forums and docks, but can't seem to get started on this. Anyone able to get me started?

  • Pigeon
    Avatar
    Community Member
    243 Posts

    Re: User Population of DropDownField Link to this post

    Hmmm, it's a bit difficult to know exactly what you are getting at, but using the 'toDropdownMap' function of DataObjects might help.

    Something like:

    $do = DataObject::get('Page');
    $dropdownArray = $do->toDropdownMap('ID','Description');
    /* Produces array like:
    array(
    [ID] => [Description],
    ....
    );
    */
    $field = new DropdownField('[Label]','[FieldName]',$dropdownArray);

    But it depends a bit on how you then want to have the links working, etc.

    There is another way, which is to just do a control loop through the Pages and then list out all of the descriptions/links, etc:

    class Page extends SiteTree {
    ...
    function getAllPages() {
    return DataObject::get('Page');
    }
    }


    (in Page.ss)

    <label for="myDropdown">A dropdown</label>
    <select name="myDropdown" id="myDropdown">
    <% control Pages %>
    <option value="$ID">$Desctiption</option>
    <% end_control %>
    </select>

    Hope that helps! Sorry if there are any sloppy mistakes or it completely misses what you were getting at.

  • taligent
    Avatar
    Community Member
    18 Posts

    Re: User Population of DropDownField Link to this post

    Thanks for the reply. My description was a bit vague. For a visual of what I want to do, go to www.send.hr. In the right side of that page is a dropdownfield populated with links. I need to replicate that into SilverStripe. But I want the site editor to maintain the links in the backend rather than hard coding them into an array in the php.

    So I need two things. First, how do I set up an entry form in the back end so that site maintainers can enter in multiple descriptions and urls. Second, how do I read that information into a dropdownfield on the web page so visitors can select the links.

    Hopefully that is a little clearer.

  • Pigeon
    Avatar
    Community Member
    243 Posts

    Re: User Population of DropDownField Link to this post

    Hmmm... Ok. Maybe this is what you want:

    Set up a DataObject that is 'DropDownElement' and that would have: PageLink and Name.

    The Name would be Text and the Object would has_one Page. You can then use the SimpleSiteTreeDropdownField to allow the user to select a page

    Something like (sorry for syntax errors):

    class DropDownElement extends DataObject {
    $db = array (
    'Description' => 'VarChar(255)'
    );
    $has_one = array ('Page' => 'Page');

    function getCMSFields_forPopup() {
    ...
    $fields = new SimpleSiteTreeDropdownField('PageID', 'Page Link','SiteTree');
    $fields = new TextField('Description');
    ...
    }
    ...
    }

    You would then control through all the data objects and create the dropdown in the front end.

    I'm doing this all from memory and really needs more digging, but i hope that helps.

    1712 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.