Extrafields: Difference between revisions
Jump to navigation
Jump to search
| Line 60: | Line 60: | ||
{ | { | ||
print ''$object''->showOptionals($extrafields); | print ''$object''->showOptionals($extrafields); | ||
} | |||
</source> | |||
==After fetch method of this object :== | |||
<source lang="php"> | |||
require_once(DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'); | |||
$extrafields=new ExtraFields($this->db); | |||
$extralabels=$extrafields->fetch_name_optionals_label('company',true); | |||
if (count($extralabels)>0) { | |||
$this->array_options = array(); | |||
} | |||
foreach($extrafields->attribute_label as $key=>$label) | |||
{ | |||
$this->array_options['options_'.$key]=$label; | |||
} | } | ||
</source> | </source> | ||
Revision as of 03:37, 20 April 2013
Extrafields
Extrafields allow to add others datas to Dolibarr standard database schema. Introduced in version 3.2, extrafields are now implemented in businesses object :
- Thirdparties & contacts & users
- Events
- Customer Invoices
- Proposal
- Products & services
- Member & member type
- Orders
- Projects & project tasks (since 3.4)
Technical implementation
Each object have his table in database to store values of extrafields.
Datatables extrafield tables models is :
llx_BaseTableNAme_extrafields rowid integer AUTO_INCREMENT PRIMARY KEY, tms timestamp, fk_object integer NOT NULL, import_key varchar(14)
Display page have to include :
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
Load extrafield array in object :
$extrafields = new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label('''ObjectClassName''');
Load extrafield into object :
''$object''->fetch($rowid);
''$object''->fetch_optionals($rowid,$extralabels);
Before call $object->create or $object->update :
$ret = $extrafields->setOptionalsFromPost($extralabels,''$object'');
Inside edit page to display extrafields :
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$act,$action); // Note that $action and $object may have been modified by hook
if (empty($reshook) && ! empty($extrafields->attribute_label))
{
print ''$object''->showOptionals($extrafields,'edit');
}
Inside view page to display extrafields :
$reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$act,$action); // Note that $action and $object may have been modified by hook
if (empty($reshook) && ! empty($extrafields->attribute_label))
{
print ''$object''->showOptionals($extrafields);
}
After fetch method of this object :
require_once(DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php');
$extrafields=new ExtraFields($this->db);
$extralabels=$extrafields->fetch_name_optionals_label('company',true);
if (count($extralabels)>0) {
$this->array_options = array();
}
foreach($extrafields->attribute_label as $key=>$label)
{
$this->array_options['options_'.$key]=$label;
}