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   1826 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.