PHP | Problem - no has_many output in template
<?php
// The Item containing the has_many
class MediaItem extends Page{
static $allowed_children = array('none');
public static $db = array(
//Video
'mediaSub' => 'Text',
'mediaDiscr' => 'Text',
'videoUrl' => 'Text',
'mediaType' => "Enum('Foto,Video','Foto')"
);
public static $has_one = array(
'mediaImg' => 'Image'
);
public static $has_many = array(
'PhotoItems' => 'SinglePhotoItem'
);
static $defaults = array(
'ShowInMenus' => false
);
public function getCMSFields() {
$fields = parent::getCMSFields();
$fields->removeFieldsFromTab('Root',
array(
'Behavior',
'To-do',
'Access'
)
);
$fields->removeFieldsFromTab('Root.Content',
array(
'Metadata',
'Sidebar',
'Opmaak'
)
);
$fields->removeFieldFromTab('Root.Content.Main','Title');
$fields->addFieldToTab('Root.Content.Main', new TextField('Title', 'Titel Mediaobject'));
$fields->removeFieldFromTab('Root.Content.Main','MenuTitle');
$fields->removeFieldFromTab('Root.Content.Main','Content');
Requirements::customCSS(<<<CSS
td.photoImgs img {
width: 200px;
height: auto;
}
CSS
);
//VideoFields
$fields->addFieldToTab('Root.Content.Main', new TextField('mediaSub', 'Subtitel'));
$fields->addFieldToTab('Root.Content.Main', new ImageUploadField('mediaImg', 'Afbeelding op mediapagina'));
$fields->addFieldToTab('Root.Content.Main', new DropdownField('mediaType', '<br />Media type',
singleton('MediaItem')->dbObject('mediaType')->enumValues()));
$fields->addFieldToTab('Root.Content.Main', new TextField('mediaDiscr', 'Omschrijving bij de video/de foto op de mediapagina'));
$fields->addFieldToTab('Root.Content.Main', new TextField('videoUrl', 'Link naar video (YouTube of Vimeo)'));
$fields->addFieldToTab('Root.Content.Main', new ComplexTableField(
$this->owner->ID, 'PhotoItems', 'SinglePhotoItem',
array(
'photoDiscr' => 'Omschrijving bij de foto',
'photoImgs' => 'Foto'
)
));
return $fields;
}
}
class MediaItem_Controller extends Page_Controller {
public static $allowed_actions = array (
);
public function PhotoItemsMedia() {
return DataObject::get('SinglePhotoItem');
}
}
// The MediaPage containing MediaItems
class MediaPage extends Page {
static $allowed_children = array('MediaItem');
}
class MediaPage_Controller extends Page_Controller {
public function init() {
parent::init();
Requirements::CSS('site/javascript/fancybox/helpers/jquery.fancybox-thumbs.css');
Requirements::combine_files(
'fancyboxCombi.js',
array(
'site/javascript/fancybox/helpers/jquery.fancybox-thumbs.js',
'site/javascript/vendor/jquery.mousewheel-3.0.6.pack.js',
'site/javascript/fancybox/helpers/jquery.fancybox-media.js'
)
);
}
public function PhotoItemsMedia() {
return DataObject::get('SinglePhotoItem');
}
}
//The output
<ul id="mediaGallery">
<% control AllChildren %>
<li>
<a href="$mediaImg.URL" rel="fancy-Album1" class="fancy-Album" title="$mediaDiscr">
<img <% control mediaImg %>src="$CroppedImage(184,123).URL"<% end_control %> title="$Title" alt="$mediaDiscr">
<span class="mediaTitle">$Title</span>
<span class="mediaSub">$mediaSub</span>
<img src="themes/gccc/img/icons/overlay-$mediaType-.png" class="mediaOverlay">
</a>
<div style="display: none;" class="albumWrap">
<% control SponsorsDo %>
<a href="$photoImgs.URL" rel="fancy-Album1" class="fancy-Album" title="$photoDiscr">
<img <% control photoImgs %>src="$CroppedImage(184,123).URL"<% end_control %> alt="$photoDiscr">
<h3>$SponsorName</h3>
</a>
<% end_control %>
</div>
</li>
<% end_control %>
</ul>
14/06/2012 12:15pm
PHP | Problem - Anonymous
class SinglePhotoItem extends DataObject{
public static $db = array(
'photoDiscr' => 'Varchar(120)'
);
public static $has_one = array(
'MediaItem' => 'MediaItem',
'photoImgs' => 'Image'
);
public function getCMSFields_forPopup()
{
return new FieldSet(
new ImageField('photoImgs', 'Foto'),
new TextField('photoDiscr', 'Omschrijving bij de foto')
);
}
}
?>14/06/2012 12:07pm
PHP | Solution - Anonymous
on line 125 it says SponsorDo. this should be PhotoItemsMedia, which should return the dataobject SinglePhotoItem
This is the SinglePhotoItem dataobject