产品模块: Difference between revisions

Jump to navigation Jump to search
Line 40: Line 40:
=== 计算字段 ===
=== 计算字段 ===


You can enter here a formula using other properties of object or any PHP coding to get a dynamic computed value. You can use any PHP compatible formulas including the "?" condition operator, and following global object: $db, $conf, $langs, $mysoc, $user, $object.
可输入公式,公式输入对象的其他属性 or 任何 PHP 代码来得到动态值。
WARNING: Only some properties of $object may be available. If you need a properties not loaded, just fetch yourself the object into your formula like in the second example.
Using a computed field means you can't enter yourself any value from interface. Also, if there is a syntax error, the formula may return nothing.


Example of formula:
你可以使用任何PHP兼容的公式,包括“?”条件运算符, 和以下全局对象:
 
'''$db, $conf, $langs, $mysoc, $user, $object'''
 
注意: 可能只有对象的部分属性是可用的。如果你需要一个未加载的属性,可以在公式中查询你自己的对象,如下例所示:
 
使用计算字段意味着,你不能在界面输入值,也意味着,如要存在语法错误,将得不到返回。
 
公式实例:
<source lang="PHP">
$object->id < 10 ? round($object->id / 2, 2) : ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)
$object->id < 10 ? round($object->id / 2, 2) : ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)
 
</source>
Example to reload object
加载对象实例:
<source lang="PHP">
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetch($obj->id ? $obj->id : ($obj->rowid ? $obj->rowid : $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5 : '-1'
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetch($obj->id ? $obj->id : ($obj->rowid ? $obj->rowid : $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5 : '-1'
</source>


Other example of formula to force load of object and its parent object:
其他实例,强制加载对象及其父对象的公式:
<source lang="PHP">
(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : 'Parent project not found'
(($reloadedobj = new Task($db)) && ($reloadedobj->fetch($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetch($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : 'Parent project not found'
</source>


= 解释 =
= 解释 =
513

edits

Navigation menu