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're retiring the forums!

The SilverStripe forums have passed their heyday. They'll stick around, but will be read only. We'd encourage you to get involved in the community via the following channels instead:

Archive /

Our old forums are still available as a read-only archive.

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

History: Cannot use object of type DataObjectSet in CheckboxSetField


Go to End


3 Posts   2211 Views

Avatar
xmedeko

Community Member, 94 Posts

30 May 2007 at 9:31am

Hi,

I have a BlogPost class, which has the relationsship:

static $belongs_many_many = array(
'Tags' => 'BlogTag'
);

and a CheckboxSetField of BlogTags is added in getCMSFields():

$dataSet = DataObject::get('BlogTag');
if( $dataSet ) {
$theCheckboxFieldSet = new CheckboxSetField(
'Tags',
'Tags for this blog post',
$dataSet,
$idList);
$fields->addFieldToTab('Root.Content.Tags', $theCheckboxFieldSet );
}

In the CMS, is I click to the history of any BlogPost page, I got the error:

Fatal error: Cannot use object of type DataObjectSet as array in /var/www/xebidy/sapphire/forms/CheckboxSetField.php on line 130

When I comment out the CheckboxSetField in the getCMSFields(), I can access the history of BlogPost. Do I do something wrong, or is this a SS bug?

Avatar
Ingo

Forum Moderator, 801 Posts

30 May 2007 at 11:53am

first, make sure you've got $many_many = array("BlogPosts"=>"BlogPost") on the other side (BlogPost.php).

CheckboxSetField accepts DataObjectSets in the constructor, but it doesn't seem to process them correctly (I've filed a bug for that). please use an id-list instead:

$theCheckboxFieldSet = new CheckboxSetField(
'Tags',
'Tags for this blog post',
$dataSet->toDropDownMap(),
$idList);

CheckboxSetField actually extends DropdownField, so they share a lot of behaviour.

Avatar
xmedeko

Community Member, 94 Posts

30 May 2007 at 3:45pm

Thanks, it works now.