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.

Data Model Questions /

[SOLVED] Problem with Custom Table and DataObjectManager




Community Member, 44 Posts

24 March 2009 at 6:35am

Edited: 24/03/2009 8:02am

Hello Everybody

i have Problems with my Custom Table and the DataObjectManager.
In my current Project is the case Locations. User can Submit a Location, all Locations are listed in a Table with a link to a detailed View.

1. Locations (All Locations - listed in Menu)
1.1 Add a Location (Submit - Listed in Menu)
1.2 Location (Detailview - not listed in Menu)

As i read the Polltutorial i created a Submission.php where my Table is set up, now i think doing it that way is wrong and won't work with my DataObjectManager. I think some Relations are messed up or i have 1 File too much.
Anyway... after 2 hours of trying to understand some Tutorials in the Docs i am stuck now and looking for Help.

Here are my PHP Files a Screenshot of my .ss Folder and a Screenshot of the Error i receieve on the Page "Location" in the CMS which is the Detailview.



   class Location extends Page {
      static $has_many = array(
         'Locations' => 'LocationSubmission'

      function getCMSFields() {
         $fields = parent::getCMSFields();
         $fields->addFieldToTab("Root.Content.Locations", new DataObjectManager(
            array('Name' => 'Name'),

         return $fields;

      // Get Location by ID (Detailview)
      function GetLocations()
         return DataObject::get('Location', 'ParentID = {$this->ID}', 'ID DESC');

   class Location_Controller extends Page_Controller {
      public function GetLocationSubmission(){
         $Params = Director::urlParams(); //This gets our URLparams
         $SubmissionID = $Params['Action']; //gets the ID from our $Params array
         return DataObject::get_by_id("LocationSubmission", "$SubmissionID");

      function ContactForm() {
       // Create fields
       $fields = new FieldSet(
       new TextField('Dein Name'),
       new TextareaField('Deine Nachricht')
          // Create actions
      $actions = new FieldSet(
       new FormAction('ContactForm', 'Absenden')
      // Create validator
      $validator = new RequiredFields('Name', 'Deine Nachricht');
      return new Form($this, 'ContactForm', $fields, $actions, $validator);




   class LocationAdd extends Page {
   class LocationAdd_Controller extends Page_Controller {
      // Start Form
      function Form() {
         // Fields of Location
         $fields = new FieldSet(
            new TextField('Name','Name der Location'),
            new TextField('Author','Name des Ansprechpartners'),
            new EmailField('Email','E-Mail des Ansprechpartners'),
            new TextareaField('Description','Beschreibe deine Location'),
            new TextField('Adress','Adresse'),
            new TextField('PLZ','PLZ'),
            new TextField('Location','Ort'),

            new DropdownField('Country','Land',array(
            #'' => '',
             'Deutschland' => 'Deutschland',
             'Schweiz' => 'Schweiz'
            new CheckboxSetField('Table','Kickertisch(e)',array(
         $actions = new Fieldset(
            new FormAction('addLocation','Eintragen')
         $validator = new RequiredFields(
         $form = new Form(
         return $form;
      // end Form
      // Dateneintrag
      function addLocation($data,$form) {
         $location = new LocationSubmission();
            'Eingetragen - wird geprŸft',
   // end Class



   class LocationSubmission extends DataObject {
      static $db = array(
         'Name' => 'Varchar(200)',
         'Author' => 'Varchar(100)',
         'Email' => 'Varchar (100)',
         'Description' => 'Text',
         'Adress' => 'Varchar(150)',
         'PLZ' => 'Int(5)',
         'Location' => 'Varchar(50)',
         'Country' => 'Varchar(50)',
         'Table' => 'Varchar(150)'

      static $has_one = array(
         'LocationSubmission' => 'LocationSubmission'
      public function getCMSFields_forPopup()
         return new FieldSet(
            new TextField('Name')





   class LocationHolder extends Page {
      static $allowed_children = array(
      function LocationShow ()
         $sort = 'Created DESC';
         $data = DataObject::get('LocationSubmission','',$sort,'','');
         return $data;

   class LocationHolder_Controller extends Page_Controller {



This kind of Case will come one more time in that Project and a few times in Future, so now i want to make sure i am doing the right way and looking for help here.

PLease show me what i am doing wrong.

Thank you all!

Attached Files