3063 Posts in 864 Topics by 646 members
| Go to End | ||
| Author | Topic: | 4316 Views |
-
Re: DataObject PAge

16 July 2009 at 1:07am
Whoah! You're fast!
However, no luck
[Notice] Trying to get property of non-object
-
Re: DataObject PAge

16 July 2009 at 1:52am
Code of the Page:
<?php
class PersonenPage extends Page {
static $many_many = array(
'PersonenObjectStandaard' => 'PersonenObject',
'PersonenObjectUitgelicht' => 'PersonenObject'
);
public function getCMSFields() {
$PersonenObjectStandaard = new ManyManyDataObjectManager (
$this,
'PersonenObjectStandaard',
'PersonenObject',
array(
'Name' => 'Naam',
'Function' => 'Functie',
'Notes' => 'Opmerkingen'
),
'getCMSFields_forPopup','',
'Name ASC'
);
$PersonenObjectStandaard->setAddTitle('Personen');
$PersonenObjectStandaard->setSingleTitle('Persoon');
$PersonenObjectUitgelicht = new ManyManyDataObjectManager (
$this,
'PersonenObjectUitgelicht',
'PersonenObject',
array(
'Name' => 'Naam',
'Function' => 'Functie',
'Notes' => 'Opmerkingen'
),
'getCMSFields_forPopup','',
'Name ASC'
);
$PersonenObjectUitgelicht->setAddTitle('Personen');
$PersonenObjectUitgelicht->setSingleTitle('Persoon');$fields = parent::getCMSFields();
$fields->addFieldToTab("Root.Content.Personen", new TabSet( "Personen",
new tab('Standaard',new LiteralField('LiF1','<p>Kies hier welke personen weergegeven moeten worden.</p>'), $PersonenObjectStandaard),
new tab('Uitgelicht',new LiteralField('LiF2',"<p>Kies hier enkele personen die met extra nadruk weergegeven moeten worden (deselecteer deze op het tabblad 'Standaard').</p>"),$PersonenObjectUitgelicht)
));
return $fields;
}
}class PersonenPage_Controller extends Page_Controller {
function view($id = null) {
if($id == null)
$id = $this->urlParams['ID'];
if($id && is_numeric($id))
return DataObject::get_by_id("PersonenObject", $id);
}
}
?>Code of the DataObject:
<?php
class PersonenObject extends DataObject{
static $db = array(
'Name' => 'Varchar(50)',
'Function' => 'Varchar(50)',
'Address' => 'HTMLText',
'Phone' => 'Varchar(50)',
'Email' => 'Varchar(50)',
'URL' => 'Text',
'Bio' => 'HTMLText',
'Notes' => 'Text',
);static $has_one = array(
'Image' => 'Image',
);
static $belongs_many_many = array(
'PersonenPage' => 'PersonenPage'
);function Thumbnail(){
$Image = $this->Image();
if ( $Image ) {
return $Image->CMSThumbnail();
} else {
return null;
}
}function getCMSFields_forPopup() {
return new FieldSet(
new TextField('Name','Naam'),
new TextField('Function','Functie'),
new TextField('Address','Adres'),
new TextField('Phone','Telefoon'),
new TextField('Email','E-mail (toont een link naar een contactformulier)'),
new TextField('URL','Website'),
new SimpleHTMLEditorField('Bio','Biografie',array(
'css' => 'mysite/css/jquery.wysiwyg.css',
'insertOrderedList' => false,
'insertImage' => false,
'justifyLeft' => false,
'justifyRight' => false,
'justifyCenter' => false,
'cut' => true,
'copy' => true,
'paste' => true,
'html' => true)
),
new myImageField('Image','Portret'),
new TextareaField('Notes','Opmerkingen (worden niet weergegeven op de website)')
);
}function Link() {
return $this->PersonenPage()->First()->URLSegment . "view/" . $this->ID;
}}
?> -
Re: DataObject PAge

28 July 2009 at 10:08am Last edited: 28 July 2009 10:10am
I got this working...
So I have a holder:
http://pastebin.com/f5106bdceI create a page in the CMS for that holder.
Now I can:
http://mysite.com/holder/<any text>/12
http://mysite.com/holder/<any text>/100eg:
http://mysite.com/holder/view/12
http://mysite.com/holder/view/100http://mysite.com/holder/silverstripe/12
http://mysite.com/holder/silverstripe/100Note the use us static $song in the function song().
If you don't do that then you will hit the DB for every $song.property in your template.I did not modify the Song object at all, eg: Overriding Link()
-
Re: DataObject PAge

30 July 2009 at 12:31am
Hi!
I took a look at this and i have a solution which takes the current controller into the url using the SSViewer object.
I dont know if it is the ideal way but it is a solution i think. Maybe some of the Silverstripe devs can take a look at this?
My code:
PersonenPage.php
<?php
class PersonenPage extends Page {
static $many_many = array(
'PersonenObjectStandaard' => 'PersonenObject',
'PersonenObjectUitgelicht' => 'PersonenObject'
);
public function getCMSFields() {
$PersonenObjectStandaard = new ManyManyDataObjectManager (
$this,
'PersonenObjectStandaard',
'PersonenObject',
array(
'Name' => 'Naam',
'Function' => 'Functie',
'Notes' => 'Opmerkingen'
),
'getCMSFields_forPopup','',
'Name ASC'
);
$PersonenObjectStandaard->setAddTitle('Personen');
$PersonenObjectStandaard->setSingleTitle('Persoon');$PersonenObjectUitgelicht = new ManyManyDataObjectManager (
$this,
'PersonenObjectUitgelicht',
'PersonenObject',
array(
'Name' => 'Naam',
'Function' => 'Functie',
'Notes' => 'Opmerkingen'
),
'getCMSFields_forPopup','',
'Name ASC'
);
$PersonenObjectUitgelicht->setAddTitle('Personen');
$PersonenObjectUitgelicht->setSingleTitle('Persoon');$fields = parent::getCMSFields();
$fields->addFieldToTab("Root.Content.Personen", new TabSet( "Personen",
new tab('Standaard',new LiteralField('LiF1','<p>Kies hier welke personen weergegeven moeten worden.</p>'), $PersonenObjectStandaard),
new tab('Uitgelicht',new LiteralField('LiF2',"<p>Kies hier enkele personen die met extra nadruk weergegeven moeten worden (deselecteer deze op het tabblad 'Standaard').</p>"),$PersonenObjectUitgelicht)
));
return $fields;
}
}class PersonenPage_Controller extends Page_Controller {
public function PersonenList() {
$records = DataObject::get('PersonenObject');
return $records;
}function view($id = null) {
$params = Director::urlParams();
$id = (int)$params['ID'];$object = DataObject::get_by_id('PersonenObject',$id);
if($object) {
return $this
->customise(array('DisplayPersoon' => $object))
->renderWith(array('DisplayPersoon', 'Page'));
} else {
Director::redirect(Director::absoluteBaseURL() . 'not-found');
}
}
}
?>PersonenObject
<?php
class PersonenObject extends DataObject{
static $db = array(
'Name' => 'Varchar(50)',
'Function' => 'Varchar(50)',
'Address' => 'HTMLText',
'Phone' => 'Varchar(50)',
'Email' => 'Varchar(50)',
'URL' => 'Text',
'Bio' => 'HTMLText',
'Notes' => 'Text',
);static $has_one = array(
'Image' => 'Image',
);static $belongs_many_many = array(
'PersonenPage' => 'PersonenPage'
);function Thumbnail(){
$Image = $this->Image();
if ( $Image ) {
return $Image->CMSThumbnail();
} else {
return null;
}
}function getCMSFields_forPopup() {
return new FieldSet(
new TextField('Name','Naam'),
new TextField('Function','Functie'),
new TextField('Address','Adres'),
new TextField('Phone','Telefoon'),
new TextField('Email','E-mail (toont een link naar een contactformulier)'),
new TextField('URL','Website'),
new SimpleHTMLEditorField('Bio','Biografie',array(
'css' => 'mysite/css/jquery.wysiwyg.css',
'insertOrderedList' => false,
'insertImage' => false,
'justifyLeft' => false,
'justifyRight' => false,
'justifyCenter' => false,
'cut' => true,
'copy' => true,
'paste' => true,
'html' => true)
),
new ImageField('Image','Portret'),
new TextareaField('Notes','Opmerkingen (worden niet weergegeven op de website)')
);
}function Link() {
return Director::absoluteBaseURL() . SSViewer::topLevel()->URLSegment . "/view/" . $this->ID;
}}
?>
| 4316 Views | ||
| Go to Top |


