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.

All other Modules

Discuss all other Modules here.

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

Extending LeftAndMain Help


Reply

1263 Views

Avatar
Gringo

30 November 2009 at 1:20am Community Member, 1 Post

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\ijacca.co.uk\sapphire\forms\FormField.php on line 88

Code

<?php

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

static $has_many = array (

"Jobs"=>"Job",
"Categorys"=>"Category",
"RSSImports"=>"RSSImport"

);

/*
public static $managed_models = array(
   'Jobs',
   'Category',
   'RSSImports'
);*/

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

function showForm() {

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

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

$fields->addFieldToTab("Root.Jobs",$jobs);

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 = ""
         )
      )
   );

}

}
?>

--------------------------------------------------------

<?php

class Job extends DataObject {

   static $db = array (
      'RecuiterID'=>'Int',
      'Title'=>'Text',
      'Salery'=>'Int',
      'Sector'=>'Int',
      'Location'=>'Text',
      'JobType'=>'Int',
      'Description'=>'HTMLText',
      'Approved'=>'Boolean'
   );

   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,

Graham