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.

Data Model Questions

Display a DataObject on a new "own" page


24 Posts   8490 Views


31 March 2010 at 1:13pm Forum Moderator, 5511 Posts

@timwjohn - I think it would be able to support more rules, you probably need to define your own rules though.

// in your config
Director::addRules(100, array(
   '$Controller/$Action/$ID/$OtherID/$NextID/$FurtherID/$AnotherID/$YetAnotherID' => '*'



1 April 2010 at 8:10am Community Member, 98 Posts

Really? Wow, SilverStripe never ceases to impress me. Thanks Willr.


18 June 2010 at 9:26am Community Member, 99 Posts

Hi there,

Had this all working perfectly in 2.3.X using this method:

But I copied the code into a 2.4 install and I'm having some problems. I am sure I've replicated it over properly.

So on this page I list all of the dataobjects:

And clicking "more info" for any one of the listings appends the URL with the object ID, like so:

However, instead of displaying the object data, I get page not found instead!

I don't think I've missed anything obvious.

If its any use I could post up the code? Am wondering if its something to do with the URLs in 2.4 but am stuck!

Thanks guys.


18 June 2010 at 6:39pm Community Member, 39 Posts

Uncanny timing...I was working with a DataObject Class that I wanted to use this method as well....

Okay so it totally has to do with 2.4 and nested urls...the issue is two fold (at least the solution that I got to work).

1. In the Page class you now should define allowed actions.

static $allowed_actions = array(

The catch here is that now your urls will have to have this defined action. You cannot just use the $ID b/c it is dynamic and you won't be able to define all those in the $allowed_actions array.

2. Okay so you will have to tweak you code some to look for your action and the parameter now as well. Here is what I did.

public function getIndividualDataObject(){
         if ($this->request->latestParam('Action')) {
            $parameter = $this->request->latestParam('ID');
            if ($parameter) {
               $DataObjectID = Convert::raw2xml($parameter);
                  $DataObjectInfo = DataObject::get_by_id('DataObjectClassName', $DesignGuideID);
                  return $DataObjectInfo;

Now lastly you will need to update your links that call your Single DataObjects to include the action that you added to your $allowed_actions. Example.


Hope this helps...

- Ed


18 June 2010 at 8:18pm Community Member, 99 Posts

Thanks Ed! I don't 100% understand this, but i think I get the jist of it! I will have a go at that today.

Fingers Xd.


Enclave SSC

29 June 2010 at 2:30am (Last edited: 29 June 2010 2:53am), Community Member, 31 Posts

Having the same problem here. Linsey, did you get this to work. I tried Eds changes but no joy as yet. Still get a page not found in ss 2.4

Update: I sorted this out by moving allowed_actions onto the controller. Silly me. - Thanks


29 June 2010 at 2:40am Community Member, 99 Posts

can't get it to work - i am getting page not found - or sometimes an error, but thats deffo just because i am footering about with it!

am still trying to puzzle it out - think i'm maybe just missing something obvious,

let me know how you get on.


Enclave SSC

29 June 2010 at 2:54am (Last edited: 29 June 2010 2:54am), Community Member, 31 Posts

Hey Linsey

I got it working. If you still stuck just paste me your code and I will help out.