Difference between revisions of "Ferreteria/v2/usage/forms/displaying"

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
< Ferreteria‎ | v2‎ | usage‎ | forms
Jump to navigation Jump to search
(note about LoadRecord())
m (markup updates)
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
==displaying a form==
 
==displaying a form==
See {{vbzcart/code|dropins/orders/order.php#L1178}} (inside function AdminPage_basic()) for a working example of a full-page form.
+
See {{l/vc/code|dropins/orders/order.php#L1178|order.php AdminPage_basic()}} for a working example of a full-page form, and {{l/vc/code|dropins/orders/order.php#L1313|order.php PageTemplate()}} for building a template.
  
It can also be done without templates by retrieving the control and asking it to render itself:<php>
+
===template example===
 +
<source lang=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;
 +
</source>
 +
===without templates===
 +
It can also be done without templates by retrieving the control and asking it to render itself:<source lang=php>
 
    $oForm = $this->EditForm();  // retrieve the form object (build it if needed)
 
    $oForm = $this->EditForm();  // retrieve the form object (build it if needed)
 
    $oForm->LoadRecord();        // copy values from {memory image of record} to {form fields}
 
    $oForm->LoadRecord();        // copy values from {memory image of record} to {form fields}
Line 9: Line 36:
 
    $ftAddr = $oForm->ControlObject('ID_Addr')->Render($doEdit);
 
    $ftAddr = $oForm->ControlObject('ID_Addr')->Render($doEdit);
 
    $ftName = $oForm->ControlObject('ID_Name')->Render($doEdit);
 
    $ftName = $oForm->ControlObject('ID_Name')->Render($doEdit);
</php>
+
</source>
...(and so on), then manually plugging the rendered controls into the desired output format:<php>
+
...(and so on), then manually plugging the rendered controls into the desired output format:<source lang=php>
 
$out .= <<<__END__
 
$out .= <<<__END__
 
<table>
 
<table>
Line 22: Line 49:
 
</table>
 
</table>
 
__END__;
 
__END__;
</php>
+
</source>
 
...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).
 
...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).

Latest revision as of 13:19, 15 January 2020

displaying a form

See order.php AdminPage_basic() for a working example of a full-page form, and order.php PageTemplate() for building a template.

template example

    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;

without templates

It can also be done without templates by retrieving the control and asking it to render itself:

	    $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);

...(and so on), then manually plugging the rendered controls into the desired output format:

	$out .= <<<__END__
<table>
  <tr><td align=right><b>ID</b>:</td><td>$id</td></tr>
  <tr><td align=right><b>Tag</b>:</td><td>$ftTag</td></tr>
  <tr><td align=right><b>Status</b>:</td><td>$ftStatus</td></tr>
  <tr><td align=right><b>Customer</b>:</td><td>$ftCust</td></tr>
  <tr><td align=right><b>Address</b>:</td><td>$ftAddr</td></tr>
  <tr><td align=right><b>Name</b>:</td><td>$ftName</td></tr>
...
</table>
__END__;

...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).