This document contains information about a future release and not the current stable version (3.1).
Be aware that information on this page may change and API's may not be stable for production use.
See TableListField for more documentation on the base-class
Add hidden default data
Please use TableField->setExtraData() to specify additional (non-editable) data. You might use the following code that shows the Player of Team with a particular Team ID and automatically saves new Players into this Team.
In this example, you'll note that we're setting TeamID to $this->ID. This works well if you're including a TableField as an editable field on a getCMSFields() call.
$myTableField = new TableField( 'MyTableField', // fieldName 'Player', // sourceType array( 'FirstName'=>'First Name', 'Surname'=>'Surname' ), // fieldList array( 'FirstName'=>'TextField', 'Surname'=>'TextField' ), // fieldTypes null, // filterField (legacy) "Player.TeamID", $this->ID ); // add some HiddenFields thats saved with each new row $myTableField->setExtraData(array( 'TeamID' => $this->ID ? $this->ID : '$RecordID' ));
The '$RecordID' value is used when building forms that create new records. It will be populated with whatever record id is created.
You can apply a FormTransformation to any given field, based on a eval()ed php-rule. You can access all columns on the generated DataObjects here.
$myTF->setTransformationConditions(array( "PlayerName" => array( "rule" => '$PlayerStatus == "Retired" || $PlayerStatus == "Injured"', "transformation" => "performReadonlyTransformation" ) ));
Due to the nested nature of this fields dataset, you can't set any required columns as usual with the RequiredFields** on the TableField-instance for this. Note: You still have to attach some form of Validator to the form to trigger any validation on this field.
- A TableField doesn't reload any submitted form-data if the saving is interrupted by a failed validation. After refreshing the form with the validation-errors, the TableField will be blank again.
- You can't add visible default data to columns in a TableField, please use setExtraData