public function renderContents($writer) { if ($this->getHasControls()) { $renderTableSection = false; foreach ($this->getControls() as $row) { if ($row->getTableSection() !== TTableRowSection::Body) { $renderTableSection = true; break; } } if ($renderTableSection) { $currentSection = TTableRowSection::Header; $writer->writeLine(); foreach ($this->getControls() as $index => $row) { if (($section = $row->getTableSection()) === $currentSection) { if ($index === 0 && $currentSection === TTableRowSection::Header) { $writer->renderBeginTag('thead'); } } else { if ($currentSection === TTableRowSection::Header) { if ($index > 0) { $writer->renderEndTag(); } if ($section === TTableRowSection::Body) { $writer->renderBeginTag('tbody'); } else { $writer->renderBeginTag('tfoot'); } $currentSection = $section; } else { if ($currentSection === TTableRowSection::Body) { $writer->renderEndTag(); if ($section === TTableRowSection::Footer) { $writer->renderBeginTag('tfoot'); } else { throw new TConfigurationException('table_tablesection_outoforder'); } $currentSection = $section; } else { // Footer throw new TConfigurationException('table_tablesection_outoforder'); } } } $row->renderControl($writer); $writer->writeLine(); } $writer->renderEndTag(); } else { $writer->writeLine(); foreach ($this->getControls() as $row) { $row->renderControl($writer); $writer->writeLine(); } } } }