Jump to:

22972 Posts in 11596 Topics by 2824 members

General Questions

SilverStripe Forums » General Questions » array_flip() [function.array-flip]: The argument should be an array

General questions about getting started with SilverStripe that don't fit in any of the categories above.

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

Page: 1
Go to End
Author Topic: 384 Views
  • lozhowlett
    Avatar
    Community Member
    140 Posts

    array_flip() [function.array-flip]: The argument should be an array Link to this post

    Hi everyone

    I am getting an error:

    array_flip() [function.array-flip]: The argument should be an array

    This is when trying to save a "Result" from the code below...

    <?php
    class Result extends DataObject {

       public static $db = array(
    'PositionFinished' => 'Int',
    'PointedScored' => 'Int',
    'isFastestLap' => 'Boolean'
       );

       static $has_many = array (
       );

    public static $belongs_to = array(
    'Event' => 'Event',
    'Team' => 'Team'
    );

    function getCMSFields_forPopup() {
    $fields = new FieldSet();
    //$EventID = DataObject::get_by_id('Event',$this->EventID);
    //$oData = (DataObject::get('Team','`Event_Teams`.EventID =' + $EventID,'','LEFT JOIN `Event_Teams` ON `Event_Teams`.TeamID=`Team`.ID ',''));
    $oData = (DataObject::get('Team','','','LEFT JOIN `Event_Teams` ON `Event_Teams`.TeamID=`Team`.ID',''));
    if ($oData) {
    $CategoriesSource = $oData->toDropDownMap('ID','Name');
    } else {
    // no categories there yet, might put a literalfield to tell the user
    }
    $dropdown = new DropdownField('TeamID', 'Team', $CategoriesSource, $this->TeamID);
    $fields->push($dropdown);
    $fields->push(new NumericField('PositionFinished'));
    $fields->push(new NumericField('PointedScored'));
    $fields->push(new CheckboxField('isFastestLap'));
    return $fields;
    }
    }

    <?php
    class Event extends Page {

       public static $db = array(
    'Date' => 'Date',
    'Time' => 'Time',
    'isNextRace' => 'Boolean'
       );

    static $has_one = array (
    //'Track' => 'Track'
    );

       static $has_many = array (
    'ImageResources' =>'ImageResource',
    'Results' => 'Result'
       );

    public static $many_many = array(
    'Teams' => 'Team'
    );

    function getCMSFields() {
    $fields = parent::getCMSFields();
    $fields->addFieldToTab("Root.Content.Main", new DatePickerField('Date'));
    $fields->addFieldToTab("Root.Content.Main", new TimeField('Time'));
    $fields->addFieldToTab("Root.Content.Main", new CheckboxField('isNextRace'));

    $tablefield = new ManyManyComplexTableField(
    $this,
    'Teams',
    'Team',
    array(
    'Name' => 'Name',
    'CarNumber' => 'CarNumber'
    ),
    'getCMSFields_forPopup'
    );
    $fields->addFieldToTab("Root.Content.Team Manager",$tablefield);

    $tablefield = new ComplexTableField(
    $this,
    'Results',
    'Result',
    array(
    'PositionFinished' => 'PositionFinished',
    'PointedScored' => 'PointedScored',
    'CarNumber' => 'CarNumber'
    ),
    'getCMSFields_forPopup'
    );
    $fields->addFieldToTab("Root.Content.Result Manager",$tablefield);

    $managerimages = new ImageDataObjectManager(
    $this, // Controller
    'Images', // Source name
    'ImageResource', // Source class
    'Attachment', // File name on DataObject
    array(
    'Title' => 'Title'
    ), // Headings
    'getCMSFields_forPopup' // Detail fields
    // Filter clause
    // Sort clause
    // Join clause
    );
    $fields->addFieldToTab("Root.Content.Image Gallery",$managerimages);

    return $fields;
    }

    }
    class Event_Controller extends Page_Controller {
       public static $allowed_actions = array (
       );

       public function init() {
    parent::init();
       }
    }

    <?php
    class Team extends Page {

       public static $db = array(
    'Name' => 'Text',
    'CarNumber' => 'Text',
    "Class" => "Enum('Petrol, Diesel', 'Diesel')",
    'ContactTelephone' => 'Text',
    'ContactEmail' => 'Text',
    'CarLocation' => 'Text'
       );

       static $has_many = array (
    'ImageResources' =>'ImageResource',
    'Drivers' => 'Driver',
    'Results' => 'Result'
       );

    static $allowed_children = array('Driver');
    static $default_child = "Driver";

    public static $belongs_many_many = array(
    'Events' => 'Event',
    );

    public static $has_one = array(
    'ProfilePicture' => 'Image'
       );

    function getCMSFields() {
    $fields = parent::getCMSFields();
    $fields->addFieldToTab("Root.Content.Main", new TextField('Name'));
    $fields->addFieldToTab("Root.Content.Main", new TextField('CarNumber'));
    $fields->addFieldToTab("Root.Content.Main", new TextField('ContactTelephone'));
    $fields->addFieldToTab("Root.Content.Main", new TextField('ContactEmail'));
    $fields->addFieldToTab("Root.Content.Main", new TextField('CarLocation'));
    $fields->addFieldToTab("Root.Content.Main", new ImageField('ProfilePicture'));
    $fields->addFieldToTab("Root.Content.Main", new DropdownField('Class', 'Class', singleton('Team')->dbObject('Class')->enumValues()));
    $managerimages = new ImageDataObjectManager(
    $this, // Controller
    'Images', // Source name
    'ImageResource', // Source class
    'Attachment', // File name on DataObject
    array(
    'Title' => 'Title'
    ), // Headings
    'getCMSFields_forPopup' // Detail fields
    // Filter clause
    // Sort clause
    // Join clause
    );
    $fields->addFieldToTab("Root.Content.Image Gallery",$managerimages);

    return $fields;
    }

    }
    class Team_Controller extends Page_Controller {
       public static $allowed_actions = array (
       );

       public function init() {
    parent::init();
       }
    }

    Really stuck on this, any help would be great! Or just how I might go about debugging it more?

    Oddly it saves the Finish position and the points scored, so I presume it s problem with the relationship to the TeamID, therefore I think its saving the EventID, just not the TeamID?

    Thanks!

  • lozhowlett
    Avatar
    Community Member
    140 Posts

    Re: array_flip() [function.array-flip]: The argument should be an array Link to this post

    Bump!

    Anyone got a clue for me? THanks

    384 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.