Sådan benyttes komponenten Grid klassen
Først skal du inkludere den fil der beskriver komponenten, som en klasse fil
<? require_once(HTML_PACKAGE_PATH.'/Grid.php'); ?>
Dernæst kan du enten benytte komponenten som et taglib (statiske metoder):
<? Grid::display($param1, $param2, $param3, ...); ?>
eller du kan lave en instance af komponenten og benytte metoderne direkte:
<? $object = new Grid($param1, $param2, $param3, ...); print $object->getHtml(); ?>
Sådan vises komponenten Grid klassen
Den fulde PHP kildekode for Grid klassen
<?php/** * @package mvc * @see HTML_MVC_VIEW_PATH.'/Grid.php' * @copyright (c) http://Finn-Rasmussen.com * @license http://Finn-Rasmussen.com/license/ myPHP License conditions * @author http://Finn-Rasmussen.com * @version 1.11 * @since 27-nov-2009 *//** * The required files */require_once(HTML_BASE_COMMON_PATH.'/Html.php');require_once(HTML_TABLE_COMPONENT_PATH.'/TableHeader.php');require_once(HTML_TABLE_COMPONENT_PATH.'/Table.php');if (defined('HTML_DB_LOGIN_VIEW_PATH')) { require_once(HTML_DB_LOGIN_VIEW_PATH.'/ViewLogin.php');}if (defined('HTML_DB_BASKET_VIEW_PATH')) { require_once(HTML_DB_BASKET_VIEW_PATH.'/ViewBasket.php');}if (defined('HTML_DB_CUSTOMER_VIEW_PATH')) { require_once(HTML_DB_CUSTOMER_VIEW_PATH.'/ViewCustomerList.php');}if (defined('HTML_DB_PRODUCT_VIEW_PATH')) { require_once(HTML_DB_PRODUCT_VIEW_PATH.'/ViewProductList.php');}if (defined('HTML_DB_NEWS_VIEW_PATH')) { require_once(HTML_DB_NEWS_VIEW_PATH.'/ViewNewsList.php');}if (defined('HTML_DB_SELECT_VIEW_PATH')) { require_once(HTML_DB_SELECT_VIEW_PATH.'/ViewSelectList.php');}if (defined('HTML_DB_SEARCH_VIEW_PATH')) { require_once(HTML_DB_SEARCH_VIEW_PATH.'/ViewSearchForm.php'); require_once(HTML_DB_SEARCH_VIEW_PATH.'/ViewSearchList.php');}if (defined('HTML_DB_LINK_VIEW_PATH')) { require_once(HTML_DB_LINK_VIEW_PATH.'/ViewLinkShow.php'); require_once(HTML_DB_LINK_VIEW_PATH.'/ViewLinkList.php');}if (defined('HTML_DB_IMAGE_VIEW_PATH')) { require_once(HTML_DB_IMAGE_VIEW_PATH.'/ViewImageShow.php'); require_once(HTML_DB_IMAGE_VIEW_PATH.'/ViewImageList.php');}require_once(HTML_MVC_VIEW_PATH.'/ViewList.php');require_once(HTML_MVC_VIEW_PATH.'/ViewPlain.php');require_once(HTML_MVC_VIEW_PATH.'/ViewDetail.php');require_once(HTML_MVC_VIEW_PATH.'/ViewSimple.php');require_once(HTML_MVC_VIEW_PATH.'/ViewForm.php');require_once(HTML_MVC_VIEW_PATH.'/ViewBusinessCard.php');require_once(HTML_MVC_VIEW_PATH.'/ViewInfo.php');if (defined('HTML_SAX_VIEW_PATH')) { require_once(HTML_SAX_VIEW_PATH.'/ViewXmlReader.php');}require_once(HTML_DTO_UTIL_PATH.'/DataReader.php');if (defined('HTML_LOG_UTIL_PATH')) { require_once(HTML_LOG_UTIL_PATH.'/Log.php');}/** * The Grid object is respponsible for all the different views like a form. a list or a basket view * It Generates the html for a Grid through the layout parameter * <code> * Usage: * $command = new Command(); * $sql = "SELECT * FROM table WHERE ID=1" * $datareader = $command->newDataReader($sql); * Or * $rows = array( array(...), array(..), ... ); // An array of array's * $header = ''; // The header meta data * $default = ''; // The default meta data array * $limit = ''; // The limit to use for the array * $sort = true; * $datareader = DatareaderFactory::newDataReader($rows, $header, $default, $limit, $sort); * * // Create the view * $layout = GRID_LAYOUT_VIEW_DETAIL; * $text = 'The text header to use'; * $grid = new Grid($datareader, $layout, $text); * print $grid->getHtml(); * Or * Grid::display($datareader, $layout, $text); * Or * // Get the view as an object * $grid = new Grid($datareader, $layout, $text); * $view = $grid->newView(); * print $view->getHtml(); * * * Generates a complete grid interface * +-------------------------------- * | Text header * +-------------------------------- * | head1 | head2 | head3 | etc * +-------------------------------- * | dat_1 | dat_2 | dat_3 | etc * +-------------------------------- * </code> * @package mvc */class Grid extends Html { /** * @var $datareader The Data Reader object to use */ protected $datareader = ''; /** * @var String $layout The layout to use */ protected $layout = ''; /** * @var String $text The text header to use */ protected $text = ''; /** * @var String $table The table to use in form create / update views */ protected $table = ''; /** * Constructor * @param DataReader / array $datareader The Data Reader object OR an array * @param String $layout The layout to use * @param String $text The text header to use */ function __construct($datareader, $layout='', $text='') { parent::__construct(); $this->layout = $layout !== '' ? $layout : GRID_LAYOUT_VIEW_PLAIN; $this->datareader = $datareader !== '' ? $datareader : new DataReader(); if ( ! $this->datareader instanceof DataReader ) { $msg = $this->getClassName().'->sanityCheck(), Wrong object, expected: '.CLASS_NAME_DATA_READER.' found: '.$this->datareade; if (defined('HTML_LOG_UTIL_PATH')) { Log::fatal($msg, __FILE__, __LINE__); $html = $this->getMsg(LOG_LEVEL_FATAL, $msg); } else { die('File: '.__FILE__."<br />\r\nLine: ".__LINE__."<br />\r\n".$msg); } } $this->text = $text; } /** * Set the table name * @param String $table The currently table name to use */ public function setTable($table) { $this->table = $table; } /** * Return the data as a new ViewSearcForm object * @return object The requested view object */ function newViewSearchForm() { return new ViewSearchForm($this->datareader, $this->text); } /** * Return the data as a new ViewSearchList object * @return object The requested view object */ function newViewSearchList() { return new ViewSearchList($this->datareader, $this->text); } /** * Return the data as a new ViewList object * @return object The requested view object */ function newViewList() { return new ViewList($this->datareader, $this->text); } /** * Return the data as a new ViewForm object * The name of the table must be set * @return object The requested view object */ function newViewForm() { $view = new ViewForm($this->datareader, $this->text); $view->setTable( $this->table ); return $view; } /** * Return the data as a new ViewLogin object * @return object The requested view object */ function newViewLogin() { if (defined('HTML_DB_LOGIN_VIEW_PATH')) { return new ViewLogin($this->datareader, $this->text); } else { return new Raw("<!-- ".$this->getClassName()."->newViewLogin() is disabled because of HTML_DB_LOGIN_VIEW_PATH -->\r\n"); } } /** * Return the data as a new ViewDetail object * @return object The requested view object */ function newViewDetail() { return new ViewDetail($this->datareader, $this->text); } /** * Return the data as a new ViewSimple object * @return object The requested view object */ function newViewSimple() { return new ViewSimple($this->datareader, $this->text); } /** * Return the data as html a new ViewBasket object * @return object The requested view object */ function newViewBasket() { if (defined('HTML_DB_BASKET_VIEW_PATH')) { return new ViewBasket($this->datareader, $this->text); } else { return new Raw("<!-- ".$this->getClassName()."->newViewBasket() is disabled because of HTML_DB_BASKET_VIEW_PATH -->\r\n"); } } /** * Return the data as a new ViewCustomerList object * @return object The requested view object */ function newViewCustomerList() { if (defined('HTML_DB_CUSTOMER_VIEW_PATH')) { return new ViewCustomerList($this->datareader, $this->text); } else { return new Raw("<!-- ".$this->getClassName()."->newViewCustomerList() is disabled because of HTML_DB_CUSTOMER_VIEW_PATH -->\r\n"); } } /** * Return the data as a new ViewPlain object * @return object The requested view object */ function newViewPlain() { return new ViewPlain($this->datareader, $this->text); } /** * Return the data as a new ViewBusinessCard object * @return object The requested view object */ function newViewBusinessCard() { return new ViewBusinessCard($this->datareader, $this->text); } /** * Return the data as a new ViewInfo object * @return object The requested view object */ function newViewInfo() { return new ViewInfo($this->datareader, $this->text); } /** * Return the data as a new ViewLinkShow object * @return object The requested view object */ function newViewLinkShow() { return new ViewLinkShow($this->datareader, $this->text); } /** * Return the data as a new ViewLinkList object * @return object The requested view object */ function newViewLinkList() { return new ViewLinkList($this->datareader, $this->text); } /** * Return the data as a new ViewImageList object * @return object The requested view object */ function newViewImageList() { return new ViewImageList($this->datareader, $this->text); } /** * Return the data as a new ViewProductList object * @return object The requested view object */ function newViewProductList() { return new ViewProductList($this->datareader, $this->text); } /** * Return the data as a new ViewNewsList object * @return object The requested view object */ function newViewNewsList() { return new ViewNewsList($this->datareader, $this->text); } /** * Return the data as a new ViewSelectList object * @return object The requested view object */ function newViewSelectList() { return new ViewSelectList($this->datareader, $this->text); } /** * Return the data as new ViewXMLReader data object * @return object The requested view object */ function newViewXmlReader() { if (defined('HTML_SAX_VIEW_PATH')) { return new ViewXmlReader($this->datareader, $this->text); } else { return new Raw("<!-- ".$this->getClassName()."->newViewXmlReader() is disabled because of HTML_SAX_VIEW_PATH -->\r\n"); } } /** * Return the view as a new View object * <code> * Usage: * $grid = new Grid($datareader, $layout, $text); * $view = $grid->newView(); * print $view->getHtml(); * </code> * @return object The requested view object */ function newView() { $view = new Raw(); switch ($this->layout) { case GRID_LAYOUT_VIEW_SEARCH_FORM: $view = $this->newViewSearchForm(); break; case GRID_LAYOUT_VIEW_SEARCH_READ: $view = $this->newViewSearchList(); break; case GRID_LAYOUT_VIEW_LIST: $view = $this->newViewList(); break; case GRID_LAYOUT_VIEW_CREATE_FORM: // Intentionally fall through case GRID_LAYOUT_VIEW_FORM: $view = $this->newViewForm(); break; case GRID_LAYOUT_VIEW_LOGIN: $view = $this->newViewLogin(); break; case GRID_LAYOUT_VIEW_DETAIL: $view = $this->newViewDetail(); break; case GRID_LAYOUT_VIEW_SIMPLE: $view = $this->newViewSimple(); break; case GRID_LAYOUT_VIEW_BASKET: $view = $this->newViewBasket(); break; case GRID_LAYOUT_VIEW_CUSTOMER_LIST: $view = $this->newViewCustomerList(); break; case GRID_LAYOUT_VIEW_XML_READER: $view = $this->newViewXmlReader(); break; case GRID_LAYOUT_VIEW_PLAIN: $view = $this->newViewPlain(); break; case GRID_LAYOUT_VIEW_BUSINESS_CARD: $view = $this->newViewBusinessCard(); break; case GRID_LAYOUT_VIEW_INFO: $view = $this->newViewInfo(); break; case GRID_LAYOUT_VIEW_LINK_SHOW: $view = $this->newViewLinkShow(); break; case GRID_LAYOUT_VIEW_LINK_READ: $view = $this->newViewLinkList(); break; case GRID_LAYOUT_VIEW_IMAGE_READ: $view = $this->newViewImageList(); break; case GRID_LAYOUT_VIEW_PRODUCT_LIST: $view = $this->newViewProductList(); break; case GRID_LAYOUT_VIEW_NEWS_LIST: $view = $this->newViewNewsList(); break; case GRID_LAYOUT_VIEW_NETBANK_ACCOUNTLIST: $view = $this->newViewList(); // The Netbank Accountlist demo break; case GRID_LAYOUT_VIEW_SELECT_LIST: $view = $this->newViewSelectList(); // The Select demo break; default: die($this->getClassName().", Unknown GRID_LAYOUT_VIEW_xxx, found=".strtoupper(dechex($this->layout))); break; } return $view; } /** * Return the html * @return String The html */ function getHtml() { $html = $this->html; $view = $this->newView(); $html .= $view->getHtml(); return $html; } /** * Display html * <code> * Usage: * Grid::display($datareader, $layout, $text); * </code> * @static * @param DataReader / array $datareader The Data Reader object OR an array * @param String $layout The layout to use * @param String $text The text header to use */ public static function display($datareader=null, $layout='', $text='') { $html = new Grid($datareader, $layout, $text); $html->addHtml(); }}?>
Den fulde HTML kildekode for Grid klassen
<? <!-- DEBUG: Grid --> <!-- DEBUG: ViewForm --> <table id="ViewFormId" width="323" class="formView baseBorder" border="0" cellpadding="10" cellspacing="0"> <tr> <td valign="top"><!-- DEBUG: Script --> <script type="text/javascript"> //<![CDATA[ function onSubmitViewForm(theForm) { var isValid = true; var messages = ''; var focusMe = ''; if (!isValid) { var msg = "Udfyld felterne:\r\n"; msg += '===================\r\n'; msg += messages; alert(msg); } else { var submitId = document.getElementById('submitButtonViewFormId'); submitId.value = ' ...'; submitId.disabled = true; submitId.className = 'formButton baseBorder baseBody formXXSmall formButtonBee'; } if (!isValid && focusMe !== '') { theForm[focusMe].focus(); } return isValid; } //]]> </script> <!-- DEBUG: Form --> <form action="/source-code/mvc/Grid/index.php" method="post" name="ViewForm" id="Form7" onsubmit="return onSubmitViewForm(this);"> <div class="baseAlignRight" align="right">No help</div> <!-- DEBUG: Hiddens --> <!-- Hiddens ViewForm --> <!-- DEBUG: Hidden --> <input type="hidden" name="baseCOMMAND" value="0fa21f16d900f79acf427a6011324329" title="85d3993b942fa1ea46c94653aac9400f (ViewForm)" /> <!-- private_phone 13 varchar customer --> <!-- DEBUG: Label --> <label for="Label1" accesskey="P" title="Accelerator key, use (Alt + P)"> <b><span class="baseColorDark">P</span>rivat telefon</b> (Alt + P) </label><br /> <!-- DEBUG: Text --> <input type="text" name="private_phone" id="Label1" class="formXLARGE baseBorder baseBody" maxlength="13" value="" title="private_phone
13
varchar
customer

" tabindex="1" /><br /> <!-- contact_person 100 varchar customer --> <!-- DEBUG: Label --> <label for="Label2" accesskey="O" title="Accelerator key, use (Alt + O)"> <b>K<span class="baseColorDark">o</span>ntakt person</b> (Alt + O) </label><br /> <!-- DEBUG: Text --> <input type="text" name="contact_person" id="Label2" class="formXLARGE baseBorder baseBody" maxlength="100" value="" title="contact_person
100
varchar
customer


" tabindex="2" /><br /> <!-- company_name 100 varchar customer --> <!-- DEBUG: Label --> <label for="Label3" accesskey="I" title="Accelerator key, use (Alt + I)"> <b>F<span class="baseColorDark">i</span>rmanavn</b> (Alt + I) </label><br /> <!-- DEBUG: Text --> <input type="text" name="company_name" id="Label3" class="formXLARGE baseBorder baseBody" maxlength="100" value="" title="company_name
100
varchar
customer

" tabindex="3" /><br /> <!-- address 255 varchar customer --> <!-- DEBUG: Label --> <label for="Label4" accesskey="A" title="Accelerator key, use (Alt + A)"> <b><span class="baseColorDark">A</span>dresse</b> (Alt + A) </label><br /> <!-- DEBUG: Textarea --> <textarea name="address" id="Label4" rows="5" cols="35" class="formXLARGE baseBorder baseBody" title="address 255 varchar customer " tabindex="4"></textarea><br /> <!-- zip 4 int customer 0 --> <!-- COLUMN_FIELD_FLAG_AUTO_INCREMENT detected, so skip hidden field if INSERT --> <!-- DEBUG: Hidden --> <input type="hidden" name="utilID" value="" title="zip
4
int
customer

0
" /> <!-- city 32 varchar customer --> <!-- DEBUG: Label --> <label for="Label5" accesskey="B" title="Accelerator key, use (Alt + B)"> <b><span class="baseColorDark">B</span>y</b> (Alt + B) </label><br /> <!-- DEBUG: Text --> <input type="text" name="city" id="Label5" class="formXLARGE baseBorder baseBody" maxlength="32" value="" title="city
32
varchar
customer


" tabindex="5" /><br /> <!-- country --> <!-- DEBUG: Label --> <label for="Label6" accesskey="L" title="Accelerator key, use (Alt + L)"> <b><span class="baseColorDark">L</span>and</b> (Alt + L) </label><br /> <!-- DEBUG: Text --> <input type="text" name="country" id="Label6" class="formXLARGE baseBorder baseBody" value="" title="country



" tabindex="6" /><br /> <!-- DEBUG: Buttons --> <p><div class="baseAlignCenter"><!-- DEBUG: CancelButton --> <input type="button" class="formButton baseBorder baseBody formXXSmall" onclick="history.back();" value="Fortryd" title="Fortryd" tabindex="7" /> <!-- DEBUG: ResetButton --> <input type="reset" class="formButton baseBorder baseBody formXXSmall" value="Nulstil" title="Nulstil (Alt + Z)" tabindex="8" accesskey="Z" /> <!-- BUTTON_SUBMIT_TEXT --> <!-- DEBUG: SubmitButton --> <input type="submit" id="submitButtonViewFormId" class="formButton baseBorder baseBody formXXSmall" value="Go" title="Go (Alt + G)" tabindex="9" accesskey="G" /> </div> </p> </form> <!-- DEBUG: Focus --> <script type="text/javascript"> //<![CDATA[ function setFocus_ViewFormprivate_phone() { if (typeof document.ViewForm == 'object') { if (typeof document.ViewForm.private_phone == 'object') { document.ViewForm.private_phone.focus(); document.ViewForm.private_phone.select(); } } } if (typeof focusIsDefined == 'undefined') { function onload1Body() { var onloadCurrent = window.onload; if (typeof onloadCurrent !== 'function') { window.onload = setFocus_ViewFormprivate_phone; } else { window.onload = function() { onloadCurrent(); setFocus_ViewFormprivate_phone(); } } } onload1Body(); focusIsDefined = true; } //]]> </script> </td> </tr> </table> ?>
Her er 'klasse metoderne' for Grid klassen:
Her er 'objekt variable' for Grid klassen: