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.

Archive

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

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

History: Cannot use object of type DataObjectSet in CheckboxSetField


Reply

3 Posts   1820 Views

Avatar
xmedeko

30 May 2007 at 9:31am Community Member, 94 Posts

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

30 May 2007 at 11:53am Forum Moderator, 801 Posts

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

30 May 2007 at 3:45pm Community Member, 94 Posts

Thanks, it works now.