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.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

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

the method 'fortemplate' does not exist on 'ArrayList'

Go to End

2 Posts   4871 Views


Community Member, 48 Posts

15 October 2012 at 10:36am

In Silverstripe 3, how can I run custom SQL and return the result for handling in my template? So far, I have:

function getListings(){
        $sqlQuery = new SQLQuery();
        $sqlQuery->addLeftJoin('Listing', '"ListingCategory_Listings"."ListingID" = "Listing"."ID"');
        $sqlQuery->addLeftJoin('SiteTree_Live', '"Listing"."ID" = "SiteTree_Live"."ID"');
        $sqlQuery->addLeftJoin('ListingCategory', '"ListingCategory_Listings"."ListingCategoryID" = "ListingCategory"."ID"');
        $sqlQuery->addLeftJoin('File', '"ListingCategory"."IconID" = "File"."ID"');

        $result = $sqlQuery->execute();
        //return $result;
        //$dataObject = new DataList(); 
        $dataObject = new ArrayList();
        foreach($result as $row) { 
            $dataObject->push(new ArrayData($row)); 
        return $dataObject;


However, this is giving me the error:

Uncaught Exception: Object->__call(): the method 'fortemplate' does not exist on 'ArrayList'

What am I doing wrong here and how can I get the result of this query into my template?


Forum Moderator, 5523 Posts

24 October 2012 at 8:39pm

You can't simply use $Listings since as it says, it hasn't got a clue how to 'output' that to your template.

Make sure you have your template like <% loop $Listings %>..<% end_loop %>