protected function getTile(PinholePhoto $photo) { $ui = new AdminUI(); $ui->loadFromXML($this->ui_xml); $store = new SwatTableStore(); $ds = new SwatDetailsStore(); $ds->photo = $photo; $ds->class_name = $this->getTileClasses($photo); $store->add($ds); $ui->getWidget('index_view')->model = $store; ob_start(); $ui->getWidget('index_view')->display(); $string = ob_get_clean(); // only pass back the tile element, not the whole view $dom = new DomDocument(); $dom->loadXML('<xml>' . $string . '</xml>'); $divs = $dom->getElementsByTagName('div'); foreach ($divs as $div) { $classes = explode(' ', $div->getAttribute('class')); if (in_array('swat-tile', $classes)) { return $dom->saveXML($div); } } }