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.

E-Commerce Modules /

Discuss about the various e-commerce modules available:
Ecommerce, SS Shop, SilverCart and SwipeStripe
Alternatively, have a look the shared mailinglist.

Moderators: martimiz, Nicolaas, Sean, Ed, frankmullenger, biapar, Willr, Ingo, Jedateach, swaiba

Add has_one and has_many to ProductGroup etc etc


Go to End


4 Posts   2551 Views

Avatar
Shane Garelja

Community Member, 18 Posts

15 March 2009 at 12:56pm

Hi,

Is it a reasonable suggestion that all modules declare the DB related statics to allow pages to be extended easily e.g. has_one, has_many - even if they are empty?

I have just spent a fairly long time trying to figure out why I was getting an error saving ~any~ page after adding an Object Decorator for the ProductGroup page in the ecommerce module. I wanted to have an image field via a has_one relationship but then couldn't figure out why I was getting error saving all the other page types. It was obviously due to the fact ProductGroup does not declare the has_one static so the new Image relationship was being added to Page which did not have the column ImageID. Resulting in the error: Unknown column 'ImageID' in 'field list' when saving other pages.

After adding an empty has_one static to the ProductGroup core file in ecommerce, all was well. But this obviously defeats the purpose of Object Decorators :)

I realise the cause is PHP related, not Silverstripe but it would be good if this was a recommendation to all module developers (if it isn't already).

Unless I'm completely barking up the wrong tree here and there is good reason why this isn't common practise...

Avatar
Willr

Forum Moderator, 5523 Posts

15 March 2009 at 9:40pm

All modules should include empty $has_one, $db, $many_many, $belongs_many_many and I guess $defaults and any other statics. While its not a written standard anywhere they probably all should.

Would be great if you could create a ticket on http://open.silverstripe.com for someone to pick up on.

Avatar
Willr

Forum Moderator, 5523 Posts

17 March 2009 at 1:05pm

I have been informed that in the next version of SilverStripe you will not need to declare these things on the base class's to be able to override them. Now I guess we just have to wait :)

Avatar
Shane Garelja

Community Member, 18 Posts

17 March 2009 at 1:41pm

Aha! That's great news. Thanks for letting us know :)