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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

Template Questions /

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

Replace a core class with my own.


Go to End


7 Posts   4232 Views

Avatar
micahsheets

Community Member, 165 Posts

6 March 2009 at 1:29pm

I would like to replace a core class with my own without actually editing anything in the saphire folder. Is there a way to make they system load my version of a class instead of the core version?

Avatar
UncleCheese

Forum Moderator, 4102 Posts

6 March 2009 at 2:12pm

Object::useCustomClass('OldClass','NewClass');

Avatar
micahsheets

Community Member, 165 Posts

7 March 2009 at 6:34am

Thank you for your reply.

Where would I put that line of code? Does it go in the Page.php file?

Avatar
Willr

Forum Moderator, 5523 Posts

7 March 2009 at 11:10pm

Edited: 07/03/2009 11:10pm

no usually you would put that in your mysite/_config.php file

Avatar
micahsheets

Community Member, 165 Posts

19 March 2009 at 6:30am

Edited: 19/03/2009 8:13am

I have attempted to replace the Image_Selector class with one of my own so that instead of having options to upload an image from users computer is removed. (I only want CMS users to be able to select from a preselected set of images from a specific folder.) After putting my version of the class in my page.php file I added

Object::useCustomClass('Image_Selector','Custom_Image_Selector');

to my _config.php file. However SS is still using the original. I read somewhere else on the forums that only some core classes can be replaced with custom ones using the Object::useCustomClass method.

I really just want to override a single function in the Image_Selector class. If I create a new class in page.php that extends Image_Selector, I get an error telling me that Image_Selector class does not exist. I am not very experienced with OOP so I am not sure how to properly overload a function this way as I am guessing that page.php does not inherit the Image_Selector class. If this is the case, then how am I able to overload a function?

Avatar
chrisdarl

Community Member, 33 Posts

7 April 2009 at 11:14pm

Think you need to create a new file, with the name of the custom class. I.e.

MyImage extends Image would have a filename of MyImage.php

Avatar
BangMan

Community Member, 7 Posts

9 April 2009 at 10:10pm

A file MyImage.php must be In what file?