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.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

DataObjectManager Module /

Discuss the DataObjectManager module, and the related ImageGallery module.

Moderators: martimiz, UncleCheese, Sean, Ed, biapar, Willr, Ingo, swaiba

FileDataObjectManger no output


Go to End


2 Posts   1453 Views

Avatar
3pointross

Community Member, 19 Posts

9 December 2009 at 5:25am

I am having an issue that despite having all the files showing up with in the back end, I can't get them to render on the front end...

This is my code

class Download extends DataObject {
static $db = array(
'date' => 'Text',
'description' => 'Text'
);
static $has_one = array(
'TheDownload' => 'File'
);

static $belongs_many_many = array (
'Download' => 'Downloads'
);

function getCMSFields_forPopup() {
$fields = new FieldSet();
$fields->push(new TextField('date','Date Created'));
$fields->push(new TextField('description','Description of file'));
$fields->push(new FileIFrameField('TheDownload'));
return $fields;
}

class Downloads extends Page {
static $db = array(

);
static $has_one = array(

);

static $many_many = array(
'TheDownloads' => 'Download'

);

function getCMSFields() {

$fields = parent::getCMSFields();

$manager = new FileDataObjectManager(
$this, // Controller
'TheDownloads', // Source name
'Download', // Source class
'TheDownload', // File name on DataObject
array(
'Date' => 'Date',
'Description' => 'Description',
), // Headings
'getCMSFields_forPopup' // Detail fields (function name or FieldSet object)
// Filter clause
// Sort clause
// Join clause
);
$fields->addFieldToTab("Root.Content.Resources",$manager);
return $fields;

}

<table class="downloads">
<tr>
<th>Date</th>
<th>Description</th>
<th>Size</th>
<th>Download</th>
</tr>
<% control TheDownloads %>
<tr>
<td>$Date</td>
<td>$Description</td>
<td>$TheDownload.Size</td>
<td><a href="$TheDownload.URL" target="_new"><img src="/themes/howell/images/icons/page_white_acrobat.png" alt="Download "/></a></td>
</tr>
<% end_control %>
</table>

Any ideas as to what I am doing? It just outputs the table headers and nothing else -> http://howellv2.stagedsite.net/committee-minutes/?flush=all

Avatar
UncleCheese

Forum Moderator, 4102 Posts

9 December 2009 at 5:56am

The biggest issue you have is that you're using a FileDOM to manage a many_many relationship, when you should be using a MMFileDOM.

The other thing is that your naming conventions are extremely confusing and redundant. I wouldn't be surprised if that's tripping up the ORM. You have two fields named "TheDownload".. "Download" is a belongs_many_many field and it's also a class. I don't know how you keep track of all that!