7913 Posts in 1355 Topics by 930 members
DataObjectManager Module
SilverStripe Forums » DataObjectManager Module » Using DataObjectManager inside a DataObject Decorator
Discuss the DataObjectManager module, and the related ImageGallery module.
Moderators: martimiz, UncleCheese, Howard, Sean, Ryan M., biapar, Willr, Ingo, swaiba, simon_w
|
Page:
1
|
Go to End | |
| Author | Topic: | 1686 Views |
-
Using DataObjectManager inside a DataObject Decorator

4 December 2009 at 3:15am
Hi guys i was wondering why i can't use DataObjectManager inside a DataObjectDecorator... or why ComplexTableField works and DOM throws errors my code is fairly simple i think
I'm using decorators for my HomePage class so I can control stuff that are in all pages using in templates <% control Page(home) %> stuff.
in my _config: DataObject::add_extension('HomePage', 'LogoDecorator');
<?php
class LogoDecorator extends DataObjectDecorator{
function extraStatics() {
return array(
'has_many' => array(
'Logos' => 'Logo',
),
);
}public function updateCMSFields(FieldSet &$fields) {
$Banners = new ComplexTableField(
$this,
'Logos',
'Logo',
array(
'TextoAlternativo' =>'TextoAlternativo',
'Link' =>'Link'
),
'getCMSFields_forPopup'
);
$Banners->setParentClass('HomePage');
$fields->addFieldToTab( 'Root.Content.Logos', $Banners );
}
}and my logo class:
<?php
class Logo extends DataObject {
static $db = array (
'TextoAlternativo' => 'Varchar(140)',
'Link' => 'Varchar(255)'
);
static $has_one = array (
'HomePage' => 'HomePage',
'Logo' => 'Image'
);
public function getCMSFields_forPopup()
{
return new FieldSet(
new TextareaField('TextoAlternativo', 'Texto Alternativo (para google) - máximo 140 caracteres'),
new TextField("Link", "URL de la página de logo (sin http://)"),
new ImageField('Logo', 'Agregar imagen para el banner')
);
}
}when i use DOM instead of ComplexTableField, the code just stop working... any clues?
thanks for all guys!
-
Re: Using DataObjectManager inside a DataObject Decorator

4 December 2009 at 3:45am
What does "stops working" mean? It's hard to troubleshoot something if you're not explaining the result.
-
Re: Using DataObjectManager inside a DataObject Decorator

4 December 2009 at 3:56am
well the error is a little bit large...
La página en http://sta dice:ERROR [Notice]: Undefined property: LogoDecorator::$ID
IN POST /admin/getitem?ID=5&ajax=1
Line 211 in /Users/francisco/Sites/stachile/dataobject_manager/code/DataObjectManager.phpSource
======
202: $sort = isset($params['sort'])? $params['sort'] : $this->sort;
203: $sort_dir = isset($params['sort_dir'])? $params['sort_dir'] : $this->sort_dir;
204: $filter = isset($params['filter'])? $params['filter'] : $this->filter;
205: $search = isset($params['search'])? $params['search'] : $this->search;
206: return
"ctf[{$this->Name()}][start]={$start}&ctf[{$this->Name()}][per_page]={$per_page}&ctf[{$this->Name()}][showall]={$show_all}&ctf[{$this->Name()}][sort]={$sort}&ctf[{$this->Name()}][sort_dir]={$sort_dir}&ctf[{$this->Name()}][search]={$search}&ctf[{$this->Name()}][filter]={$filter}";
207: }
208:
209: function FieldHolder()
210: {
* 211: if(!$this->controller->ID && $this->isNested)
212: return $this->renderWith('DataObjectManager_holder');
213: return parent::FieldHolder();
214: }
215:
216:
217: public function Headings()<ul>DataObjectManager->FieldHolder()
call_user_func_array(Array,Array)
line 408 of ViewableData.phpViewableData->XML_val(FieldHolder,,1)
line 74 of .cache.Users.francisco.Sites.stachile.sapphire.templates.TabSetFieldHolder.ssinclude(/private/var/tmp/silverstripe-cache-Users-francisco-Sites-stachile/.cache.Users.francisco.Sites.stachile.sapphire.templates.TabSetFieldHolder.ss)
line 354 of SSViewer.phpSSViewer->process(TabSet)
line 773 of ViewableData.phpViewableData->renderWith(TabSetFieldHolder)
line 62 of TabSet.phpTabSet->FieldHolder()
call_user_func_array(Array,Array)
line 408 of ViewableData.phpViewableData->XML_val(FieldHolder,,1)
line 59 of .cache.Users.francisco.Sites.stachile.sapphire.templates.TabSetFieldHolder.ssinclude(/private/var/tmp/silverstripe-cache-Users-francisco-Sites-stachile/.cache.Users.francisco.Sites.stachile.sapphire.templates.TabSetFieldHolder.ss)
line 354 of SSViewer.phpSSViewer->process(TabSet)
line 773 of ViewableData.phpViewableData->renderWith(TabSetFieldHolder)
line 62 of TabSet.phpTabSet->FieldHolder()
call_user_func_array(Array,Array)
line 408 of ViewableData.phpViewableData->XML_val(FieldHolder,,1)
line 70 of .cache.Users.francisco.Sites.stachile.sapphire.templates.Includes.Form.ssinclude(/private/var/tmp/silverstripe-cache-Users-francisco-Sites-stachile/.cache.Users.francisco.Sites.stachile.sapphire.templates.Includes.Form.ss)
line 354 of SSViewer.phpSSViewer->process(Form)
line 773 of ViewableData.phpViewableData->renderWith(Array)
line 982 of Form.phpForm->forTemplate()
line 1005 of Form.phpForm->formHtmlContent()
line 381 of LeftAndMain.phpLeftAndMain->getitem(HTTPRequest)
line 162 of Controller.phpController->handleAction(HTTPRequest)
line 129 of RequestHandler.phpRequestHandler->handleRequest(HTTPRequest)
line 122 of Controller.phpController->handleRequest(HTTPRequest)
line 277 of Director.phpDirector::handleRequest(HTTPRequest,Session)
line 121 of Director.phpDirector::direct(/admin/getitem)
line 118 of main.php</ul>
-
Re: Using DataObjectManager inside a DataObject Decorator

4 December 2009 at 4:20am
You're passing $this as the controller, which is the decorator. The controller you want is $this->owner.
-
Re: Using DataObjectManager inside a DataObject Decorator

4 December 2009 at 4:31am
woohooo!!
thanks UncleCheese!!
now is working perfectly
:D:D
| 1686 Views | ||
|
Page:
1
|
Go to Top |

