3217 Posts in 853 Topics by 812 members
|
Page:
1
|
Go to End | |
| Author | Topic: | 975 Views |
-
Control loop of Data Object not working

24 May 2011 at 1:57pm Last edited: 24 May 2011 1:58pm
Hi
I have set up a data object of testimonials that I want to display on the homepage of my site.
I've set it up so I add my testimonials on a testimonials tab when editing the homepage. It all seems to work fine, but I am having trouble displaying them through a control loop.
Quote.php
<?php
/**
* Defines the Quote data object
*/
class Quote extends DataObject {static $db = array (
'Quote' => 'Text',
'Company' => 'Varchar(255)',
'Name' => 'Varchar(255)'
);
function getCMSFields_forPopup() {
$fields = new FieldSet();
$fields->push( new TextField( 'Quote' ) );
$fields->push( new TextField( 'Company' ) );
$fields->push( new TextField( 'Name' ) );
return $fields;
}
static $has_one = array (
'HomePage' => 'HomePage'
);}
Homepage.php
<?php
/**
* Defines the HomePage page type
*/class HomePage extends Page {
static $db = array(
'H1Heading' => 'Text',
'BannerHeading' => 'Text',
'BannerTxt' => 'HTMLText'
);static $has_one = array(
);static $has_many = array (
'Quotes' => 'Quote'
);public function getCMSFields() {
$fields = parent::getCMSFields();$fields->addFieldsToTab('Root.Content.Main', new TextField('H1Heading', 'H1 Heading'), 'Content');
$fields->addFieldsToTab('Root.Content.Main', new TextField('BannerHeading', 'Banner Heading'), 'Content');
$fields->addFieldsToTab('Root.Content.Main', new HtmlEditorField("BannerTxt","Banner Text"), 'Content');
$tablefield = new HasManyComplexTableField(
$this,
'Quotes',
'Quote',
array(
'Quote' => 'Quote','Company'=>'Company','Name' => 'Name'
),
'getCMSFields_forPopup'
);
$tablefield->setAddTitle( 'A Testimonial' );
$fields->addFieldToTab( 'Root.Content.Quotes', $tablefield );
return $fields;
}}
class HomePage_Controller extends Page_Controller {
}
HomePage.ss Control Loop
<% if Quotes %>
<% control Quotes %>
<div class="testimonials">
<p><span class="quoteStart">“</span>$Quote<span class="quoteEnd">”</span></p>
<div class="quoteSource"><p>$Name<strong>$Company</strong></p></div>
</div>
<% end_control %>
<% else %>
No Quotes
<% end_if %>I'm new to Silverstripe and think I have got everything correct. If anyone could let me know what I might have wrong, that would be great.
Thanks in advance
James -
Re: Control loop of Data Object not working

24 May 2011 at 8:32pm
As always the exact "trouble" would be handy to know, I'll assume "No Quotes" is showing...
Firstly, read this for the debugging stuff (if you have not already), http://www.silverstripe.org/general-questions/show/16055
Secondly I would create a new controller function like this to test things are generally working...
function MyQuotes() {
return DataObject::get('Quote');
}Then I'd try...
function MyQuotes() {
return DataObject::get('Quote','HomePageID='.$this->ID);
}
orfunction MyQuotes() {
return $this->Quote;
}I'd use Debug::show to check each of the functions is being called and returning the right values...
| 975 Views | ||
|
Page:
1
|
Go to Top |


