Difference between revisions of "Ferreteria/v2/usage/forms/displaying"
(note about LoadRecord()) |
(template example) |
||
Line 1: | Line 1: | ||
==displaying a form== | ==displaying a form== | ||
− | See {{vbzcart/code|dropins/orders/order.php#L1178 | + | See {{vbzcart/code|dropins/orders/order.php#L1178|order.php AdminPage_basic()}} for a working example of a full-page form, and {{vbzcart/code|dropins/orders/order.php#L1313|order.php PageTemplate()}} for building a template. |
+ | ===template example=== | ||
+ | <php> | ||
+ | private $tpPage; | ||
+ | protected function PageTemplate() { | ||
+ | if (empty($this->tpPage)) { | ||
+ | $sTplt = <<<__END__ | ||
+ | <table> | ||
+ | <tr><td align=right><b>ID</b>:</td><td>[[ID]]</td></tr> | ||
+ | <tr><td align=right><b>Status</b>:</td><td>[[Status]]</td></tr> | ||
+ | <tr><td align=right><b>Cart</b>:</td><td>[[Cart]]</td></tr> | ||
+ | </php>...<php> | ||
+ | <tr><td align=right><b>Ship $ quoted</b>:</td><td>[[QuoShip]]</td></tr> | ||
+ | <tr><td align=right><b>Final $ quoted</b>:</td><tr>[[QuoFinal]]</td></tr> | ||
+ | <tr><td align=center colspan=2> | ||
+ | <table> | ||
+ | [[AmtMerch]] | ||
+ | [[BalBtnsLine]] | ||
+ | [[RecalcLine]] | ||
+ | </table> | ||
+ | </td></tr> | ||
+ | </table> | ||
+ | __END__; | ||
+ | $this->tpPage = new fcTemplate_array('[[',']]',$sTplt); | ||
+ | } | ||
+ | return $this->tpPage; | ||
+ | </php> | ||
+ | ===without templates=== | ||
It can also be done without templates by retrieving the control and asking it to render itself:<php> | It can also be done without templates by retrieving the control and asking it to render itself:<php> | ||
$oForm = $this->EditForm(); // retrieve the form object (build it if needed) | $oForm = $this->EditForm(); // retrieve the form object (build it if needed) |
Revision as of 16:46, 8 November 2015
displaying a form
See
- REDIRECT Template:l/vc/code for a working example of a full-page form, and order.php PageTemplate() for building a template.
template example
<php>
private $tpPage; protected function PageTemplate() {
if (empty($this->tpPage)) { $sTplt = <<<__END__
</php>...<php>
QuoFinalID: | ID |
Status: | Status |
Cart: | Cart |
Ship $ quoted: | QuoShip |
Final $ quoted: | |
AmtMerchBalBtnsLineRecalcLine |
__END__; $this->tpPage = new fcTemplate_array('','',$sTplt); } return $this->tpPage; </php>
without templates
It can also be done without templates by retrieving the control and asking it to render itself:<php> $oForm = $this->EditForm(); // retrieve the form object (build it if needed) $oForm->LoadRecord(); // copy values from {memory image of record} to {form fields} $ftTag = $oForm->ControlObject('Name')->Render($doEdit); $ftCust = $oForm->ControlObject('ID_Cust')->Render($doEdit); $ftAddr = $oForm->ControlObject('ID_Addr')->Render($doEdit); $ftName = $oForm->ControlObject('ID_Name')->Render($doEdit); </php> ...(and so on), then manually plugging the rendered controls into the desired output format:<php> $out .= <<<__END__
...
ID: | $id |
Tag: | $ftTag |
Status: | $ftStatus |
Customer: | $ftCust |
Address: | $ftAddr |
Name: | $ftName |
__END__; </php> ...but note that calling LoadRecord() causes the Field objects to return TRUE from IsChanged() if the loaded value is non-NULL. This overrides POST data in $oForm->Save(), so presumably you'll need to build the update query manually or else clear the form fields somehow (currently not supported, but maybe it should be).