Hi,
I have searched the forums for this scenario and I cannot find it, here is my data model:
- User A
- Project 1
- Specimen a
- Specimen b
- Project 2
- Specimen a'
- Specimen b'
Each user has many projects, each project has many specimens.
I am using $has_many and in the getCMSFields, I use HasManyComplexTableField.
My problem is that if you go to the user, you can add/edit the "Projects"
if you click on a project you can only edit the Specimens, you cannot add.
The add button is simply missing.
Translated into code:
Member Object:
<?php
class Member_Object extends DataObject
{
static $db = array (
"UserName"=>"Text",
"Password"=>"Text"
);
static $has_many = array (
'Projects' => 'Projects_Object'
);
public function getCMSFields()
{
$mng_records = new HasManyComplexTableField(
$this,
'Projects',
'Projects_Object',
array(
'Title' => 'Title',
),
'getCMSFields'
);
$fields = parent::getCMSFields();
//Main Tab
$fields->addFieldToTab("Root.Main", new UniqueTextField('UserName', 'User Name'));
$fields->addFieldToTab("Root.Main", new TextField('Password',"Password"));
$fields->addFieldToTab("Root.Projects", $mng_records);
return $fields;
}
static $summary_fields = array(
'UserName' => 'User Name'
);
}
?>
Projects Object:
<?php
class Projects_Object extends DataObject
{
static $db = array (
"Title"=>"Text",
"ASTM"=>"Text",
"Project"=>"Text",
"Client"=>"Text",
"Consultant"=>"Text",
"DateOfTesting"=>"Text",
"DateOfCasting"=>"Text",
"AgeOfSpecimen"=>"Text",
"Structure"=>"Text",
"Formula"=>"Text",
"StrengthRequired"=>"Text",
"Slump"=>"Text",
"TypeOfCuring"=>"Text",
"TestedBy"=>"Text",
"CheckedBy"=>"Text",
"ClientRepresentative"=>"Text"
);
static $has_many = array (
'Specimens' => 'Specimens_Object'
);
static $has_one = array (
'ParentMember' => 'Member_Object'
);
function getCMSFields() {
$mng_records = new HasManyComplexTableField(
$this,
'Specimens',
'Specimens_Object',
array(
'SpecimenReference' => 'Specimen Reference',
),
'getCMSFields'
);
$fields = parent::getCMSFields();
//Main Tab
$fields->addFieldToTab("Root.Main", new TextField( 'Title', 'Title'));
$fields->addFieldToTab("Root.Main", new TextField( 'ASTM', 'ASTM'));
$fields->addFieldToTab("Root.Specimens", $mng_records);
return $fields;
}
static $summary_fields = array(
'Title' => 'Title'
);
}
?>
Specimens Object:
<?php
class Specimens_Object extends DataObject
{
static $db = array (
"SpecimenReference"=>"Text",
"Height"=>"Text",
"Diameter"=>"Text",
"Weight"=>"Text",
"Density"=>"Text",
"MaxLoad"=>"Text",
"CompressiveStrength"=>"Text",
"TypicalFracturePatterns"=>"Enum('Type I,Type II,Type III,Type IV,Type V,Type VI')",
);
static $has_one = array (
'ParentProject' => 'Projects_Object'
);
function getCMSFields() {
$category = new DropdownField('TypicalFracturePatterns','Typical Fracture Patterns',singleton('Specimens_Object')->dbObject('TypicalFracturePatterns')->enumValues());
$fields = parent::getCMSFields();
//Main Tab
$fields->addFieldToTab("Root.Main", new TextField( 'SpecimenReference', 'Specimen Reference'));
$fields->addFieldToTab("Root.Main", new TextField( 'Height', 'Height'));
$fields->addFieldToTab("Root.Main", new TextField( 'Diameter', 'Diameter'));
$fields->addFieldToTab("Root.Main", new TextField( 'Weight', 'Weight'));
$fields->addFieldToTab("Root.Main", new TextField( 'Density', 'Density'));
$fields->addFieldToTab("Root.Main", new TextField( 'MaxLoad', 'Max Load'));
$fields->addFieldToTab("Root.Main",$category);
return $fields;
static $summary_fields = array(
'SpecimenReference' => 'Specimen Reference'
);
}
?>
So I can add a member, the go to that member, go to the projects tab, add a project but I cannot add specimens although
according to my login it should work.
What Am I doing wrong?
Thank you.