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:

All other Modules /

Discuss all other Modules here.

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

Extending LeftAndMain Help

Go to End



Community Member, 1 Post

30 November 2009 at 1:20am

Hi Guys,

I've used the forums for a while for information and this is the first time I've had to post, I'm attempting to write a new LeftAndMain module for managing some data.

What I'm trying to get tested and working is a complextablefield in a new tab in the right panel, I'm wanting to use it to manage data from a dataobject. I'm coming across the following error and after an hour or so of browsing I have no idea what I'm doing wrong.

Fatal error: Call to a member function FormAction() on a non-object in H:\www\\sapphire\forms\FormField.php on line 88



class JobsAdmin extends LeftAndMain {
static $url_segment = 'jobs';
static $menu_title = 'Jobs Administration';

static $has_many = array (



public static $managed_models = array(

function init() {

function showForm() {

/*$fields = parent::getCMSFields();

$jobs = new HasManyComplexTableField($this, 'Jobs', 'Jobs', array("Title"=>"Job Title","Location"=>"Job Location","Approved"=>"Approved for viewing"));


return $fields;*/
return new TabSet(
$name = "TheTabSetName",
new Tab(
$title='Tab one',
new HeaderField("A header"),
new LiteralField("Lipsum","Lorem ipsum dolor sit amet enim.")
new Tab(
$title='Tab two',
new HeaderField("A second header"),
new LiteralField("Lipsum","Ipsum dolor sit amet enim."),
new ComplexTableField(
$controller = $this,
$name = "Jobs",
$sourceClass = "Job",
$fieldList = array(
"Title"=>"Job Title",
"Location"=>"Job Location",
"Approved"=>"Approved for viewing"
$callThisFunctionForPopupFields = "getCMSFields_forPopup",
$sourceFilter = "",
$sourceSort = ""





class Job extends DataObject {

static $db = array (

function getCMSFields_forPopup() {
return new FieldSet(
new TextField('Title', 'Job Title'),
new TextareaField('Description', 'Job Description'),
new CheckboxField("Approved", "Job Approved")




I was going to use a has_many type until I noticed that the way I wanted things done I would have no has_one, so I though the complextablefield would be the way forward.

Can anyone shed any light on my stupidity?

Thanks in advance,