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 /

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

DataObject overwrite CanEdit() in Decorator

Go to End

3 Posts   1191 Views


Community Member, 25 Posts

22 September 2011 at 10:57am


I have a managed model "Product" which has a hasmany relation to "ProductVariations". Now i have the problem if the logged in user has not the FullAdministration right in his SecurityGroup, the ProductVariation records in the HasManyComplexTableFIeld are not Editable by that user.
I know that i could make this editable by just placing an "function canEdit(){return true;}" in the ProductVariation DataObject. But for me this is no option cause this class is part of the EcommerceModule i dont want to change. This is why i use a DataObjectDecorator for the Variations.

The problem now is, that it does not work if i place the 'canEdit' method in this decorator. The method is just not called at all.

Changing the HasManyComplexTableField's permissions via setPermissions() doesnt make a difference too.

Thanks in advance for your help.



Community Member, 61 Posts

23 September 2011 at 6:49pm


Possibly the reason is that you added the canEdit method to your DataObjectDecorator without the parameter $member? e.g. canEdit ($member)

Have a look at the API docs here for the method.


Community Member, 97 Posts

19 April 2013 at 9:35am

Edited: 08/06/2013 4:08am

Hello Matze0681, don't think it works for me. I also tried to use a DataObjectExtension to set some permissions for a set of data models but with no success.

Looking at the canEdit method in DataObject Class

	 * @param Member $member
	 * @return boolean
	public function canEdit($member = null) {
		return Permission::check('ADMIN', 'any', $member);

if it has

 $this->extend ('updateCanEdit') 

we can just make the 'updateCanEdit' method in the decorator. But the core doesn't make the method extentable :-( , only overwritable by sub-class it .