Jump to:

3439 Posts in 1028 Topics by 869 members

Template Questions

SilverStripe Forums » Template Questions » Newbe and template question

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

Page: 1
Go to End
Author Topic: 437 Views
  • jonny76
    Avatar
    Community Member
    1 Post

    Newbe and template question Link to this post

    Hi all,

    Just started using silverstripe and have come across a problem and cant find the solution, wondered if anyone could help?

    I have used a pre built module for creating custom menu's.

    http://www.silverstripe.org/all-other-modules/show/11290?start=0

    This adds the adds simple custom menus. I have then extended the a custom HomePage Class to be able to save a menu to a page.

    Ok this all works great.

    Next In the AboutPage_controller Class Ive added this function

    public function returnRightMenu()
    {
    $menuID = $this->dataRecord->RMenuID;
    if(DataObject::get_one('CustomMenuHolder',"ID = '$menuID'"))
    {

    $menu = DataObject::get_one('CustomMenuHolder',"ID = '$menuID'");

    if($menu->Order)
    $order = explode(',', $menu->Order);

    $pages = new DataObjectSet();

    if(isset($order) && is_array($order) && count($order) > 0)
    {
    foreach($order as $item)
    {
    $pages->push($menu->Pages()->find('ID',$item));
    }
    }
    else
    {
    foreach($menu->Pages() as $item)
    {
    $pages->push($item);
    }
    }

    if($pages->exists())

    return $pages;
    }
    }

    This runs off and retrieves the the menu data which is returned as array of page data objects.

    Next. On the AboutPage.ss file i have created a custom controller

    <% control returnRightMenu %>

    $Title<br />

    <% end_control %>

    This throws a white screen and in the error logs i get

    PHP Fatal error: Call to a member function obj() on a non-object in

    If i replace the "$Title" part with static "Title" it loops throught the correct amount of menu options and displays the word Title the corect amount of times.

    My question is, how can I get it to display the dynamic content from the controller?

    I assume $Title would work and it doesnt. I also did a print_r of what is returned from the returnRightMenu() function and got this

    DataObjectSet Object
    (
    [items:protected] => Array
    (
    [0] =>
    [1] => Page Object
    (
    [destroyed] =>
    [record:protected] => Array
    (
    [ClassName] => Page
    [Created] => 2011-11-22 17:10:44
    [LastEdited] => 2011-11-22 17:10:55
    [URLSegment] => technology
    [Title] => Technology
    [MetaTitle] => Technology
    [ShowInMenus] => 1
    [ShowInSearch] => 1
    [ProvideComments] => 0
    [Sort] => 3
    [HasBrokenFile] => 0
    [HasBrokenLink] => 0
    [Status] => Published
    [CanViewType] => Inherit
    [CanEditType] => Inherit
    [Version] => 2
    [ParentID] => 2
    [ID] => 20
    [RecordClassName] => Page
    )

    [changed:private] => Array
    (
    )

    [original:protected] => Array
    (
    [ClassName] => Page
    [Created] => 2011-11-22 17:10:44
    [LastEdited] => 2011-11-22 17:10:55
    [URLSegment] => technology
    [Title] => Technology
    [MetaTitle] => Technology
    [ShowInMenus] => 1
    [ShowInSearch] => 1
    [ProvideComments] => 0
    [Sort] => 3
    [HasBrokenFile] => 0
    [HasBrokenLink] => 0
    [Status] => Published
    [CanViewType] => Inherit
    [CanEditType] => Inherit
    [Version] => 2
    [ParentID] => 2
    [ID] => 20
    [RecordClassName] => Page
    )

    [components:protected] =>
    [brokenOnDelete:protected] =>
    [brokenOnWrite:protected] =>
    [componentCache:protected] =>
    [iteratorPos:protected] =>
    [iteratorTotalItems:protected] =>
    [failover:protected] =>
    [customisedObject:protected] =>
    [objCache:private] => Array
    (
    )

    [class] => Page
    [extension_instances:protected] => Array
    (
    [CustomMenuDecorator] => CustomMenuDecorator Object
    (
    [owner:protected] =>
    [ownerBaseClass:protected] => SiteTree
    [ownerRefs:private] => 0
    [class] => CustomMenuDecorator
    )

    [Hierarchy] => Hierarchy Object
    (
    [markedNodes:protected] =>
    [markingFilter:protected] =>
    [_cache_numChildren:protected] =>
    [owner:protected] =>
    [ownerBaseClass:protected] => SiteTree
    [ownerRefs:private] => 0
    [class] => Hierarchy
    )

    [Versioned] => Versioned Object
    (
    [stages:protected] => Array
    (
    [0] => Stage
    [1] => Live
    )

    [defaultStage:protected] => Stage
    [liveStage:protected] => Live
    [migratingVersion] =>
    [owner:protected] =>
    [ownerBaseClass:protected] => SiteTree
    [ownerRefs:private] => 0
    [class] => Versioned
    )

    )

    )

    [2] => Page Object
    (
    [destroyed] =>
    [record:protected] => Array
    (
    [ClassName] => Page
    [Created] => 2011-11-22 17:11:28
    [LastEdited] => 2011-11-22 17:11:38
    [URLSegment] => excellence
    [Title] => Excellence
    [MetaTitle] => Excellence
    [ShowInMenus] => 1
    [ShowInSearch] => 1
    [ProvideComments] => 0
    [Sort] => 4
    [HasBrokenFile] => 0
    [HasBrokenLink] => 0
    [Status] => Published
    [CanViewType] => Inherit
    [CanEditType] => Inherit
    [Version] => 2
    [ParentID] => 2
    [ID] => 22
    [RecordClassName] => Page
    )

    [changed:private] => Array
    (
    )

    [original:protected] => Array
    (
    [ClassName] => Page
    [Created] => 2011-11-22 17:11:28
    [LastEdited] => 2011-11-22 17:11:38
    [URLSegment] => excellence
    [Title] => Excellence
    [MetaTitle] => Excellence
    [ShowInMenus] => 1
    [ShowInSearch] => 1
    [ProvideComments] => 0
    [Sort] => 4
    [HasBrokenFile] => 0
    [HasBrokenLink] => 0
    [Status] => Published
    [CanViewType] => Inherit
    [CanEditType] => Inherit
    [Version] => 2
    [ParentID] => 2
    [ID] => 22
    [RecordClassName] => Page
    )

    [components:protected] =>
    [brokenOnDelete:protected] =>
    [brokenOnWrite:protected] =>
    [componentCache:protected] =>
    [iteratorPos:protected] =>
    [iteratorTotalItems:protected] =>
    [failover:protected] =>
    [customisedObject:protected] =>
    [objCache:private] => Array
    (
    )

    [class] => Page
    [extension_instances:protected] => Array
    (
    [CustomMenuDecorator] => CustomMenuDecorator Object
    (
    [owner:protected] =>
    [ownerBaseClass:protected] => SiteTree
    [ownerRefs:private] => 0
    [class] => CustomMenuDecorator
    )

    [Hierarchy] => Hierarchy Object
    (
    [markedNodes:protected] =>
    [markingFilter:protected] =>
    [_cache_numChildren:protected] =>
    [owner:protected] =>
    [ownerBaseClass:protected] => SiteTree
    [ownerRefs:private] => 0
    [class] => Hierarchy
    )

    [Versioned] => Versioned Object
    (
    [stages:protected] => Array
    (
    [0] => Stage
    [1] => Live
    )

    [defaultStage:protected] => Stage
    [liveStage:protected] => Live
    [migratingVersion] =>
    [owner:protected] =>
    [ownerBaseClass:protected] => SiteTree
    [ownerRefs:private] => 0
    [class] => Versioned
    )

    )

    )

    )

    [odd:protected] => 0
    [first:protected] => 1
    [last:protected] =>
    [current:protected] =>
    [pageStart:protected] =>
    [pageLength:protected] =>
    [totalSize:protected] =>
    [paginationGetVar:protected] => start
    [iteratorPos:protected] =>
    [iteratorTotalItems:protected] =>
    [failover:protected] =>
    [customisedObject:protected] =>
    [objCache:private] => Array
    (
    )

    [class] => DataObjectSet
    [extension_instances:protected] => Array
    (
    )

    )

    437 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.